26 #ifndef __TERRALIB_MAPTOOLS_INTERNAL_CANVAS_H 27 #define __TERRALIB_MAPTOOLS_INTERNAL_CANVAS_H 30 #include "../annotationtext/Enums.h" 31 #include "../color/RGBAColor.h" 36 #include <boost/noncopyable.hpp> 45 class GeometryCollection;
47 class MultiLineString;
92 class Canvas :
public boost::noncopyable
124 virtual void setWindow(
const double& llx,
const double& lly,
125 const double& urx,
const double& ury) = 0;
139 virtual void calcAspectRatio(
double& llx,
double& lly,
double& urx,
double& ury,
175 virtual void clear() = 0;
183 virtual void resize(
int w,
int h) = 0;
190 virtual int getWidth()
const = 0;
197 virtual int getHeight()
const = 0;
284 virtual void save(
const char* fileName,
ImageType t,
int quality = 75,
int fg = 0)
const = 0;
298 virtual char* getImage(
ImageType t, std::size_t& size,
int quality = 75,
int fg = 0)
const = 0;
307 virtual te::color::RGBAColor** getImage(
const int x = 0,
const int y = 0,
const int w = 0,
const int h = 0)
const = 0;
314 virtual void freeImage(
char* img)
const = 0;
323 virtual void drawImage(
char* src, std::size_t size,
ImageType t) = 0;
343 virtual void drawImage(
int x,
int y,
char* src, std::size_t size,
ImageType t) = 0;
367 virtual void drawImage(
int x,
int y,
int w,
int h,
char* src, std::size_t size,
ImageType t) = 0;
380 virtual void drawImage(
int x,
int y,
int w,
int h,
te::color::RGBAColor** src,
int srcw,
int srch) = 0;
397 virtual void drawImage(
int x,
int y,
int w,
int h,
char* src, std::size_t size,
ImageType t,
int sx,
int sy,
int sw,
int sh) = 0;
412 virtual void drawImage(
int x,
int y,
int w,
int h,
te::color::RGBAColor** src,
int sx,
int sy,
int sw,
int sh) = 0;
440 virtual void drawImage(
int x,
int y,
int w,
int h,
te::rst::Raster* src,
int sx,
int sy,
int sw,
int sh,
int opacity =
TE_OPAQUE) = 0;
455 virtual void drawPixel(
int x,
int y) = 0;
492 virtual void drawText(
int x,
int y,
493 const std::string& txt,
510 const std::string& txt,
527 virtual void drawText(
const double& x,
const double& y,
528 const std::string& txt,
558 const std::string& txt,
579 const std::string& txt,
600 virtual te::gm::Polygon* getTextBoundary(
const double& x,
const double& y,
601 const std::string& txt,
625 virtual void setTextOpacity(
int opacity) = 0;
632 virtual void setFontFamily(
const std::string& family) = 0;
639 virtual void setTextPointSize(
double size) = 0;
660 virtual void setTextStretch(std::size_t stretch) = 0;
667 virtual void setTextUnderline(
bool b) = 0;
674 virtual void setTextOverline(
bool b) = 0;
681 virtual void setTextStrikeOut(
bool b) = 0;
695 virtual void setTextDecorationWidth(
int width) = 0;
709 virtual void setTextContourEnabled(
bool b) = 0;
716 virtual void setTextContourOpacity(
int opacity) = 0;
723 virtual void setTextContourWidth(
int width) = 0;
737 virtual void setTextMultiLineSpacing(
int spacing) = 0;
754 virtual void setPointWidth(
int w) = 0;
774 virtual void setPointPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
781 virtual void setPointPatternRotation(
const double& angle) = 0;
788 virtual void setPointPatternOpacity(
int opacity) = 0;
817 virtual void setLinePattern(
char* pattern, std::size_t size,
ImageType t) = 0;
824 virtual void setLinePatternRotation(
const double& angle) = 0;
831 virtual void setLinePatternOpacity(
int opacity) = 0;
838 virtual void setLineWidth(
int w) = 0;
855 virtual void setLineDashStyle(
const std::vector<double>& style) = 0;
903 virtual void setPolygonFillPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
910 virtual void setPolygonPatternWidth(
int w) = 0;
917 virtual void setPolygonPatternRotation(
const double& angle) = 0;
924 virtual void setPolygonPatternOpacity(
int opacity) = 0;
935 virtual void setPolygonContourPattern(
te::color::RGBAColor** pattern,
int ncols,
int nrows) = 0;
944 virtual void setPolygonContourPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
951 virtual void setPolygonContourWidth(
int w) = 0;
958 virtual void setPolygonContourPatternRotation(
const double& angle) = 0;
965 virtual void setPolygonContourPatternOpacity(
int opacity) = 0;
972 virtual void setPolygonContourDashStyle(
LineDashStyle style) = 0;
982 virtual void setPolygonContourDashStyle(
const std::vector<double>& style) = 0;
989 virtual void setPolygonContourCapStyle(
LineCapStyle style) = 0;
996 virtual void setPolygonContourJoinStyle(
LineJoinStyle style) = 0;
1001 virtual void setEraseMode() = 0;
1006 virtual void setNormalMode() = 0;
1014 #endif // __TERRALIB_MAPTOOLS_INTERNAL_CANVAS_H ImageType
This enum specifies the possible input and output image formats supported by the canvas API...
MultiPolygon is a MultiSurface whose elements are Polygons.
FontWeight
Font weight for drawing text.
LineJustification
Line justification for drawing multi line text.
FontStyle
Font style for drawing text.
A Text may contain 1 or more Text Elements.
Several enumerations related to Annotation Text.
AlignType
This enum contains values to control the alignment of components (like Canvas and MapDisplay)...
LineCapStyle
This enum encodes enumerated values telling how line strings should be capped (at the two ends of the...
MultiPoint is a GeometryCollection whose elements are restricted to points.
LineString is a curve with linear interpolation between points.
HorizontalAlignment
Horizontal alignment for drawing text.
A point with x and y coordinate values.
An Envelope defines a 2D rectangular region.
An abstract class for raster data strucutures.
#define TE_OPAQUE
For an RGBA color this is the value of the alpha-channel for totally opaque.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
MultiLineString is a MultiCurve whose elements are LineStrings.
A canvas is an abstraction of a drawing area.
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
LineDashStyle
This enum encodes enumerated values telling how lines should be drawn. e.g. as a plain line or dash l...
LineJoinStyle
This enum encodes enumerated values telling how line strings should be joined (between line segments)...
VerticalAlignment
Vertical alignment for drawing text.
MultiSurface is a class that represents a 2-dimensional GeometryCollection whose elements are surface...
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
It is a collection of other geometric objects.
virtual ~Canvas()
Virtual destructor.