ET++: Device-dependent Port Primitives

Port uses the Bridge pattern to separate the implementation of its drawing primitives from their interface. The methods below are called by instances of Port to do low-level drawing; they cannot be called by the application programmer. For a specific example of the implementation of one of these methods, see DevStrokeLine Examples.


class Port : public Object {

	[ ... ]

protected:

	//---- device dependent primitives
	virtual void DevClip(const Rectangle&);
	virtual bool DevScale(float sx, float sy);
	virtual void DevSetPattern(Bitmap*);
	virtual void DevSetColor(RGBColor*);
	virtual void DevSetOther(int);
	virtual void DevSetGrey(float);
	virtual void DevStrokeLine(int, const Rectangle&, GrLineCap, const Point&,
		const Point&);
	virtual void DevStrokeRect(int, const Rectangle&);
	virtual void DevFillRect(const Rectangle&);
	virtual void DevStrokeOval(int, const Rectangle&);
	virtual void DevFillOval(const Rectangle&);
	virtual void DevStrokeRRect(int, const Rectangle&, const Point&);
	virtual void DevFillRRect(const Rectangle&, const Point&);
	virtual void DevStrokeWedge(int, GrLineCap, const Rectangle&, int, int);
	virtual void DevFillWedge(const Rectangle&, int, int);
	virtual void DevStrokePolygon(const Rectangle&, Point*, int, GrPolyType t,
									int, GrLineCap);
	virtual void DevFillPolygon(const Rectangle&, Point*, int, GrPolyType t);
	virtual void DevShowBitmap(const Rectangle&, Bitmap*);
	virtual void DevShowPicture(const Rectangle&, Picture *pic);
	virtual void DevShowChar(Font*, const Point&, Rune, const Rectangle&);
	virtual void DevShowTextBatch(const Rectangle&, const Point&);
	virtual void DevGiveHint(int code, int len, void *vp);
	virtual GrCursor SetCursor(GrCursor c);
	virtual GrCursor SetWaitCursor(unsigned int d= 400, GrCursor c= eCrsHourglass);
	virtual GrCursor GetCursor();
	virtual bool DevImageCacheBegin(ImageCache *bb, const Rectangle &r);
	virtual void DevImageCacheEnd(ImageCache *bb);

	virtual void DevStrokeRect2(int, const Rectangle&);
	virtual void DevStrokeRRect2(int, const Rectangle&, const Point&);
	virtual void DevFillRRect2(const Rectangle&, const Point&);
	virtual void DevStrokeOval2(int, const Rectangle&);
	virtual void DevFillOval2(const Rectangle&);
	virtual void DevStrokeLine2(int, const Rectangle&, GrLineCap, const Point&,
				const Point&);
	virtual void DevStrokeWedge2(int, GrLineCap, const Rectangle&, int, int);
	virtual void DevFillWedge2(const Rectangle&, int, int);
	virtual void DevStrokePolygon2(const Rectangle&, Point*, int, GrPolyType,
				int, GrLineCap);
	virtual void DevFillPolygon2(const Rectangle&, Point*, int, GrPolyType);
	virtual Point DevDrawArrow(int, const Point&, const Point&);
}

Back to the graphical layout description

Back to the main ET++ page