home products news downloads documentation support gallery online maps resellers search
TNTmips Downloads Menu

HOME

CONTACT US

CURRENT RELEASE
  TNT 2013

DEVELOPMENT VERSION
  TNT 2014

TNTmips Pro
PRIOR RELEASES
  TNT 2012

FREE SOFTWARE
  TNTmips Free
  TNTatlas
  TNTsdk

MORE DOWNLOADS
  HASP Key Driver
  Screen Recorder
  TNT Language Kits
  Sample Geodata
  TNT Scripts

DOCUMENTATION
  TNTmips Tutorials
  Tutorial Datasets
  Technical Guides
  Scripts
  Quick Guides

MORE INFO
  Download FAQs
  FTP
  Download Managers
  Find Reseller

SITE MAP


urbanization_pie.sml

See other examples and scripts with DataTips and GraphTips ...


### Afghan Urbanization Pie Chart ###

class GRDEVICE_MEM_RGB24 imagedev;		## color rendering device in memory for drawing GraphTip
class GRDEVICE_MEM_BINARY maskdev;		## transparency mask in memory for GraphTip
class GC gc;									## graphics context for GraphTip

class GRE_LAYER_VECTOR cntyLayer;
class GRE_GROUP group;
class VECTOR CntyVec;
class GEOREF vecGeoref;
class TRANSPARM trans;
class POINT2D ptLayer;
class POINT2D offset;
class COLOR color;

numeric polyNum;						## element number of polygon under cursor
numeric total;							## variable for total number of households in county
numeric urban, rural	;		## variables for different household type values
string percent$;				## string for percemtage labels
numeric start;				## starting x-ccordinate for label, computed from rendered length

## procedure called when group or layout is initialized
proc OnInitialize () {
	imagedev.Create(100, 85);	## create GraphTip drawing area and mask with specified dimensions
	maskdev.Create(100, 85);
	gc = maskdev.CreateGC();	## create graphics context for mask
	gc.SetColorPixel(1);
	gc.FillArcWedge(42, 30, 25, 25, 0, 360);		## set mask values for pie circle and label rectangle
	gc.FillRect(1, 60, 85, 40);						## areas to 1; other graph tip areas transparent 
	offset.x = 10;					## set offset of graphtip from cursor position (right and down)
	offset.y = 10;
	}

### procedure called when View is created for group; use to get layer information
proc OnLayoutDrawEnd (
   class GRE_LAYOUT layout,
   class GRE_VIEW view
   ) {
	group = layout.GetGroupByName("Urbanization");
	cntyLayer = group.ActiveLayer;
	DispGetVectorFromLayer(CntyVec, cntyLayer);
	vecGeoref = GetLastUsedGeorefObject(CntyVec);

#	PopupMessage("Script Activated")
   }

### function called when datatip event is triggered
func OnViewDataTipShowRequest (
   class GRE_VIEW view,				## predefined class variables
   class POINT2D point,
   class TOOLTIP datatip
   ) {
   numeric retval = 1;				## in GraphTip use only what is created by script

	trans = view.GetTransLayerToScreen(cntyLayer, 1);		## get transform from screen to layer
	ptLayer = trans.ConvertPoint2DFwd(point);					## cursor position in layer coordinates

	polyNum = FindClosestPoly(CntyVec, ptLayer.x, ptLayer.y, vecGeoref, 0);

	total = CntyVec.poly[polyNum].ProvStats.TOTAL;			## get values for households for polygon
	rural = 360 * CntyVec.poly[polyNum].ProvStats.RURAL / total;
	urban = 360 * CntyVec.poly[polyNum].ProvStats.URBAN / total;
	string name$ = CntyVec.poly[polyNum].ProvStats.PROVINCE$;
	numeric pop = CntyVec.poly[polyNum].Population_PRV.Population;

	gc = imagedev.CreateGC();			## create graphics context for graph tip
	gc.SetColorName("white");			## fill white rectangle with black border for label background
	gc.SetLineWidth(1, "pixels");
	gc.FillRect(1,60,83,50);# 1 60 84 50
	gc.SetColorName("black");
	gc.DrawRect(1,60,83,39);# 1 60 82 39

	gc.DrawTextSetFont("ARIAL.TTF");
	gc.DrawTextSetHeightPixels(13);
	gc.TextStyle.RoundWidth = 1;

	color.Name = "black";				## draw title for label area
	gc.SetColor(color);
	gc.DrawTextSetColors(color);
	numeric textsize = gc.TextGetWidth(name$); ## demir
	gc.DrawTextSimple(name$, (85-textsize)/2, 72);
	gc.DrawTextSetHeightPixels(11);

	## draw pie slice for urbans
	color.Name = "red";
	gc.SetColor(color);
	gc.FillArcWedge(42, 30, 25, 25, 0, urban);
	gc.DrawTextSetColors(color);					## draw label and percentage in same color 
	gc.DrawTextSimple("Urban:", 5, 83);
	percent$ = sprintf("%.1f\%", urban / 3.6);
	start = 80 - gc.TextGetWidth(percent$); 	## compute start position for percent to right-align
	gc.DrawTextSimple(percent$, start, 83);

	## draw pie slice for rurals
	color.red =0;		color.green = 0;		color.blue = 255;
	gc.SetColor(color);
	gc.FillArcWedge(42, 30, 25, 25, urban, rural);
	gc.DrawTextSetColors(color);					## draw label and percentage in same color 
	gc.DrawTextSimple("Pop:", 6, 95);
	string pop$ = sprintf("%d", pop);
	start = 80 - gc.TextGetWidth(pop$); 
	gc.DrawTextSimple(pop$, start, 95);

		if (name$ <> ""){ # the data is available or not?
		### set the rendered image and mask as source for the GraphTip
		datatip.SetImageTip(imagedev, maskdev);
	   return retval;
		}
   }






Back Home ©MicroImages, Inc. 2013 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010   USA
Business & Sales: (402)477-9554  Support: (402)477-9562  Fax: (402)477-9559
Business info@microimages.com  Support support@microimages.com  Web webmaster@microimages.com

25 March 2009

page update: 26 May 11