Tulip
5.6.0
Large graphs analysis and drawing
|
#include <GlComplexPolygon.h>
Public Member Functions | |
GlComplexPolygon () | |
GlComplexPolygon (const std::vector< Coord > &coords, Color fcolor, Color ocolor, int polygonEdgesType=0, const std::string &textureName="", bool textured=true) | |
GlComplexPolygon (const std::vector< Coord > &coords, Color fcolor, int polygonEdgesType=0, const std::string &textureName="", bool textured=true) | |
GlComplexPolygon (const std::vector< std::vector< Coord >> &coords, Color fcolor, Color ocolor, int polygonEdgesType=0, const std::string &textureName="", bool textured=true) | |
GlComplexPolygon (const std::vector< std::vector< Coord >> &coords, Color fcolor, int polygonEdgesType=0, const std::string &textureName="", bool textured=true) | |
void | activateQuadBorder (const float borderWidth, const Color &color, const std::string &texture="", const int position=1, const float texCoordFactor=1.f, const int polygonId=0) |
void | deactivateQuadBorder (const int polygonId=0) |
void | draw (float lod, Camera *camera) override |
Color | getFillColor () const |
Color | getOutlineColor () const |
const std::vector< std::vector< Coord > > & | getPolygonSides () const |
std::string | getTextureName () |
float | getTextureZoom () |
void | getXML (std::string &outString) override |
virtual void | getXMLOnlyData (std::string &outString) |
void | setFillColor (const Color &color) |
void | setOutlineColor (const Color &color) |
void | setOutlineMode (const bool) |
void | setOutlineSize (double size) |
void | setTextureActivation (bool) |
void | setTextureName (const std::string &name) |
void | setTextureZoom (float zoom) |
void | setWithXML (const std::string &inString, unsigned int ¤tPosition) override |
bool | textureActivation () |
void | translate (const Coord &mouvement) override |
Public Member Functions inherited from tlp::GlSimpleEntity | |
GlSimpleEntity () | |
~GlSimpleEntity () override | |
virtual BoundingBox | getBoundingBox () |
int | getStencil () |
bool | isVisible () const |
virtual void | setStencil (int stencil) |
virtual void | setVisible (bool visible) |
Protected Member Functions | |
virtual void | addPoint (const Coord &point) |
virtual void | beginNewHole () |
void | createPolygon (const std::vector< Coord > &coords, int polygonEdgesType) |
void | runTesselation () |
Protected Attributes | |
int | currentVector |
Color | fillColor |
Color | outlineColor |
bool | outlined |
double | outlineSize |
std::vector< std::vector< Coord > > | points |
std::vector< std::vector< float > > | pointsIdx |
std::vector< bool > | quadBorderActivated |
std::vector< Color > | quadBorderColor |
std::vector< int > | quadBorderPosition |
std::vector< float > | quadBorderTexFactor |
std::vector< std::string > | quadBorderTexture |
std::vector< float > | quadBorderWidth |
bool | textured |
std::string | textureName |
float | textureZoom |
std::vector< float > | verticesData |
std::vector< unsigned int > | verticesIndices |
Protected Attributes inherited from tlp::GlSimpleEntity | |
BoundingBox | boundingBox |
std::vector< GlComposite * > | parents |
int | stencil |
bool | visible |
Class to create a complex polygon (concave polygon or polygon with hole) If you want to create a complex polygon you have 4 constructors : Constructors with vector of coords : to create a complex polygon without hole.
Constructors with vector of vector of Coords : to create a complex polygon with hole
In constructors you can specify the polygon border style : polygonEdgesType parameter (0 -> straight lines, 1 -> catmull rom curves, 2 -> bezier curves) You can also specify the texture name if you want to create a textured complex polygon
In complex polygon you can add a smooth border : see activateQuadBorder(..) function And you can specify the texture zoom : see setTextureZoom(...) function
Definition at line 79 of file GlComplexPolygon.h.
|
inline |
Default constructor.
Definition at line 87 of file GlComplexPolygon.h.
tlp::GlComplexPolygon::GlComplexPolygon | ( | const std::vector< Coord > & | coords, |
Color | fcolor, | ||
int | polygonEdgesType = 0 , |
||
const std::string & | textureName = "" , |
||
bool | textured = true |
||
) |
Constructor with a vector of coords, a fill color, a polygon edges type(0 -> straight lines, 1 -> catmull rom curves, 2 -> bezier curves) and a textureName if you want.
tlp::GlComplexPolygon::GlComplexPolygon | ( | const std::vector< Coord > & | coords, |
Color | fcolor, | ||
Color | ocolor, | ||
int | polygonEdgesType = 0 , |
||
const std::string & | textureName = "" , |
||
bool | textured = true |
||
) |
Constructor with a vector of coords, a fill color, an outline color, a polygon edges type(0 -> straight lines, 1 -> catmull rom curves, 2 -> bezier curves) and a textureName if you want.
tlp::GlComplexPolygon::GlComplexPolygon | ( | const std::vector< std::vector< Coord >> & | coords, |
Color | fcolor, | ||
int | polygonEdgesType = 0 , |
||
const std::string & | textureName = "" , |
||
bool | textured = true |
||
) |
Constructor with a vector of vector of coords (the first vector of coord is the polygon and others vectors are holes in polygon), a fill color, a polygon edges type(0 -> straight lines, 1 -> catmull rom curves, 2 -> bezier curves) and a textureName if you want.
tlp::GlComplexPolygon::GlComplexPolygon | ( | const std::vector< std::vector< Coord >> & | coords, |
Color | fcolor, | ||
Color | ocolor, | ||
int | polygonEdgesType = 0 , |
||
const std::string & | textureName = "" , |
||
bool | textured = true |
||
) |
Constructor with a vector of vector of coords (the first vector of coord is the polygon and others vectors are holes in polygon), a fill color, an outline color a polygon edges type(0 -> straight lines, 1 -> catmull rom curves, 2 -> bezier curves) and a textureName if you want.
void tlp::GlComplexPolygon::activateQuadBorder | ( | const float | borderWidth, |
const Color & | color, | ||
const std::string & | texture = "" , |
||
const int | position = 1 , |
||
const float | texCoordFactor = 1.f , |
||
const int | polygonId = 0 |
||
) |
Draw a thick (textured) border around the polygon.
The graphic card must support geometry shader to make this feature to work. The position parameter determines the way the border is drawn (depending on the polygon points ordering):
The texCoordFactor parameter determines the way the texture is applied : if < 1, the texture will be expanded and > 1, the texture will be compressed The polygonId parameter determines on which contour of the polygon, the border will be applied
|
protectedvirtual |
Add a new point in polygon.
|
protectedvirtual |
Begin a new hole in the polygon.
void tlp::GlComplexPolygon::deactivateQuadBorder | ( | const int | polygonId = 0 | ) |
Deactivate the textured quad border.
|
overridevirtual |
Draw the complex polygon.
Implements tlp::GlSimpleEntity.
|
inline |
Get fill color of GlComplexPolygon.
Definition at line 139 of file GlComplexPolygon.h.
|
inline |
Get outline color of GlComplexPolygon.
Definition at line 153 of file GlComplexPolygon.h.
std::string tlp::GlComplexPolygon::getTextureName | ( | ) |
Get the textureName.
|
inline |
Get the texture zoom factor.
Definition at line 167 of file GlComplexPolygon.h.
|
overridevirtual |
Function to export data and type outString (in XML format)
Implements tlp::GlSimpleEntity.
|
virtual |
Function to export data in outString (in XML format)
|
inline |
Set fill color of GlComplexPolygon.
Definition at line 146 of file GlComplexPolygon.h.
|
inline |
Set outline color of GlComplexPolygon.
Definition at line 160 of file GlComplexPolygon.h.
void tlp::GlComplexPolygon::setOutlineMode | ( | const bool | ) |
Set if the polygon is outlined or not.
void tlp::GlComplexPolygon::setOutlineSize | ( | double | size | ) |
Set size of outline.
void tlp::GlComplexPolygon::setTextureActivation | ( | bool | ) |
set if texture must be applied
void tlp::GlComplexPolygon::setTextureName | ( | const std::string & | name | ) |
Set the textureName.
|
inline |
Set the texture zoom factor.
By default if you have a polygon with a size bigger than (1,1,0) the texture will be repeated If you want to don't have this texture repeat you have to modify texture zoom For example if you have a polygon with coords ((0,0,0),(5,0,0),(5,5,0),(0,5,0)) you can set texture zoom to 5. to don't have texture repeat
Definition at line 179 of file GlComplexPolygon.h.
|
overridevirtual |
Function to set data with inString (in XML format)
Implements tlp::GlSimpleEntity.
|
inline |
indicates if texture must be applied
Definition at line 197 of file GlComplexPolygon.h.
|
override |
Translate entity.