本文整理汇总了C++中LabelControl类的典型用法代码示例。如果您正苦于以下问题:C++ LabelControl类的具体用法?C++ LabelControl怎么用?C++ LabelControl使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LabelControl类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osgViewer::Viewer viewer(arguments);
bool test1 = arguments.read("--test1");
bool test5 = arguments.read("--test5");
bool ok = test1 || test5;
if ( !ok )
{
return usage("");
}
if ( !test5 )
{
osg::Node* earthNode = osgDB::readNodeFiles( arguments );
if (!earthNode)
{
return usage( "Unable to load earth model." );
}
viewer.setCameraManipulator( new osgEarth::Util::EarthManipulator() );
LabelControl* label = new LabelControl();
if ( !test5 )
ControlCanvas::get(&viewer,true)->addControl(label);
if ( test1 )
{
viewer.setSceneData( TEST_1::run(earthNode) );
label->setText( "Function injection test: the map should appear hazy." );
}
}
else // if ( test5 )
{
viewer.setSceneData( TEST_5::run() );
}
// add some stock OSG handlers:
viewer.addEventHandler(new osgViewer::StatsHandler());
viewer.addEventHandler(new osgViewer::WindowSizeHandler());
viewer.addEventHandler(new osgViewer::ThreadingHandler());
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
return viewer.run();
}
示例2: createInactiveLayerItem
void
createInactiveLayerItem( Grid* grid, int gridRow, const std::string& name, const ConfigOptions& lc )
{
int gridCol = 0;
// the layer name
LabelControl* nameLabel = new LabelControl( name );
grid->setControl( gridCol, gridRow, nameLabel );
gridCol++;
LabelControl* addRemove = new LabelControl( "ADD", 14 );
addRemove->setHorizAlign( Control::ALIGN_CENTER );
addRemove->setBackColor( .4,.4,.4,1 );
addRemove->setActiveColor( .8,0,0,1 );
addRemove->addEventHandler( new AddLayerHandler(lc) );
grid->setControl( gridCol, gridRow, addRemove );
}
示例3: PositionColumns
void ChooseServerForm::PositionColumns() {
ListControl *plstc = (ListControl *)GetControlPtr(kidcServerList);
Rect rcList;
plstc->GetRect(&rcList);
Font *pfnt = plstc->GetFont();
LabelControl *plblPlayers = (LabelControl *)GetControlPtr(kidcNumPlayers);
int cxNumPlayers = pfnt->GetTextExtent(plblPlayers->GetText());
int xNumPlayers = rcList.right - cxNumPlayers;
LabelControl *plblStatus = (LabelControl *)GetControlPtr(kidcServerStatus);
int cxStatus = pfnt->GetTextExtent(plblStatus->GetText());
int xStatus = xNumPlayers - 40 - cxStatus;
int xLocation = rcList.left + (xStatus - rcList.left) / 2;
int xName = rcList.left;
plstc->SetTabStops(xName - rcList.left, xLocation - rcList.left,
xStatus + cxStatus / 2 - rcList.left,
xNumPlayers + cxNumPlayers / 2 - rcList.left);
plstc->SetTabFlags(0, 0, kfLstTabCenterOn, kfLstTabCenterOn);
word ids[] = { kidcServerName, kidcServerLocation, kidcServerStatus,
kidcNumPlayers };
int ax[] = { xName, xLocation, xStatus, xNumPlayers };
for (int i = 0; i < ARRAYSIZE(ids); i++) {
LabelControl *plbl = (LabelControl *)GetControlPtr(ids[i]);
Rect rcCtl;
plbl->GetRect(&rcCtl);
plbl->SetPosition(ax[i], rcCtl.top);
}
}
示例4: ShowStatus
void DownloadMissionPackForm::ShowStatus(void *ctx, const char *psz) {
if (ctx == CTX_INDEX) {
ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
plstc->Clear();
plstc->SetTabStops(0);
plstc->SetTabFlags(0);
plstc->Add(psz, NULL);
}
if (ctx == CTX_INFO) {
LabelControl *plbl =
(LabelControl *)GetControlPtr(kidcMissionPackInfo);
plbl->SetText((char *)psz);
}
// Force the frame draw, since this gets called while the main loop
// is "asleep".
gpmfrmm->DrawFrame(false);
}
示例5: HideShow
void DownloadMissionPackForm::HideShow() {
ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
LabelControl *plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
ButtonControl *pbtn = (ButtonControl *)GetControlPtr(kidcOk);
int selected = plstc->GetSelectedItemIndex();
if (selected < 0) {
gppim->Reset();
plbl->SetText("");
pbtn->Show(false);
GetControlPtr(kidcDiscuss)->Show(false);
return;
}
// Get the pack info for this pack
IndexEntry *entry = (IndexEntry *)plstc->GetSelectedItemData();
if (entry == NULL) {
return;
}
char *psz = NULL;
switch (gppackm->IsInstalled(&entry->packid)) {
case 0:
psz = "DOWNLOAD";
break;
case 1:
psz = "REMOVE";
break;
case 2:
psz = "UPGRADE";
break;
}
if (psz != NULL) {
pbtn->SetText(psz);
}
pbtn->Show(true);
ShowInfo(true);
}
示例6: addControls
void
addControls(GammaColorFilter* filter, Container* container, unsigned i)
{
// the outer container:
Grid* s_layerBox = container->addControl(new Grid());
s_layerBox->setBackColor(0,0,0,0.5);
s_layerBox->setMargin( 10 );
s_layerBox->setPadding( 10 );
s_layerBox->setChildSpacing( 10 );
s_layerBox->setChildVertAlign( Control::ALIGN_CENTER );
s_layerBox->setAbsorbEvents( true );
s_layerBox->setVertAlign( Control::ALIGN_TOP );
// Title:
s_layerBox->setControl( 0, 0, new LabelControl(Stringify()<<"Layer "<<i, Color::Yellow) );
// Gamma:
LabelControl* gLabel = new LabelControl( "Gamma" );
gLabel->setVertAlign( Control::ALIGN_CENTER );
s_layerBox->setControl( 0, 1, gLabel );
HSliderControl* gAdjust = new HSliderControl( 0.1f, 3.0f, 1.0f, new GAMMA::Set(filter) );
gAdjust->setWidth( 125 );
gAdjust->setHeight( 12 );
gAdjust->setVertAlign( Control::ALIGN_CENTER );
s_layerBox->setControl( 1, 1, gAdjust );
s_layerBox->setControl( 2, 1, new LabelControl(gAdjust) );
// Reset button
LabelControl* resetButton = new LabelControl( "Reset" );
resetButton->setBackColor( Color::Gray );
resetButton->setActiveColor( Color::Blue );
resetButton->addEventHandler( new Reset(gAdjust) );
s_layerBox->setControl( 1, 3, resetButton );
}
示例7: GetControlPtr
bool DownloadMissionPackForm::Init(FormMgr *pfrmm, IniReader *pini, word idf) {
if (!ShellForm::Init(pfrmm, pini, idf)) {
return false;
}
// Start downloading the mission pack index
if (!idxl_.Start(CTX_INDEX, this)) {
return false;
}
// No operation is available until a mission is selected
GetControlPtr(kidcOk)->Show(false);
GetControlPtr(kidcDiscuss)->Show(false);
// Show status
ShowStatus(CTX_INDEX, "Contacting Server...");
// Position Column labels
PositionColumns();
// Set info label to use ellipsis
LabelControl *plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
plbl->SetFlags(plbl->GetFlags() | kfLblEllipsis);
// No sorting yet
idSortIndicator_ = 0;
sort_ = HttpIndexLoader::SORT_UNSORTED;
return true;
}
示例8: DoModal
bool ChooseServerForm::DoModal(int *pnResult) {
// Hide Connect button until there is something to connect to
LabelControl *plbl = (LabelControl *)GetControlPtr(kidcOk);
plbl->Show(false);
// Position the columns
PositionColumns();
Refresh(false);
// If there is a single entry this client can connect to, use it without
// presenting UI
if (infos_.size() == 1) {
Control *pctl = GetControlPtr(kidcOk);
if (pctl->GetFlags() & kfCtlVisible) {
const ServerInfo& info = infos_[0];
if (Connect(info) == knTransportOpenResultSuccess) {
*pnResult = kidcOk;
return true;
}
}
}
return ShellForm::DoModal(pnResult);
}
示例9: GetSpeedMultiplierString
void CreateGameForm::UpdateLabels() {
// Update Game Speed label
char szT[80];
GetSpeedMultiplierString(szT, m_tGameSpeed);
LabelControl *plbl = (LabelControl *)GetControlPtr(kidcGameSpeedLabel);
plbl->SetText(szT);
// Update Mission Pack Info label
plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
ListControl *plstc = m_aplstc[IndexFromMissionType(m_mt)];
if (plstc->GetSelectedItemIndex() == -1) {
plbl->SetText("");
return;
}
int i = (int)plstc->GetSelectedItemData();
MissionIdentifier miid;
if (!m_pml->GetMissionIdentifier(i, &miid)) {
plbl->SetText("");
return;
}
json::JsonMap *map = gppim->GetInfoMap(&miid.packid);
if (map == NULL) {
MissionDescription md;
if (!m_pml->GetMissionDescription(i, &md)) {
plbl->SetText("");
return;
}
const char *s;
if (miid.packid.id == PACKID_MAIN) {
s = base::Format::ToString("%s by Spiffcode, Inc.",
md.szPackName);
} else {
s = md.szPackName;
}
plbl->SetText((char *)s);
return;
}
const char *szAuthor = GetString(map, "a");
const char *szTitle = GetString(map, "t");
const char *s = base::Format::ToString("%s by %s", szTitle, szAuthor);
plbl->SetText((char *)s);
delete map;
}
示例10: VBox
//.........这里部分代码省略.........
TextSymbol* defaultText = new TextSymbol();
defaultText->halo() = Stroke(0.3,0.3,0.3,1.0);
kml_options.defaultTextSymbol() = defaultText;
osg::Node* kml = KML::load( URI(kmlFile), mapNode, kml_options );
if ( kml )
{
if (kmlUI)
{
Control* c = AnnotationGraphControlFactory().create(kml, view);
if ( c )
{
c->setVertAlign( Control::ALIGN_TOP );
canvas->addControl( c );
}
}
root->addChild( kml );
}
else
{
OE_NOTICE << "Failed to load " << kmlFile << std::endl;
}
}
//// Configure the de-cluttering engine for labels and annotations:
//if ( !screenSpaceLayoutConf.empty() )
//{
// ScreenSpaceLayout::setOptions( ScreenSpaceLayoutOptions(screenSpaceLayoutConf) );
//}
// Configure the mouse coordinate readout:
if ( useCoords )
{
LabelControl* readout = new LabelControl();
readout->setBackColor( Color(Color::Black, 0.8) );
readout->setHorizAlign( Control::ALIGN_RIGHT );
readout->setVertAlign( Control::ALIGN_BOTTOM );
Formatter* formatter =
useMGRS ? (Formatter*)new MGRSFormatter(MGRSFormatter::PRECISION_1M, 0L, MGRSFormatter::USE_SPACES) :
useDMS ? (Formatter*)new LatLongFormatter(LatLongFormatter::FORMAT_DEGREES_MINUTES_SECONDS) :
useDD ? (Formatter*)new LatLongFormatter(LatLongFormatter::FORMAT_DECIMAL_DEGREES) :
0L;
MouseCoordsTool* mcTool = new MouseCoordsTool( mapNode );
mcTool->addCallback( new MouseCoordsLabelCallback(readout, formatter) );
view->addEventHandler( mcTool );
canvas->addControl( readout );
}
// Configure for an ortho camera:
if ( args.read("--ortho") )
{
view->getCamera()->setProjectionMatrixAsOrtho(-1, 1, -1, 1, 0, 1);
}
// activity monitor (debugging)
if ( showActivity )
{
VBox* vbox = new VBox();
vbox->setBackColor( Color(Color::Black, 0.8) );
vbox->setHorizAlign( Control::ALIGN_RIGHT );
vbox->setVertAlign( Control::ALIGN_BOTTOM );
view->addEventHandler( new ActivityMonitorTool(vbox) );
canvas->addControl( vbox );
示例11: main
int main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osgViewer::Viewer viewer(arguments);
bool test1 = arguments.read("--test1");
bool test2 = arguments.read("--test2");
bool test3 = arguments.read("--test3");
bool test4 = arguments.read("--test4");
bool test5 = arguments.read("--test5");
bool ok = test1 || test2 || test3 || test4 || test5;
if ( !ok )
{
return usage("");
}
osg::Group* root = new osg::Group();
viewer.setSceneData( root );
// add a canvas:
ControlCanvas* canvas = new ControlCanvas();
root->addChild( canvas );
// and a label:
LabelControl* label = new LabelControl();
canvas->addControl(label);
if ( !test5 )
{
osg::Node* earthNode = osgDB::readNodeFile( "http://osgearth.org/demo.earth" );
if (!earthNode)
{
return usage( "Unable to load earth model." );
}
if ( test1 )
{
root->addChild( TEST_1::run(earthNode) );
label->setText( "Function injection test: the map appears hazy at high altitude." );
}
else if ( test2 )
{
root->addChild( TEST_2::run(earthNode) );
label->setText( "Accept callback test: the map turns red when viewport width > 1000" );
}
else if ( test3 )
{
root->addChild( TEST_3::run(earthNode) );
label->setText( "Shader LOD test: the map turns red between 500K and 1M meters altitude" );
}
else if ( test4 )
{
root->addChild( TEST_4::run(earthNode) );
label->setText("Memory management test; monitor memory for stability");
}
viewer.setCameraManipulator( new osgEarth::Util::EarthManipulator() );
}
else // if ( test5 )
{
root->addChild( TEST_5::run() );
label->setText( "Leakage test: red tri on the left, blue on the right." );
}
// add some stock OSG handlers:
viewer.addEventHandler(new osgViewer::StatsHandler());
viewer.addEventHandler(new osgViewer::WindowSizeHandler());
viewer.addEventHandler(new osgViewer::ThreadingHandler());
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
return viewer.run();
}
示例12: main
//
// NOTE: run this sample from the repo/tests directory.
//
int main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osgViewer::Viewer viewer(arguments);
s_viewer = &viewer;
// Start by creating the map:
s_mapNode = MapNode::load(arguments);
if ( !s_mapNode )
{
Map* map = new Map();
// Start with a basemap imagery layer; we'll be using the GDAL driver
// to load a local GeoTIFF file:
GDALOptions basemapOpt;
basemapOpt.url() = "../data/world.tif";
map->addImageLayer( new ImageLayer( ImageLayerOptions("basemap", basemapOpt) ) );
// That's it, the map is ready; now create a MapNode to render the Map:
MapNodeOptions mapNodeOptions;
mapNodeOptions.enableLighting() = false;
s_mapNode = new MapNode( map, mapNodeOptions );
}
s_mapNode->setNodeMask( 0x01 );
// Define a style for the feature data. Since we are going to render the
// vectors as lines, configure the line symbolizer:
StyleSheet* styleSheet = buildStyleSheet( Color::Yellow, 2.0f );
s_source = new FeatureListSource();
LineString* line = new LineString();
line->push_back( osg::Vec3d(-60, 20, 0) );
line->push_back( osg::Vec3d(-120, 20, 0) );
line->push_back( osg::Vec3d(-120, 60, 0) );
line->push_back( osg::Vec3d(-60, 60, 0) );
Feature *feature = new Feature(line, s_mapNode->getMapSRS(), Style(), s_fid++);
s_source->insertFeature( feature );
s_activeFeature = feature;
s_root = new osg::Group;
s_root->addChild( s_mapNode.get() );
Session* session = new Session(s_mapNode->getMap(), styleSheet, s_source.get());
FeatureModelGraph* graph = new FeatureModelGraph(
session,
FeatureModelSourceOptions(),
new GeomFeatureNodeFactory() );
graph->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
graph->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
s_root->addChild( graph );
//Setup the controls
ControlCanvas* canvas = ControlCanvas::get( &viewer );
s_root->addChild( canvas );
Grid *toolbar = createToolBar( );
canvas->addControl( toolbar );
canvas->setNodeMask( 0x1 << 1 );
int col = 0;
LabelControl* addVerts = new LabelControl("Add Verts");
toolbar->setControl(col++, 0, addVerts );
addVerts->addEventHandler( new AddVertsModeHandler( graph ));
LabelControl* edit = new LabelControl("Edit");
toolbar->setControl(col++, 0, edit );
edit->addEventHandler(new EditModeHandler( graph ));
unsigned int row = 0;
Grid *styleBar = createToolBar( );
styleBar->setPosition(0, 50);
canvas->addControl( styleBar );
//Make a list of styles
styleBar->setControl(0, row++, new LabelControl("Styles") );
unsigned int numStyles = 8;
for (unsigned int i = 0; i < numStyles; ++i)
{
float w = 50;
osg::Vec4 color = randomColor();
float widths[3] = {2, 4, 8};
unsigned int r = row++;
for (unsigned int j = 0; j < 3; j++)
{
Control* l = new Control();
l->setBackColor( color );
//.........这里部分代码省略.........
示例13: main
int main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osgViewer::Viewer viewer(arguments);
bool test1 = arguments.read("--test1");
bool test2 = arguments.read("--test2");
bool test3 = arguments.read("--test3");
bool test4 = arguments.read("--test4");
bool test5 = arguments.read("--test5");
bool test6 = arguments.read("--test6");
bool test7 = arguments.read("--test7");
bool test8 = arguments.read("--test8");
bool test9 = arguments.read("--test9");
bool ok = test1 || test2 || test3 || test4 || test5 || test6 || test7 || test8||test9;
bool ui = !arguments.read("--noui");
if ( !ok )
{
return usage("");
}
osg::Group* root = new osg::Group();
viewer.setSceneData( root );
LabelControl* label = new LabelControl();
if ( ui )
{
// add a canvas:
ControlCanvas* canvas = new ControlCanvas();
root->addChild( canvas );
// and a label:
canvas->addControl(label);
}
if ( test1 || test2 || test3 || test4 || test6 )
{
osg::Node* earthNode = osgDB::readNodeFile( "gdal_tiff.earth" );
if (!earthNode)
{
return usage( "Unable to load earth model." );
}
if ( test1 )
{
root->addChild( TEST_1::run(earthNode) );
if (ui) label->setText( "Function injection test: the map appears hazy at high altitude." );
}
else if ( test2 )
{
root->addChild( TEST_2::run(earthNode) );
if (ui) label->setText( "Accept callback test: the map turns red when viewport width > 1000" );
}
else if ( test3 )
{
root->addChild( TEST_3::run(earthNode) );
if (ui) label->setText( "Shader LOD test: the map turns red between 500K and 1M meters altitude" );
}
else if ( test4 )
{
root->addChild( TEST_4::run(earthNode) );
if (ui) label->setText("Memory management test; monitor memory for stability");
}
else if ( test6 )
{
root->addChild( TEST_6::run(earthNode) );
if (ui) label->setText("State Memory Stack test; top row, both=blue. bottom left=red, bottom right=normal.");
}
viewer.setCameraManipulator( new osgEarth::Util::EarthManipulator() );
}
else if ( test5 )
{
osgEarth::Registry::instance()->getCapabilities();
root->addChild( TEST_5::run() );
if (ui) label->setText( "Leakage test: red tri on the left, blue on the right." );
}
else if ( test7 )
{
root->addChild( TEST_7::run( osgDB::readNodeFiles(arguments) ) );
if (ui) label->setText("Geometry Shader Injection Test.");
}
else if (test8)
{
root->addChild( TEST_8::run() );
if (ui) label->setText("Serialization test");
}
else if (test9)
{
osg::Node* earthNode = osgDB::readNodeFile( "readymap.earth" );
if (!earthNode)
{
return usage( "Unable to load earth model." );
}
root->addChild(TEST_9::run(earthNode));
if (ui) label->setText("DP Shader Test - see code comments");
viewer.setCameraManipulator( new osgEarth::Util::EarthManipulator() );
//.........这里部分代码省略.........
示例14: main
int
main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osg::DisplaySettings::instance()->setMinimumNumStencilBits( 8 );
std::vector< std::string > imageFiles;
std::vector< Bounds > imageBounds;
//Read in the image files
std::string filename;
Bounds bounds;
while (arguments.read("--image", filename, bounds.xMin(), bounds.yMin(), bounds.xMax(), bounds.yMax()))
{
imageFiles.push_back( filename );
imageBounds.push_back( bounds );
}
if (imageFiles.empty())
{
imageFiles.push_back("../data/osgearth.gif");
imageBounds.push_back( Bounds(-100, 30, -90, 40) );
}
bool moveVert = arguments.read("--vert");
// load the .earth file from the command line.
osg::Node* earthNode = osgDB::readNodeFiles( arguments );
if (!earthNode)
return usage( "Unable to load earth model." );
osgViewer::Viewer viewer(arguments);
EarthManipulator* manip = new EarthManipulator();
viewer.setCameraManipulator( manip );
osg::Group* root = new osg::Group();
root->addChild( earthNode );
//Create the control panel
root->addChild( createControlPanel(&viewer) );
viewer.setSceneData( root );
osgEarth::MapNode* mapNode = osgEarth::MapNode::findMapNode( earthNode );
if ( mapNode )
{
for (unsigned int i = 0; i < imageFiles.size(); i++)
{
std::string imageFile = imageFiles[i];
//Read the image file and play it if it's a movie
osg::Image* image = osgDB::readImageFile(imageFile);
if (image)
{
osg::ImageStream* is = dynamic_cast<osg::ImageStream*>(image);
if (is)
{
is->play();
}
}
//Create a new ImageOverlay and set it's bounds
//ImageOverlay* overlay = new ImageOverlay(mapNode->getMap()->getProfile()->getSRS()->getEllipsoid(), image);
ImageOverlay* overlay = new ImageOverlay(mapNode);
overlay->setImage( image );
overlay->setBounds(imageBounds[i]);
root->addChild( overlay );
//Create a new ImageOverlayEditor and set it's node mask to 0 to hide it initially
#if OSG_MIN_VERSION_REQUIRED(2,9,6)
osg::Node* editor = new ImageOverlayEditor( overlay);
#else
//Just make an empty group for pre-2.9.6
osg::Node* editor = new osg::Group;
#endif
editor->setNodeMask( 0 );
root->addChild( editor );
// Add an image preview
ImageControl* imageCon = new ImageControl( image );
imageCon->setSize( 64, 64 );
imageCon->setVertAlign( Control::ALIGN_CENTER );
s_layerBox->setControl( 0, i, imageCon );
//Add some controls
CheckBoxControl* enabled = new CheckBoxControl( true );
enabled->addEventHandler( new EnabledHandler(overlay) );
enabled->setVertAlign( Control::ALIGN_CENTER );
s_layerBox->setControl( 1, i, enabled );
//The overlay name
LabelControl* name = new LabelControl( osgDB::getSimpleFileName( imageFile) );
name->setVertAlign( Control::ALIGN_CENTER );
s_layerBox->setControl( 2, i, name );
//.........这里部分代码省略.........
示例15: createControls
void
createControls( ControlCanvas* cs )
{
// a container centered on the screen, containing an image and a text label.
{
VBox* center = new VBox();
center->setFrame( new RoundedFrame() );
center->getFrame()->setBackColor( 1,1,1,0.5 );
center->setPadding( 10 );
center->setHorizAlign( Control::ALIGN_CENTER );
center->setVertAlign( Control::ALIGN_CENTER );
// Add an image:
osg::Image* image = osgDB::readImageFile( "http://osgearth.org/chrome/site/osgearth.gif" );
if ( image ) {
ImageControl* imageCon = new ImageControl( image );
imageCon->setHorizAlign( Control::ALIGN_CENTER );
imageCon->setFixSizeForRotation( true );
imageCon->addEventHandler( new ImageRotationHandler );
center->addControl( imageCon );
center->setHorizAlign( Control::ALIGN_CENTER );
}
// Add a text label:
LabelControl* label = new LabelControl( "osgEarth Controls Toolkit" );
label->setFont( osgText::readFontFile( "arialbd.ttf" ) );
label->setFontSize( 24.0f );
label->setHorizAlign( Control::ALIGN_CENTER );
label->setMargin( 5 );
center->addControl( label );
// Add another
LabelControl* label2 = new LabelControl( "(Click the osgEarth logo to rotate it)" );
label2->setHorizAlign( Control::ALIGN_CENTER );
center->addControl( label2 );
cs->addControl( center );
}
// a simple vbox with absolute positioning in the upper left with two text labels.
{
VBox* ul = new VBox();
ul->setFrame( new Frame() );
ul->setPosition( 20, 20 );
ul->setPadding( 10 );
{
LabelControl* title = new LabelControl( "Upper left control", 22, osg::Vec4f(1,1,0,1) );
ul->addControl( title );
LabelControl* content = new LabelControl( "Here is some text in the upper left control" );
ul->addControl( content );
HBox* c2 = new HBox();
c2->setSpacing( 10 );
{
HSliderControl* slider = new HSliderControl( 0, 100 );
slider->setBackColor( .6,0,0,1 );
slider->setHeight( 25 );
slider->setWidth( 300 );
slider->addEventHandler( new MySliderHandler() );
c2->addControl( slider );
s_sliderLabel = new LabelControl();
s_sliderLabel->setVertAlign( Control::ALIGN_CENTER );
c2->addControl( s_sliderLabel );
}
ul->addControl( c2 );
HBox* c3 = new HBox();
c3->setHorizAlign( Control::ALIGN_CENTER );
c3->setSpacing( 10 );
{
HBox* c4 = new HBox();
c4->setSpacing( 5 );
{
c4->addControl( new CheckBoxControl( true ) );
c4->addControl( new LabelControl( "Checkbox 1" ) );
}
c3->addControl( c4 );
HBox* c5 = new HBox();
c5->setSpacing( 5 );
{
c5->addControl( new CheckBoxControl( false ) );
c5->addControl( new LabelControl( "Checkbox 2" ) );
}
c3->addControl( c5 );
}
ul->addControl( c3 );
}
cs->addControl( ul );
ul->addEventHandler( new MyClickHandler );
}
// a centered hbox container along the bottom on the screen.
{
HBox* bottom = new HBox();
bottom->setFrame( new RoundedFrame() );
bottom->getFrame()->setBackColor(0,0,0,0.5);
//.........这里部分代码省略.........