Commit a2fad6ef authored by Kai Messerschmidt's avatar Kai Messerschmidt
Browse files

Merge remote-tracking branch 'origin/main'

parents 2232862f fc063793
......@@ -43,6 +43,13 @@
#include "WGEImage.h"
#include "WGETextureUtils.h"
#include "callbacks/WGEFunctorCallback.h"
#include "icons/colormap_atlas.xpm"
#include "icons/colormap_bluegreenpurple.xpm"
#include "icons/colormap_grayscale.xpm"
#include "icons/colormap_hotiron.xpm"
#include "icons/colormap_neg2pos.xpm"
#include "icons/colormap_rainbow.xpm"
#include "icons/colormap_viridis.xpm"
/**
* This calls serves a simple purpose: have a texture and its scaling information together which allows very easy binding of textures to nodes
......@@ -553,13 +560,29 @@ void WGETexture< TextureType >::setupProperties( double scale, double min )
m_interpolation = m_properties->addProperty( "Interpolate", "Interpolation of the volume data.", true, m_propCondition );
m_colorMapSelectionsList = std::shared_ptr< WItemSelection >( new WItemSelection() );
m_colorMapSelectionsList->addItem( "Grayscale", "" );
m_colorMapSelectionsList->addItem( "Rainbow", "" );
m_colorMapSelectionsList->addItem( "Hot iron", "" );
m_colorMapSelectionsList->addItem( "Negative to positive", "" );
m_colorMapSelectionsList->addItem( "Atlas", "" );
m_colorMapSelectionsList->addItem( "Blue-Green-Purple", "" );
m_colorMapSelectionsList->addItem( "Vector", "" );
m_colorMapSelectionsList->addItem( "Grayscale",
"Gray values between black (low) and white (high)." ,
colormap_grayscale_xpm );
m_colorMapSelectionsList->addItem( "Rainbow",
"Fading through the rainbow colors.",
colormap_rainbow_xpm );
m_colorMapSelectionsList->addItem( "Hot iron",
"Fades between red and yellowish colors.",
colormap_hotiron_xpm );
m_colorMapSelectionsList->addItem( "Negative to positive",
"[Experimental] Maps red and blue to the positive and negative part of the interval linearly.",
colormap_neg2pos_xpm );
m_colorMapSelectionsList->addItem( "Atlas",
"Tries to find distinct colors for neighbouring values",
colormap_atlas_xpm );
m_colorMapSelectionsList->addItem( "Blue-Green-Purple",
"Fading between blue, green and purple.",
colormap_bluegreenpurple_xpm );
m_colorMapSelectionsList->addItem( "Vector",
"Maps vector coordinates (x,y,z) to color channels (r,g,b)." );
m_colorMapSelectionsList->addItem( "Viridis",
"Optimized for perception. From purple via green to yellow. Default colormap in matplolib as of 2022.",
colormap_viridis_xpm );
m_colorMap = m_properties->addProperty( "Colormap", "The colormap of this texture.", m_colorMapSelectionsList->getSelectorFirst() );
WPropertyHelper::PC_SELECTONLYONE::addTo( m_colorMap );
......
......@@ -106,6 +106,27 @@ WGEGridNode::WGEGridNode( WGridRegular3D::ConstSPtr grid ):
m_labelGeode->addDrawable( label );
m_borderLabels[7] = label;
// x-axis
label = new WGELabel( *label );
label->setPosition( osg::Vec3( 0.5, 0.0, 0.0 ) );
m_labelGeode->addDrawable( label );
m_axisLabels[0] = label;
// y-axis
label = new WGELabel( *label );
label->setPosition( osg::Vec3( 0.0, 0.5, 0.0 ) );
m_labelGeode->addDrawable( label );
m_axisLabels[1] = label;
// z-axis
label = new WGELabel( *label );
label->setPosition( osg::Vec3( 0.0, 0.0, 0.5 ) );
m_labelGeode->addDrawable( label );
m_axisLabels[2] = label;
// add the others too
addChild( m_boundaryGeode );
addChild( m_innerGridGeode );
......@@ -249,6 +270,10 @@ void WGEGridNode::callback( osg::Node* /*node*/ )
m_borderLabels[i]->setText( vec2str( m_borderLabels[i]->getPosition() * m ) );
}
m_axisLabels[0]->setText( "x" );
m_axisLabels[1]->setText( "y" );
m_axisLabels[2]->setText( "z" );
// set node mask of labels, bbox and grid
m_labelGeode->setNodeMask( 0xFFFFFFFF * m_showLabels );
m_boundaryGeode->setNodeMask( 0xFFFFFFFF * m_showBBox );
......
......@@ -192,10 +192,15 @@ private:
osg::ref_ptr< osg::Geode > m_innerGridGeode;
/**
* The labels at the corner.
* The labels at the corners.
*/
WGELabel::SPtr m_borderLabels[8];
/**
* The labels at the axes.
*/
WGELabel::SPtr m_axisLabels[3];
/**
* The geode keeping the labels
*/
......
/* XPM */
static const char * colormap_atlas_xpm[] = {
"64 32 15 1",
" c #000000",
". c #0000FF",
"+ c #00FF00",
"@ c #00FFFF",
"# c #FF0000",
"$ c #FF00FF",
"% c #FFFF00",
"& c #FFFFFF",
"* c #D9D900",
"= c #0000D9",
"- c #00D900",
"; c #00D9D9",
"> c #D90000",
", c #D900D9",
"' c #D9D9D9",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*",
" ...+++@@@###$$$%%%&&&***===---;;;>>>,,,***''';;;==---;;;>>>,,,*"};
/* XPM */
static const char * colormap_bluegreenpurple_xpm[] = {
"64 32 64 1",
" c #000BFF",
". c #001FFF",
"+ c #0032FF",
"@ c #0046FF",
"# c #005AFF",
"$ c #006EFF",
"% c #0082FF",
"& c #0095FF",
"* c #00A9FF",
"= c #00BDFF",
"- c #00D1FF",
"; c #00E5FF",
"> c #00F8FF",
", c #00FFF1",
"' c #00FFDD",
") c #00FFCA",
"! c #00FFB6",
"~ c #00FFA2",
"{ c #00FF8E",
"] c #00FF7A",
"^ c #00FF66",
"/ c #00FF52",
"( c #00FF3F",
"_ c #00FF2B",
": c #00FF17",
"< c #01FF04",
"[ c #12FF00",
"} c #25FF00",
"| c #39FF00",
"1 c #4DFF00",
"2 c #61FF00",
"3 c #75FF00",
"4 c #89FF00",
"5 c #9DFF00",
"6 c #B1FF00",
"7 c #C4FF00",
"8 c #D8FF00",
"9 c #ECFF00",
"0 c #FDFC00",
"a c #FFEA00",
"b c #FFD600",
"c c #FFC200",
"d c #FFAF00",
"e c #FF9B00",
"f c #FF8700",
"g c #FF7300",
"h c #FF5F00",
"i c #FF4B00",
"j c #FF3700",
"k c #FF2400",
"l c #FF1000",
"m c #FF0105",
"n c #FF0019",
"o c #FF002D",
"p c #FF0041",
"q c #FF0054",
"r c #FF0068",
"s c #FF007C",
"t c #FF0090",
"u c #FF00A4",
"v c #FF00B8",
"w c #FF00CC",
"x c #FF00DF",
"y c #FF00F3",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy"};
/* XPM */
static const char * colormap_grayscale_xpm[] = {
"64 32 64 1",
" c #020202",
". c #060606",
"+ c #0A0A0A",
"@ c #0E0E0E",
"# c #121212",
"$ c #161616",
"% c #1A1A1A",
"& c #1E1E1E",
"* c #222222",
"= c #262626",
"- c #2A2A2A",
"; c #2E2E2E",
"> c #323232",
", c #363636",
"' c #3A3A3A",
") c #3E3E3E",
"! c #424242",
"~ c #464646",
"{ c #4A4A4A",
"] c #4D4D4D",
"^ c #515151",
"/ c #555555",
"( c #5A5A5A",
"_ c #5E5E5E",
": c #626262",
"< c #666666",
"[ c #696969",
"} c #6D6D6D",
"| c #717171",
"1 c #757575",
"2 c #797979",
"3 c #7D7D7D",
"4 c #818181",
"5 c #858585",
"6 c #898989",
"7 c #8D8D8D",
"8 c #919191",
"9 c #959595",
"0 c #999999",
"a c #9D9D9D",
"b c #A1A1A1",
"c c #A5A5A5",
"d c #A9A9A9",
"e c #ADADAD",
"f c #B1B1B1",
"g c #B5B5B5",
"h c #B9B9B9",
"i c #BDBDBD",
"j c #C1C1C1",
"k c #C5C5C5",
"l c #C9C9C9",
"m c #CDCDCD",
"n c #D1D1D1",
"o c #D5D5D5",
"p c #D9D9D9",
"q c #DDDDDD",
"r c #E1E1E1",
"s c #E5E5E5",
"t c #E9E9E9",
"u c #EDEDED",
"v c #F1F1F1",
"w c #F5F5F5",
"x c #F9F9F9",
"y c #FDFDFD",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy"};
/* XPM */
static const char * colormap_hotiron_xpm[] = {
"64 32 64 1",
" c #840026",
". c #8C0026",
"+ c #930026",
"@ c #9B0026",
"# c #A20026",
"$ c #AA0026",
"% c #B10026",
"& c #B90026",
"* c #BF0225",
"= c #C40524",
"- c #C90823",
"; c #CE0B22",
"> c #D20F20",
", c #D7121F",
"' c #DC151E",
") c #E0181D",
"! c #E41D1D",
"~ c #E8241F",
"{ c #EB2A20",
"] c #EE3122",
"^ c #F13724",
"/ c #F43D26",
"( c #F74427",
"_ c #FA4B29",
": c #FC522B",
"< c #FC5A2D",
"[ c #FC6130",
"} c #FC6932",
"| c #FD7134",
"1 c #FD7936",
"2 c #FD8139",
"3 c #FD893B",
"4 c #FD8F3D",
"5 c #FD943F",
"6 c #FD9841",
"7 c #FD9D43",
"8 c #FEA245",
"9 c #FEA647",
"0 c #FEAB49",
"a c #FEAF4B",
"b c #FEB44E",
"c c #FEB954",
"d c #FEBE59",
"e c #FEC35E",
"f c #FEC863",
"g c #FECD69",
"h c #FED16E",
"i c #FED673",
"j c #FEDA78",
"k c #FEDD7D",
"l c #FEDF83",
"m c #FEE188",
"n c #FFE48D",
"o c #FFE692",
"p c #FFE998",
"q c #FFEC9D",
"r c #FFEEA2",
"s c #FFF0A8",
"t c #FFF2AD",
"u c #FFF5B3",
"v c #FFF7B8",
"w c #FFF9BE",
"x c #FFFBC3",
"y c #FFFEC9",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy",
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxy"};
/* XPM */
static const char * colormap_neg2pos_xpm[] = {
"64 32 335 2",
" c #0000FF",
". c #2C2CFF",
"+ c #4443FF",
"@ c #5454FF",
"# c #6261FF",
"$ c #6D6DFF",
"% c #7878FF",
"& c #8181FF",
"* c #8A89FF",
"= c #9192FF",
"- c #9899FF",
"; c #A0A0FF",
"> c #A7A6FF",
", c #ACACFF",
"' c #B2B2FF",
") c #B8B8FF",
"! c #BDBEFF",
"~ c #C3C3FF",
"{ c #C8C8FF",
"] c #CDCDFF",
"^ c #D2D2FF",
"/ c #D7D6FF",
"( c #DBDBFF",
"_ c #DFDFFF",
": c #E4E4FF",
"< c #E8E8FF",
"[ c #ECECFF",
"} c #F0F0FF",
"| c #F4F4FF",
"1 c #F8F8FF",
"2 c #FBFBFF",
"3 c #FFFFFF",
"4 c #FFFDFD",
"5 c #FFF9FA",
"6 c #FFF6F6",
"7 c #FFF2F3",
"8 c #FFEDED",
"9 c #FFEAE9",
"0 c #FFE6E6",
"a c #FFE1E1",
"b c #FFDDDD",
"c c #FFD9D9",
"d c #FFD4D4",
"e c #FFCFD0",
"f c #FFCCCB",
"g c #FFC6C6",
"h c #FFC2C1",
"i c #FFBCBC",
"j c #FFB6B6",
"k c #FFB0B0",
"l c #FFA9AA",
"m c #FFA4A3",
"n c #FF9E9E",
"o c #FF9696",
"p c #FF8F90",
"q c #FF8887",
"r c #FF7F80",
"s c #FF7676",
"t c #FF6C6C",
"u c #FF6160",
"v c #FF5353",
"w c #FF3D3E",
"x c #FF2122",
"y c #FF0000",
"z c #2B2CFF",
"A c #4343FF",
"B c #5455FF",
"C c #6262FF",
"D c #6D6EFF",
"E c #9191FF",
"F c #9898FF",
"G c #9F9FFF",
"H c #A6A6FF",
"I c #B3B3FF",
"J c #BDBDFF",
"K c #C2C3FF",
"L c #D7D7FF",
"M c #DFE0FF",
"N c #E3E3FF",
"O c #E8E7FF",
"P c #F0EFFF",
"Q c #F4F3FF",
"R c #F7F7FF",
"S c #FBFCFF",
"T c #FFFAFA",
"U c #FFF3F2",
"V c #FFE5E5",
"W c #FFD9D8",
"X c #FFD5D5",
"Y c #FFD0D0",
"Z c #FFCBCB",
"` c #FFC2C2",
" . c #FFB7B6",
".. c #FFAAAA",
"+. c #FFA4A4",
"@. c #FF9D9D",
"#. c #FF9796",
"$. c #FF9090",
"%. c #FF8888",
"&. c #FF7F7F",
"*. c #FF3E3D",
"=. c #2C2BFF",
"-. c #9291FF",
";. c #9999FF",
">. c #A09FFF",
",. c #ACADFF",
"'. c #B2B3FF",
"). c #BEBEFF",
"!. c #D1D1FF",
"~. c #D6D6FF",
"{. c #DADBFF",
"]. c #E0E0FF",
"^. c #F3F4FF",
"/. c #F8F7FF",
"(. c #FFFAF9",
"_. c #FFF6F5",
":. c #FFF2F2",
"<. c #FFEEEE",
"[. c #FFE9EA",
"}. c #FFE5E6",
"|. c #FFE2E1",
"1. c #FFDEDD",
"2. c #FFD0CF",
"3. c #FFCBCC",
"4. c #FFC1C2",
"5. c #FFB7B7",
"6. c #FF9697",
"7. c #FF8F8F",
"8. c #FF8788",
"9. c #FF6C6B",
"0. c #FF6061",
"a. c #FF4242",
"b. c #FF2221",
"c. c #2B2BFF",
"d. c #5554FF",
"e. c #6E6DFF",
"f. c #7877FF",
"g. c #8989FF",
"h. c #ADADFF",
"i. c #D6D7FF",
"j. c #EFF0FF",
"k. c #FCFBFF",
"l. c #FFFEFD",
"m. c #FFEFEF",
"n. c #FFE9E9",
"o. c #FFD5D4",
"p. c #FFC1C1",
"q. c #FFBDBC",
"r. c #FFB1B1",
"s. c #FF6B6C",
"t. c #FF6060",
"u. c #FF4243",
"v. c #FF2B2B",
"w. c #A6A7FF",
"x. c #BEBDFF",
"y. c #D1D2FF",
"z. c #EBECFF",
"A. c #F3F3FF",