[cig-commits] commit: More problems when log scaling is enabled on
Mercurial
hg at geodynamics.org
Mon Nov 24 11:29:31 PST 2008
changeset: 71:e5000cde5896
user: LukeHodkinson
date: Mon Aug 18 13:55:00 2008 +0000
files: DrawingObjects/src/ColourBar.c
description:
More problems when log scaling is enabled on
color maps.
diff -r a9e7e97c1570 -r e5000cde5896 DrawingObjects/src/ColourBar.c
--- a/DrawingObjects/src/ColourBar.c Mon Aug 18 13:54:31 2008 +0000
+++ b/DrawingObjects/src/ColourBar.c Mon Aug 18 13:55:00 2008 +0000
@@ -39,7 +39,7 @@
*+ Patrick Sunter
*+ Greg Watson
*+
-** $Id: ColourBar.c 768 2008-04-21 03:20:07Z JohnMansour $
+** $Id: ColourBar.c 785 2008-08-18 13:55:00Z LukeHodkinson $
**
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -200,6 +200,7 @@ void _lucColourBar_Construct( void* draw
(float) Stg_ComponentFactory_GetDouble( cf, self->name, "borderWidth", 1 ) ,
Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "precision", 2 ) ,
Stg_ComponentFactory_GetBool(cf, self->name, "scientific", False ),
+
Stg_ComponentFactory_GetUnsignedInt(cf, self->name, "ticks", 0 ) ,
Stg_ComponentFactory_GetBool(cf, self->name, "printTickValue", False ),
(float) Stg_ComponentFactory_GetDouble(cf, self->name, "scaleValue", 1.0 )
@@ -223,23 +224,23 @@ value = scaleValue * value;
if(scientific){
if( precision == 1 ){
- sprintf(string, "%.1E", value);
+ sprintf(string, "%.1e", value);
return;
}
if( precision == 2 ){
- sprintf(string, "%.2E", value);
+ sprintf(string, "%.2e", value);
return;
}
if( precision == 3 ){
- sprintf(string, "%.3E", value);
+ sprintf(string, "%.3e", value);
return;
}
if( precision == 4 ){
- sprintf(string, "%.4E", value);
+ sprintf(string, "%.4e", value);
return;
}
if( precision == 5 ){
- sprintf(string, "%.5E", value);
+ sprintf(string, "%.5e", value);
return;
}
}
@@ -307,7 +308,13 @@ void _lucColourBar_Draw( void* drawingOb
/* Draw Colour Bar */
for ( pixel_I = 0 ; pixel_I < length ; pixel_I++ ) {
- value = colourMap->minimum + (double) pixel_I * (colourMap->maximum - colourMap->minimum) / (double) length;
+ if( colourMap->logScale ) {
+ value = log10(colourMap->minimum) +
+ (double)pixel_I * (log10(colourMap->maximum) - log10(colourMap->minimum)) / (double)length;
+ value = pow( 10.0, value );
+ }
+ else
+ value = colourMap->minimum + (double) pixel_I * (colourMap->maximum - colourMap->minimum) / (double) length;
lucColourMap_SetOpenGLColourFromValue( colourMap, value );
@@ -325,7 +332,7 @@ void _lucColourBar_Draw( void* drawingOb
glEnd();
/* Write scale */
- if ( fabs(colourMap->minimum) < 1.0e-5 )
+ if ( !self->scientific && fabs(colourMap->minimum) < 1.0e-5 )
sprintf( string, "0" );
else{
_lucColourBar_WithPrecision(string, self->scientific, self->precision, self->scaleValue, colourMap->minimum);
@@ -340,7 +347,7 @@ void _lucColourBar_Draw( void* drawingOb
glRasterPos2iv( rasterPos );
lucPrintString( string );
- if ( fabs(colourMap->maximum) < 1.0e-5 )
+ if ( !self->scientific && fabs(colourMap->maximum) < 1.0e-5 )
sprintf( string, "0" );
else{
_lucColourBar_WithPrecision( string, self->scientific, self->precision, self->scaleValue, colourMap->maximum);
@@ -367,7 +374,13 @@ void _lucColourBar_Draw( void* drawingOb
/* Computse the tick value */
- tickValue = colourMap->minimum + ( i*(colourMap->maximum - colourMap->minimum)/self->ticks );
+ if( colourMap->logScale ) {
+ tickValue = log10(colourMap->minimum) +
+ ((double)i * (log10(colourMap->maximum) - log10(colourMap->minimum)) / (double)self->ticks);
+ tickValue = pow( 10.0, tickValue );
+ }
+ else
+ tickValue = colourMap->minimum + ( i*(colourMap->maximum - colourMap->minimum)/self->ticks );
if(self->printTickValue) {
_lucColourBar_WithPrecision( string, self->scientific, self->precision, self->scaleValue, tickValue);
More information about the CIG-COMMITS
mailing list