本文整理汇总了C++中LineSymbol类的典型用法代码示例。如果您正苦于以下问题:C++ LineSymbol类的具体用法?C++ LineSymbol怎么用?C++ LineSymbol使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LineSymbol类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: color
void
KML_PolyStyle::scan( const Config& conf, Style& style, KMLContext& cx )
{
if ( !conf.empty() )
{
bool fill = true;
if ( conf.hasValue("fill") ) {
fill = as<int>(conf.value("fill"), 1) == 1;
}
bool outline = false;
if ( conf.hasValue("outline") ) {
outline = as<int>(conf.value("outline"), 0) == 1;
}
Color color(Color::White);
if ( conf.hasValue("color") ) {
color = Color( Stringify() << "#" << conf.value("color"), Color::ABGR );
}
if ( fill ) {
PolygonSymbol* poly = style.getOrCreate<PolygonSymbol>();
poly->fill()->color() = color;
}
else {
LineSymbol* line = style.getOrCreate<LineSymbol>();
line->stroke()->color() = color;
}
}
}
示例2: compute
void compute()
{
//Tell the calculator about the new start/end points
_profileCalculator->setStartEnd( GeoPoint(_mapNode->getMapSRS(), _start.x(), _start.y(), 0),
GeoPoint(_mapNode->getMapSRS(), _end.x(), _end.y(), 0));
if (_featureNode.valid())
{
_root->removeChild( _featureNode.get() );
_featureNode = 0;
}
LineString* line = new LineString();
line->push_back( _start );
line->push_back( _end );
Feature* feature = new Feature(line, _mapNode->getMapSRS());
feature->geoInterp() = GEOINTERP_GREAT_CIRCLE;
//Define a style for the line
Style style;
LineSymbol* ls = style.getOrCreateSymbol<LineSymbol>();
ls->stroke()->color() = Color::Yellow;
ls->stroke()->width() = 2.0f;
ls->tessellation() = 20;
style.getOrCreate<AltitudeSymbol>()->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
feature->style() = style;
_featureNode = new FeatureNode( _mapNode, feature );
//Disable lighting
_featureNode->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
_root->addChild( _featureNode.get() );
}
示例3: Color
void
KML_LineStyle::scan( const Config& conf, Style& style, KMLContext& cx )
{
if ( !conf.empty() )
{
LineSymbol* line = style.getOrCreate<LineSymbol>();
if ( conf.hasValue("color") )
{
line->stroke()->color() = Color( Stringify() << "#" << conf.value("color"), Color::ABGR );
}
if ( conf.hasValue("width") )
{
line->stroke()->width() = as<float>( conf.value("width"), 1.0f );
}
}
}
示例4: buildStyleSheet
StyleSheet* buildStyleSheet( const osg::Vec4 &color, float width )
{
// Define a style for the feature data. Since we are going to render the
// vectors as lines, configure the line symbolizer:
Style style;
LineSymbol* ls = style.getOrCreateSymbol<LineSymbol>();
ls->stroke()->color() = color;
ls->stroke()->width() = width;
//AltitudeSymbol* as = style.getOrCreate<AltitudeSymbol>();
//as->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
StyleSheet* styleSheet = new StyleSheet();
styleSheet->addStyle( style );
return styleSheet;
}
示例5: getValue
void
KML_LineStyle::scan( xml_node<>* node, Style& style, KMLContext& cx )
{
if ( node )
{
LineSymbol* line = style.getOrCreate<LineSymbol>();
std::string color = getValue(node, "color");
if ( !color.empty() )
{
line->stroke()->color() = Color( Stringify() << "#" << color, Color::ABGR );
}
std::string width = getValue(node, "width");
if ( !width.empty() )
{
line->stroke()->width() = as<float>( width, 1.0f );
}
}
}
示例6:
void
KML_LineString::parseStyle( const Config& conf, KMLContext& cs, Style& style )
{
KML_Geometry::parseStyle(conf, cs, style);
// need a line symbol minimally
LineSymbol* line = style.get<LineSymbol>();
if ( !line )
{
line = style.getOrCreate<LineSymbol>();
line->stroke()->color() = osg::Vec4f(1,1,1,1);
}
if ( conf.value("tessellate") == "1" )
{
line->tessellation() = 20; // KML default
}
}
示例7:
void
KML_LinearRing::parseStyle( xml_node<>* node, KMLContext& cs, Style& style )
{
KML_Geometry::parseStyle(node, cs, style);
// need a line symbol minimally
LineSymbol* line = style.get<LineSymbol>();
if ( !line )
{
line = style.getOrCreate<LineSymbol>();
line->stroke()->color() = osg::Vec4f(1,1,1,1);
}
if ( getValue(node, "tessellate") == "1" )
{
line->tessellation() = 20;
}
}
示例8: UTMGraticule
MGRSGraticule::MGRSGraticule( MapNode* mapNode ) :
UTMGraticule( 0L )
{
_mapNode = mapNode;
init();
if ( !_options->secondaryStyle().isSet() )
{
LineSymbol* line = _options->secondaryStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color(Color::White, 0.5f);
line->stroke()->stipple() = 0x1111;
TextSymbol* text = _options->secondaryStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.1f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
_minDepthOffset = DepthOffsetUtils::createMinOffsetUniform();
_minDepthOffset->set( 11000.0f );
}
示例9: buildStyle
Style buildStyle( const osg::Vec4 &color, float width )
{
// Define a style for the feature data. Since we are going to render the
// vectors as lines, configure the line symbolizer:
Style style;
LineSymbol* ls = style.getOrCreateSymbol<LineSymbol>();
ls->stroke()->color() = color;
ls->stroke()->width() = width;
ls->tessellation() = 10;
AltitudeSymbol* as = style.getOrCreate<AltitudeSymbol>();
as->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
as->technique() = AltitudeSymbol::TECHNIQUE_SCENE;
RenderSymbol* rs = style.getOrCreateSymbol<RenderSymbol>();
rs->depthOffset()->enabled() = true;
rs->depthOffset()->minBias() = 1000;
return style;
}
示例10: options
void
MGRSGraticule::setUpDefaultStyles()
{
if (!options().gzdStyle().isSet())
{
LineSymbol* line = options().gzdStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color::Gray;
line->stroke()->width() = 1.0;
line->tessellation() = 20;
TextSymbol* text = options().gzdStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.2f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
if (!options().sqidStyle().isSet())
{
LineSymbol* line = options().sqidStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color(Color::White, 0.5f);
line->stroke()->stipplePattern() = 0x1111;
TextSymbol* text = options().sqidStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.1f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
}
示例11: getMapNode
void
UTMGraticule::rebuild()
{
// clear everything out
this->removeChildren( 0, this->getNumChildren() );
// requires a map node
if ( !getMapNode() )
{
return;
}
// requires a geocentric map
if ( !getMapNode()->isGeocentric() )
{
OE_WARN << LC << "Projected map mode is not yet supported" << std::endl;
return;
}
const Profile* mapProfile = getMapNode()->getMap()->getProfile();
_profile = Profile::create(
mapProfile->getSRS(),
mapProfile->getExtent().xMin(),
mapProfile->getExtent().yMin(),
mapProfile->getExtent().xMax(),
mapProfile->getExtent().yMax(),
8, 4 );
_featureProfile = new FeatureProfile(_profile->getSRS());
//todo: do this right..
osg::StateSet* set = this->getOrCreateStateSet();
set->setMode( GL_LIGHTING, 0 );
set->setMode( GL_BLEND, 1 );
// set up default options if the caller did not supply them
if ( !_options.isSet() )
{
_options->primaryStyle() = Style();
LineSymbol* line = _options->primaryStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color::Gray;
line->stroke()->width() = 1.0;
line->tessellation() = 20;
AltitudeSymbol* alt = _options->primaryStyle()->getOrCreate<AltitudeSymbol>();
TextSymbol* text = _options->primaryStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.2f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
// rebuild the graph:
_root = new DrapeableNode( getMapNode(), false );
this->addChild( _root );
#if 0
// set up depth offsetting.
osg::StateSet* s = _root->getOrCreateStateSet();
s->setAttributeAndModes( DepthOffsetUtils::getOrCreateProgram(), 1 );
s->addUniform( DepthOffsetUtils::getIsNotTextUniform() );
osg::Uniform* u = DepthOffsetUtils::createMinOffsetUniform();
u->set( 10000.0f );
s->addUniform( u );
#endif
// build the base Grid Zone Designator (GZD) loolup table. This is a table
// that maps the GZD string to its extent.
static std::string s_gzdRows( "CDEFGHJKLMNPQRSTUVWX" );
const SpatialReference* geosrs = _profile->getSRS()->getGeographicSRS();
// build the lateral zones:
for( unsigned zone = 0; zone < 60; ++zone )
{
for( unsigned row = 0; row < s_gzdRows.size(); ++row )
{
double yMaxExtra = row == s_gzdRows.size()-1 ? 4.0 : 0.0; // extra 4 deg for row X
GeoExtent cellExtent(
geosrs,
-180.0 + double(zone)*6.0,
-80.0 + row*8.0,
-180.0 + double(zone+1)*6.0,
-80.0 + double(row+1)*8.0 + yMaxExtra );
_gzd[ Stringify() << (zone+1) << s_gzdRows[row] ] = cellExtent;
}
}
// the polar zones (UPS):
_gzd["1Y"] = GeoExtent( geosrs, -180.0, 84.0, 0.0, 90.0 );
_gzd["1Z"] = GeoExtent( geosrs, 0.0, 84.0, 180.0, 90.0 );
_gzd["1A"] = GeoExtent( geosrs, -180.0, -90.0, 0.0, -80.0 );
_gzd["1B"] = GeoExtent( geosrs, 0.0, -90.0, 180.0, -80.0 );
// replace the "exception" zones in Norway and Svalbard
_gzd["31V"] = GeoExtent( geosrs, 0.0, 56.0, 3.0, 64.0 );
//.........这里部分代码省略.........
示例12: main
int
main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
if ( arguments.read("--help") )
return usage(argv[0]);
// general setup:
osgViewer::Viewer viewer(arguments);
viewer.getDatabasePager()->setUnrefImageDataAfterApplyPolicy( false, false );
viewer.setCameraManipulator( new EarthManipulator(arguments) );
viewer.getCamera()->setSmallFeatureCullingPixelSize(-1.0f);
viewer.getCamera()->setNearFarRatio(0.00002);
// load an earth file, and support all or our example command-line options
// and earth file <external> tags
osg::Node* node = MapNodeHelper().load( arguments, &viewer );
if ( node )
{
MapNode* mapNode = MapNode::get(node);
if ( !mapNode )
return usage(argv[0]);
// Create the WFS driver:
osgEarth::Drivers::WFSFeatureOptions wfs;
wfs.url() = osgEarth::URI("http://demo.opengeo.org/geoserver/wfs");
wfs.typeName() = "states";
wfs.outputFormat() = "json"; // JSON or GML
// Configure a rendering style:
Style style;
style.setName( "states" );
LineSymbol* line = style.getOrCreate<LineSymbol>();
line->stroke()->color() = Color::Yellow;
line->stroke()->width() = 5.0f;
line->stroke()->widthUnits() = Units::PIXELS;
AltitudeSymbol* alt = style.getOrCreate<AltitudeSymbol>();
alt->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
alt->technique() = AltitudeSymbol::TECHNIQUE_DRAPE;
// Configure a model layer to render the features:
osgEarth::Drivers::FeatureGeomModelOptions geom;
geom.featureOptions() = wfs;
geom.styles() = new StyleSheet();
geom.styles()->addStyle(style);
// Make the new layer and add it to the map.
ModelLayerOptions layerOptions("states", geom);
ModelLayer* layer = new ModelLayer(layerOptions);
mapNode->getMap()->addModelLayer(layer);
viewer.setSceneData( node );
return viewer.run();
}
else
{
return usage(argv[0]);
}
}
示例13: htmlColorToVec4f
bool
SLDReader::readStyleFromCSSParams( const Config& conf, Style& sc )
{
sc.setName( conf.key() );
LineSymbol* line = 0L;
PolygonSymbol* polygon = 0L;
PointSymbol* point = 0L;
TextSymbol* text = 0L;
ExtrusionSymbol* extrusion = 0L;
MarkerSymbol* marker = 0L;
AltitudeSymbol* altitude = 0L;
for(Properties::const_iterator p = conf.attrs().begin(); p != conf.attrs().end(); p++ )
{
if ( p->first == CSS_STROKE )
{
if (!line) line = sc.getOrCreateSymbol<LineSymbol>();
line->stroke()->color() = htmlColorToVec4f( p->second );
}
else if ( p->first == CSS_STROKE_OPACITY )
{
if (!line) line = sc.getOrCreateSymbol<LineSymbol>();
line->stroke()->color().a() = as<float>( p->second, 1.0f );
}
else if ( p->first == CSS_STROKE_WIDTH )
{
if (!line) line = sc.getOrCreateSymbol<LineSymbol>();
line->stroke()->width() = as<float>( p->second, 1.0f );
}
else if ( p->first == CSS_STROKE_LINECAP )
{
if (!line) line = sc.getOrCreateSymbol<LineSymbol>();
parseLineCap( p->second, line->stroke()->lineCap() );
}
else if ( p->first == CSS_FILL )
{
if (!polygon) polygon = sc.getOrCreateSymbol<PolygonSymbol>();
polygon->fill()->color() = htmlColorToVec4f( p->second );
if ( !point ) point = sc.getOrCreateSymbol<PointSymbol>();
point->fill()->color() = htmlColorToVec4f( p->second );
if ( !text ) text = new TextSymbol();
text->fill()->color() = htmlColorToVec4f( p->second );
}
else if ( p->first == CSS_FILL_OPACITY )
{
if (!polygon) polygon = sc.getOrCreateSymbol<PolygonSymbol>();
polygon->fill()->color().a() = as<float>( p->second, 1.0f );
if (!polygon) polygon = sc.getOrCreateSymbol<PolygonSymbol>();
point->fill()->color().a() = as<float>( p->second, 1.0f );
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
text->fill()->color().a() = as<float>( p->second, 1.0f );
}
else if (p->first == CSS_POINT_SIZE)
{
if ( !point ) point = sc.getOrCreateSymbol<PointSymbol>();
point->size() = as<float>(p->second, 1.0f);
}
else if (p->first == CSS_TEXT_SIZE)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
text->size() = as<float>(p->second, 32.0f);
}
else if (p->first == CSS_TEXT_FONT)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
text->font() = p->second;
}
else if (p->first == CSS_TEXT_HALO)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
text->halo()->color() = htmlColorToVec4f( p->second );
}
//else if (p->first == CSS_TEXT_ATTRIBUTE)
//{
// if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
// text->attribute() = p->second;
//}
else if (p->first == CSS_TEXT_ROTATE_TO_SCREEN)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
if (p->second == "true") text->rotateToScreen() = true;
else if (p->second == "false") text->rotateToScreen() = false;
}
else if (p->first == CSS_TEXT_SIZE_MODE)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
if (p->second == "screen") text->sizeMode() = TextSymbol::SIZEMODE_SCREEN;
else if (p->second == "object") text->sizeMode() = TextSymbol::SIZEMODE_OBJECT;
}
else if (p->first == CSS_TEXT_REMOVE_DUPLICATE_LABELS)
{
if (!text) text = sc.getOrCreateSymbol<TextSymbol>();
if (p->second == "true") text->removeDuplicateLabels() = true;
else if (p->second == "false") text->removeDuplicateLabels() = false;
}
//.........这里部分代码省略.........
示例14: FeatureProfile
void
UTMGraticule::rebuild()
{
if (_root.valid() == false)
return;
osg::ref_ptr<const Map> map;
if (!_map.lock(map))
return;
// clear everything out
_root->removeChildren( 0, _root->getNumChildren() );
// requires a geocentric map
if ( !map->isGeocentric() )
{
OE_WARN << LC << "Projected map mode is not yet supported" << std::endl;
return;
}
const Profile* mapProfile = map->getProfile();
_profile = Profile::create(
mapProfile->getSRS(),
mapProfile->getExtent().xMin(),
mapProfile->getExtent().yMin(),
mapProfile->getExtent().xMax(),
mapProfile->getExtent().yMax(),
8, 4 );
_featureProfile = new FeatureProfile(_profile->getSRS());
//todo: do this right..
osg::StateSet* set = this->getOrCreateStateSet();
GLUtils::setLighting(set, 0);
set->setMode( GL_BLEND, 1 );
set->setMode( GL_CLIP_DISTANCE0, 1 );
// set up default options if the caller did not supply them
if ( !options().gzdStyle().isSet() )
{
options().gzdStyle() = Style();
LineSymbol* line = options().gzdStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color::Gray;
line->stroke()->width() = 1.0;
line->tessellation() = 20;
TextSymbol* text = options().gzdStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.2f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
// initialize the UTM sector tables for this profile.
_utmData.rebuild(_profile.get());
// now build the lateral tiles for the GZD level.
for( UTMData::SectorTable::iterator i = _utmData.sectorTable().begin(); i != _utmData.sectorTable().end(); ++i )
{
osg::Node* tile = _utmData.buildGZDTile(i->first, i->second, options().gzdStyle().get(), _featureProfile.get(), map.get());
if ( tile )
_root->addChild( tile );
}
}
示例15: lock
void
UTMGraticule::init()
{
if ( !_mapNode.valid() )
{
OE_WARN << LC << "Illegal NULL map node" << std::endl;
return;
}
if ( !_mapNode->isGeocentric() )
{
OE_WARN << LC << "Projected map mode is not yet supported" << std::endl;
return;
}
// safely generate a unique ID for this graticule:
_id = Registry::instance()->createUID();
{
Threading::ScopedMutexLock lock( s_graticuleMutex );
s_graticuleRegistry[_id] = this;
}
const Profile* mapProfile = _mapNode->getMap()->getProfile();
_profile = Profile::create(
mapProfile->getSRS(),
mapProfile->getExtent().xMin(),
mapProfile->getExtent().yMin(),
mapProfile->getExtent().xMax(),
mapProfile->getExtent().yMax(),
8, 4 );
_featureProfile = new FeatureProfile(_profile->getSRS());
//todo: do this right..
osg::StateSet* set = this->getOrCreateStateSet();
set->setMode( GL_LIGHTING, 0 );
set->setMode( GL_BLEND, 1 );
// set up default options if the caller did not supply them
if ( !_options.isSet() )
{
_options->primaryStyle()= Style();
LineSymbol* line = _options->primaryStyle()->getOrCreate<LineSymbol>();
line->stroke()->color() = Color::Gray;
line->stroke()->width() = 1.0;
line->tessellation() = 20;
AltitudeSymbol* alt = _options->primaryStyle()->getOrCreate<AltitudeSymbol>();
//alt->verticalOffset() = NumericExpression(4900.0);
TextSymbol* text = _options->primaryStyle()->getOrCreate<TextSymbol>();
text->fill()->color() = Color(Color::White, 0.3f);
text->halo()->color() = Color(Color::Black, 0.2f);
text->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
}
// make the shared depth attr:
_depthAttribute = new osg::Depth(osg::Depth::LEQUAL,0,1,false);
// this will intialize the graph.
rebuild();
}