26 #ifndef __TERRALIB_MAPTOOLS_INTERNAL_CANVAS_H 27 #define __TERRALIB_MAPTOOLS_INTERNAL_CANVAS_H 30 #include "../color/RGBAColor.h" 31 #include "../se/Font.h" 36 #include <boost/noncopyable.hpp> 50 class GeometryCollection;
52 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;
494 virtual void drawText(
int x,
int y,
495 const std::string& txt,
497 double anchorX = 0.5,
double anchorY = 0.5,
498 int displacementX = 0,
int displacementY = 0) = 0;
514 const std::string& txt,
516 double anchorX = 0.5,
double anchorY = 0.5,
517 int displacementX = 0,
int displacementY = 0) = 0;
533 virtual void drawText(
const double& x,
const double& y,
534 const std::string& txt,
536 double anchorX = 0.5,
double anchorY = 0.5,
537 int displacementX = 0,
int displacementY = 0) = 0;
558 const std::string& txt,
560 double anchorX = 0.5,
double anchorY = 0.5,
561 int displacementX = 0,
int displacementY = 0) = 0;
581 const std::string& txt,
583 double anchorX = 0.5,
double anchorY = 0.5,
584 int displacementX = 0,
int displacementY = 0) = 0;
604 virtual te::gm::Polygon* getTextBoundary(
const double& x,
const double& y,
605 const std::string& txt,
607 double anchorX = 0.5,
double anchorY = 0.5,
608 int displacementX = 0,
int displacementY = 0) = 0;
629 virtual void setTextOpacity(
int opacity) = 0;
636 virtual void setFontFamily(
const std::string& family) = 0;
643 virtual void setTextPointSize(
double size) = 0;
664 virtual void setTextStretch(std::size_t stretch) = 0;
671 virtual void setTextUnderline(
bool b) = 0;
678 virtual void setTextOverline(
bool b) = 0;
685 virtual void setTextStrikeOut(
bool b) = 0;
699 virtual void setTextDecorationWidth(
int width) = 0;
713 virtual void setTextContourEnabled(
bool b) = 0;
720 virtual void setTextContourOpacity(
int opacity) = 0;
727 virtual void setTextContourWidth(
int width) = 0;
734 virtual void setTextJustification(
int justType) = 0;
741 virtual void setTextMultiLineSpacing(
int spacing) = 0;
758 virtual void setPointWidth(
int w) = 0;
778 virtual void setPointPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
785 virtual void setPointPatternRotation(
const double& angle) = 0;
792 virtual void setPointPatternOpacity(
int opacity) = 0;
821 virtual void setLinePattern(
char* pattern, std::size_t size,
ImageType t) = 0;
828 virtual void setLinePatternRotation(
const double& angle) = 0;
835 virtual void setLinePatternOpacity(
int opacity) = 0;
842 virtual void setLineWidth(
int w) = 0;
859 virtual void setLineDashStyle(
const std::vector<double>& style) = 0;
907 virtual void setPolygonFillPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
914 virtual void setPolygonPatternWidth(
int w) = 0;
921 virtual void setPolygonPatternRotation(
const double& angle) = 0;
928 virtual void setPolygonPatternOpacity(
int opacity) = 0;
939 virtual void setPolygonContourPattern(
te::color::RGBAColor** pattern,
int ncols,
int nrows) = 0;
948 virtual void setPolygonContourPattern(
char* pattern, std::size_t size,
ImageType t) = 0;
955 virtual void setPolygonContourWidth(
int w) = 0;
962 virtual void setPolygonContourPatternRotation(
const double& angle) = 0;
969 virtual void setPolygonContourPatternOpacity(
int opacity) = 0;
976 virtual void setPolygonContourDashStyle(
LineDashStyle style) = 0;
986 virtual void setPolygonContourDashStyle(
const std::vector<double>& style) = 0;
993 virtual void setPolygonContourCapStyle(
LineCapStyle style) = 0;
1000 virtual void setPolygonContourJoinStyle(
LineJoinStyle style) = 0;
1005 virtual void setEraseMode() = 0;
1010 virtual void setNormalMode() = 0;
1018 #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.
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.
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.
FontStyleType
It defines the style to use for a font.
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)...
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.
FontWeightType
It gives the amount of weight or boldness to use for a font.
It is a collection of other geometric objects.
virtual ~Canvas()
Virtual destructor.