scaleFactor

Syntax

int scaleFactor

Description

scaleFactor is an integer that defines the scale ratio (zoom factor) of the image in the preview proxy window. You can use this value to ensure your image looks correct at all zoom levels, or to help you calculate the original image co-ordinates when a user clicks on a pixel in the preview window. scaleFactor will be set to 1 at 100% zoom, 3 for 33% zoom, 5 for 20% and so on. Think of it as the denominator in the scale ratio - a 50% zoom image is 1/2 size, so the scaleFactor is 2. A 20% zoom image is 1/5 the original size, so the scaleFactor is 5 (and so on).

Example

%ffp

ctl(0):statictext,"Please right click on the preview to set a cross.",size=(100,20)


OnCtl(n):
{

	if (n == CTL_PREVIEW && e == FME_RIGHTCLICKED_DOWN) {
		j0=getPreviewCoordX()*scaleFactor;
		j1=getPreviewCoordY()*scaleFactor;
		doAction(CA_PREVIEW );
	}
	return false;
}

ForEveryTile:{
	int g,h,z, color;
	int PreviewX = j0/scaleFactor;
	int PreviewY = j1/scaleFactor;

	//Calculate color of the cross
	color = ( src(PreviewX,PreviewY,0) + src(PreviewX,PreviewY,1)+src(PreviewX,PreviewY,2) )/3;
	if (color>128 && color<196) color=0; 
	if (color>64 && color<128) color=255;
	else color =255-color;

	//Display Cross
	if (doingProxy){
		for (z=0;z<Z;z++){
			for (g=-7;g<8;g++)
				if (g<-1 || g>1) pset(PreviewX + g, PreviewY, z, color);
			for (h=-7;h<8;h++)
				if (h<-1 || h>1) pset(PreviewX, PreviewY + h, z, color );	
		}
	}

	return true;
}

Also see

Constants setZoom getPreviewCoordX getPreviewCoordY

Comments

Everyone can add comments about their experiences with this constant here. Tips for using it are welcome, too.