summaryrefslogtreecommitdiffstats
path: root/src/bltGrMarkerPolygon.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/bltGrMarkerPolygon.C')
-rw-r--r--src/bltGrMarkerPolygon.C73
1 files changed, 35 insertions, 38 deletions
diff --git a/src/bltGrMarkerPolygon.C b/src/bltGrMarkerPolygon.C
index 45184ae..3a41615 100644
--- a/src/bltGrMarkerPolygon.C
+++ b/src/bltGrMarkerPolygon.C
@@ -95,7 +95,6 @@ static Tk_OptionSpec optionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
-static MarkerDrawProc DrawPolygonProc;
static MarkerMapProc MapPolygonProc;
static MarkerPointProc PointInPolygonProc;
static MarkerPostscriptProc PolygonToPostscriptProc;
@@ -103,7 +102,6 @@ static MarkerRegionProc RegionInPolygonProc;
static MarkerClass polygonMarkerClass = {
optionSpecs,
- DrawPolygonProc,
MapPolygonProc,
PointInPolygonProc,
RegionInPolygonProc,
@@ -145,7 +143,7 @@ PolygonMarker::~PolygonMarker()
free(screenPts);
}
-int PolygonMarker::Configure()
+int PolygonMarker::configure()
{
Graph* graphPtr = obj.graphPtr;
PolygonMarkerOptions* opp = (PolygonMarkerOptions*)ops;
@@ -186,7 +184,7 @@ int PolygonMarker::Configure()
}
gcValues.foreground ^= pixel;
if (drawable != None) {
- DrawPolygonProc(this, drawable);
+ draw(drawable);
}
}
newGC = Blt_GetPrivateGC(graphPtr->tkwin, gcMask, &gcValues);
@@ -222,7 +220,7 @@ int PolygonMarker::Configure()
if ((gcMask == 0) && !(graphPtr->flags & RESET_AXES) && (opp->xorr)) {
if (drawable != None) {
MapPolygonProc(this);
- DrawPolygonProc(this, drawable);
+ draw(drawable);
}
return TCL_OK;
}
@@ -230,6 +228,38 @@ int PolygonMarker::Configure()
return TCL_OK;
}
+void PolygonMarker::draw(Drawable drawable)
+{
+ Graph* graphPtr = obj.graphPtr;
+ PolygonMarkerOptions* opp = (PolygonMarkerOptions*)ops;
+
+ // fill region
+ if ((nFillPts > 0) && (opp->fill)) {
+ XPoint* points = (XPoint*)malloc(nFillPts * sizeof(XPoint));
+ if (!points)
+ return;
+
+ XPoint* dp = points;
+ Point2d *sp, *send;
+ for (sp = fillPts, send = sp + nFillPts; sp < send; sp++) {
+ dp->x = (short int)sp->x;
+ dp->y = (short int)sp->y;
+ dp++;
+ }
+
+ XFillPolygon(graphPtr->display, drawable, fillGC, points,
+ nFillPts, Complex, CoordModeOrigin);
+ free(points);
+ }
+
+ // outline
+ if ((nOutlinePts > 0) && (opp->lineWidth > 0) &&
+ (opp->outline)) {
+ Blt_Draw2DSegments(graphPtr->display, drawable, outlineGC,
+ outlinePts, nOutlinePts);
+ }
+}
+
static int PointInPolygonProc(Marker* markerPtr, Point2d *samplePtr)
{
PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
@@ -259,39 +289,6 @@ static int RegionInPolygonProc(Marker* markerPtr, Region2d *extsPtr,
return FALSE;
}
-static void DrawPolygonProc(Marker* markerPtr, Drawable drawable)
-{
- Graph* graphPtr = markerPtr->obj.graphPtr;
- PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
- PolygonMarkerOptions* ops = (PolygonMarkerOptions*)pmPtr->ops;
-
- /* Draw polygon fill region */
- if ((pmPtr->nFillPts > 0) && (ops->fill)) {
- XPoint* points = (XPoint*)malloc(pmPtr->nFillPts * sizeof(XPoint));
- if (!points)
- return;
-
- XPoint* dp = points;
- Point2d *sp, *send;
- for (sp = pmPtr->fillPts, send = sp + pmPtr->nFillPts; sp < send;
- sp++) {
- dp->x = (short int)sp->x;
- dp->y = (short int)sp->y;
- dp++;
- }
-
- XFillPolygon(graphPtr->display, drawable, pmPtr->fillGC, points,
- pmPtr->nFillPts, Complex, CoordModeOrigin);
- free(points);
- }
- /* and then the outline */
- if ((pmPtr->nOutlinePts > 0) && (ops->lineWidth > 0) &&
- (ops->outline)) {
- Blt_Draw2DSegments(graphPtr->display, drawable, pmPtr->outlineGC,
- pmPtr->outlinePts, pmPtr->nOutlinePts);
- }
-}
-
static void PolygonToPostscriptProc(Marker* markerPtr, Blt_Ps ps)
{
Graph* graphPtr = markerPtr->obj.graphPtr;