25 #include <wx/wfstream.h>
36 EVT_MOUSE_EVENTS( a2dRecursiveEditTool::OnMouseEvent )
37 EVT_IDLE( a2dRecursiveEditTool::OnIdle )
38 EVT_CHAR( a2dRecursiveEditTool::OnChar )
39 EVT_UNDO( a2dRecursiveEditTool::OnUndoEvent )
40 EVT_REDO( a2dRecursiveEditTool::OnRedoEvent )
41 EVT_KEY_UP( a2dRecursiveEditTool::OnKeyUp )
44 a2dRecursiveEditTool::a2dRecursiveEditTool(
a2dStToolContr* controller,
a2dIterC& ic,
int editmode,
bool SingleClickToEnd )
77 if ( event.Dragging() )
81 else if ( event.Moving() && !
GetBusy() )
91 if ( event.LeftDClick() )
98 else if ( event.LeftDown() && !
GetBusy() )
114 else if ( event.LeftDown() &&
GetBusy() )
138 if ( !neweditobject )
189 else if ( event.LeftUp() &&
GetBusy() )
206 void a2dRecursiveEditTool::OnComEvent(
a2dComEvent& event )
227 corridor.push_back( newtop );
310 m_canvasobject = object;
314 a2dCommand_AddObjectToGroup::~a2dCommand_AddObjectToGroup(
void )
320 m_tool->AddToGroup( m_canvasobject );
326 m_tool->RemoveFromGroup( m_canvasobject, 0 );
336 m_canvasobject = object;
342 a2dCommand_ReleaseObjectFromGroup::~a2dCommand_ReleaseObjectFromGroup(
void )
348 m_tool->RemoveFromGroup( m_canvasobject, m_index );
358 m_tool->AddToGroup( m_canvasobject );
373 DECLARE_EVENT_TABLE()
460 bool __includeChildren__ = PROPID_IncludeChildren->
GetPropertyValue(
this );
462 if ( __includeChildren__ )
467 double xmin, ymin, xmax, ymax, w, h;
476 double x1, y1, x2, y2;
482 if ( restrictEngine )
499 if ( obj->GetBin2() )
512 if ( restrictEngine )
516 if ( draghandle->
GetName() == wxT(
"handle1" ) )
526 sx = ( w - dx / 2 ) / w;
530 sy = ( h - dy / 2 ) / h;
543 else if ( draghandle->
GetName() == wxT(
"handle2" ) )
553 sx = ( w - dx / 2 ) / w;
557 sy = ( h + dy / 2 ) / h;
570 else if ( draghandle->
GetName() == wxT(
"handle3" ) )
580 sx = ( w + dx / 2 ) / w;
584 sy = ( h + dy / 2 ) / h;
597 else if ( draghandle->
GetName() == wxT(
"handle4" ) )
607 sx = ( w + dx / 2 ) / w;
611 sy = ( h - dy / 2 ) / h;
624 else if ( draghandle->
GetName() == wxT(
"rotate" ) )
647 else if ( draghandle->
GetName() == wxT(
"skewx" ) )
652 dx = xwi - ( xmin + w * 3 / 4 );
653 dy = ywi - ( ymin + h / 2 );
664 else if ( draghandle->
GetName() == wxT(
"skewy" ) )
669 dx = xwi - ( xmin + w / 2 );
670 dy = ywi - ( ymin + h * 3 / 4 );
681 else if ( draghandle->
GetName() == wxT(
"handle12" ) )
690 sx = ( w - dx / 2 ) / w;
703 else if ( draghandle->
GetName() == wxT(
"handle23" ) )
712 sy = ( h + dy / 2 ) / h;
725 else if ( draghandle->
GetName() == wxT(
"handle34" ) )
734 sx = ( w + dx / 2 ) / w;
747 else if ( draghandle->
GetName() == wxT(
"handle41" ) )
756 sy = ( h - dy / 2 ) / h;
786 a2dCanvasObjectMouseEvent popup( ic,
this, wxEVT_CANVASOBJECT_POPUPMENU_EVENT, event.GetX(), event.GetY(), event.m_mouseevent );
787 popup.SetEventObject(
this );
789 if ( !this->ProcessEvent( popup ) )
800 static double xshift;
801 static double yshift;
828 if ( restrictEngine )
882 if ( obj->GetBin2() )
950 editcopy->SetEditingRender(
true );
966 if ( !editcopy->
DoStartEdit( editmode, editstyle ) )
985 EVT_MOUSE_EVENTS( a2dMultiEditTool::OnMouseEvent )
986 EVT_IDLE( a2dMultiEditTool::OnIdle )
987 EVT_CHAR( a2dMultiEditTool::OnChar )
988 EVT_UNDO( a2dMultiEditTool::OnUndoEvent )
989 EVT_REDO( a2dMultiEditTool::OnRedoEvent )
994 GetDrawingPart()->SetMouseEvents(
false );
999 a2dMultiEditTool::~a2dMultiEditTool()
1035 bool a2dMultiEditTool::RemoveFromGroup(
a2dCanvasObject* canvasobject,
int index )
1045 void a2dMultiEditTool::OnMouseEvent( wxMouseEvent& event )
1062 if ( event.Moving() && !
GetBusy() )
1071 if ( event.LeftDown() && !
GetBusy() )
1086 RedirectToEditObject( event );
1089 else if ( event.LeftDown() &&
GetBusy() )
1104 if ( !event.m_shiftDown )
1106 RedirectToEditObject( event );
1129 RedirectToEditObject( event );
1138 if ( event.m_shiftDown )
1153 else if ( event.LeftDClick() &&
GetBusy() )
1162 if ( event.RightDown() )
1165 RedirectToEditObject( event );
1173 bool a2dMultiEditTool::RedirectToEditObject( wxMouseEvent& event )
1179 bool processed =
false;
1211 bool a2dMultiEditTool::StartEditingSelected()
1228 bool a2dMultiEditTool::EditStart()
1282 void a2dMultiEditTool::OnIdle( wxIdleEvent& event )
1296 void a2dMultiEditTool::OnChar( wxKeyEvent& event )
1301 void a2dMultiEditTool::OnComEvent(
a2dComEvent& event )
1345 OnUndoEvent( event );
1361 const
a2dCommandId a2dObjectEditTool::COMID_PushTool_ObjectEdit( wxT( "PushTool_ObjectEdit" ) );
1363 BEGIN_EVENT_TABLE( a2dObjectEditTool,
a2dStTool )
1365 EVT_MOUSE_EVENTS( a2dObjectEditTool::OnMouseEvent )
1366 EVT_IDLE( a2dObjectEditTool::OnIdle )
1367 EVT_CHAR( a2dObjectEditTool::OnChar )
1368 EVT_UNDO( a2dObjectEditTool::OnUndoEvent )
1369 EVT_REDO( a2dObjectEditTool::OnRedoEvent )
1371 EVT_KEY_UP( a2dObjectEditTool::OnKeyUp )
1372 EVT_KEY_DOWN( a2dObjectEditTool::OnKeyDown )
1380 GetDrawingPart()->SetMouseEvents(
false );
1385 m_triggerRestart =
false;
1387 m_SingleClickToEnd = SingleClickToEnd;
1389 m_disableOtherViews =
false;
1393 SetContext( ic, NULL );
1416 m_triggerRestart =
false;
1420 m_disableOtherViews =
false;
1449 wxLogWarning( _T(
"You may not edit this drawing" ) );
1462 if ( !ret || !objectToEdit || ( objectToEdit && !
m_canvasobject ) )
1464 wxMessageBox( _(
"wanted object can not be edited" ), _(
"Editing Component" ), wxOK );
1552 wxASSERT_MSG( 0, _(
"m_renderEditcopy is not yet implemented, m_renderEditcopyOnTop used instead" ) );
1583 void a2dObjectEditTool::OnMouseEvent( wxMouseEvent& event )
1600 if ( event.Dragging() )
1605 if ( event.LeftDClick() )
1612 else if ( event.LeftDown() &&
GetBusy() )
1633 else if ( event.LeftUp() &&
GetBusy() )
1658 bool processed =
false;
1678 wxString state, form;
1683 SetStateString( state, 10 );
1689 SetStateString( state, 11 );
1754 GetCanvasDocument()->SetUpdatesPending(
false );
1756 GetCanvasDocument()->SetIgnorePendingObjects(
true );
1767 PrepareForRewire( dragList,
true,
false,
false,
false, &refs );
1769 PrepareForRewire( dragList,
true,
false,
false,
true, &refs );
1825 GetCanvasDocument()->SetIgnorePendingObjects(
false );
1881 m_triggerRestart =
true;
1884 void a2dObjectEditTool::OnIdle( wxIdleEvent& event )
1891 m_triggerRestart =
false;
1912 void a2dObjectEditTool::OnKeyDown( wxKeyEvent& event )
1916 switch( event.GetKeyCode() )
1933 void a2dObjectEditTool::OnKeyUp( wxKeyEvent& event )
1937 switch( event.GetKeyCode() )
1961 void a2dObjectEditTool::OnChar( wxKeyEvent& event )
1965 switch( event.GetKeyCode() )
1969 if ( event.m_shiftDown )
1980 bool processed =
false;
1994 switch( event.GetKeyCode() )
2022 event.Skip(
false );
2026 event.Skip(
false );
2043 void a2dObjectEditTool::OnComEvent(
a2dComEvent& event )
2106 a2dText* textorg = cmd->GetTextObject();
2127 OnUndoEvent( event );
static const a2dCanvasObjectFlagsMask SELECTED2
wxPoint2DDouble a2dPoint2D
this to define if coordinate numbers are integer or doubles
void OnHandleEvent(a2dHandleMouseEvent &event)
called if a mouse event occured on a child object, that is a handle
double GetHeight() const
returns height of the boundingbox
virtual bool Undo()=0
Override this to undo a command.
#define wxDynamicCast(obj, className)
Define wxDynamicCast so that it will give a compiler error for unrelated types.
virtual a2dCanvasObject * StartEdit(a2dBaseTool *tool, wxUint16 editmode, wxEditStyle editstyle=wxEDITSTYLE_COPY, a2dRefMap *refs=NULL)
create an editcopy and initialize editing of the editcopy
Base class for all types of strokes, understood by a2dDrawer2D classes.
a2dHandle is used inside editing versions of a certain objects.
bool GetEditable() const
get if the object may be edited
mouse event sent from a2dCanvasObject to itself
void SetDrawStyle(a2dDrawStyle drawstyle)
set drawstyle to use for drawing,
const a2dAffineMatrix & GetTransformMatrix() const
get the matrix used to position the object
virtual a2dObject * DoClone(CloneOptions options, a2dRefMap *refs) const
Clone this object and return a pointer to the new object.
bool m_editing
true if the object is currently being edited
if set, set in the clone the PROPID_Original property to the copied object
void OnCanvasObjectMouseEvent(a2dCanvasObjectMouseEvent &event)
default handler for mouse events, sent to the object from the a2dDrawingPart.
class to map references to objects stored in XML, in order to make the connection later on...
virtual a2dCanvasObject * StartEdit(a2dBaseTool *tool, wxUint16 editmode, wxEditStyle editstyle=wxEDITSTYLE_COPY, a2dRefMap *refs=NULL)
create an editcopy and initialize editing of the editcopy
a2dDrawing * m_root
root group for rendering and accessing the canvas's also contains layer settings
a2dCanvasOFlags m_flags
holds flags for objects
a2dCommand * GetCommand()
the command ( if there was one ) that did it.
virtual bool Do()=0
Override this to perform a command.
const a2dAffineMatrix & GetInverseTransform() const
Inverse of GetTransform()
virtual bool AdjustPinLocation()
Allow change in pin location when wiring things up.
void SetSelected2(bool selected)
Set the object selected2 flag if allowed.
bool GetPending() const
is this object pending for update?
void SetTransformMatrix(const a2dAffineMatrix &mat=a2dIDENTITY_MATRIX)
Returns the matrix used to position the object.
bool Rotate(double angle)
Rotate clockwise by the given number of degrees:
#define EVT_DO(func)
event sent from a2DocumentCommandProcessor when a command is initially done
a2dCanvasObject * GetCaptured() const
are events redirected to a captured corridor? if so return the captured object in it...
double GetBboxMinY()
get minimum Y of the boundingbox in world coordinates relative to its parents
wxUint16 GetHitMarginDevice() const
hit marging in pixels.
virtual bool Update(UpdateMode mode)
Update the state of the object according to its current position etc.
virtual bool RestrictCanvasObjectAtVertexes(a2dCanvasObject *object, a2dPoint2D &point, double &dx, double &dy, wxUint32 sourceRequired=snapToAll, bool ignoreEngine=false)
return the clossest vertex which can be snapped if any.
void ConnectEvent(wxEventType type, wxEvtHandler *eventSink)
#define EVT_CANVASHANDLE_MOUSE_EVENT(func)
static event table macro for a2dHandle mouse event
void Update(unsigned int how=(a2dCANVIEW_UPDATE_ALL|a2dCANVIEW_UPDATE_BLIT), wxObject *hintObject=NULL)
see OnUpdate
a command processor specially designed to work with a a2dCanvasDocument
virtual void SetPending(bool pending)
set this object pending for update
#define EVT_REDO(func)
event sent from a2DocumentCommandProcessor when a command is redone
OVERLAP
Result of a a2dBoundingBox intersection or hittest.
void OnCanvasObjectMouseEvent(a2dCanvasObjectMouseEvent &event)
void SetDocumentDrawStyle(wxUint32 drawstyle)
set drawstyles to use for drawing the document
double GetBboxMinX()
get minimum X of the boundingbox in world coordinates relative to its parents
bool GetFlag(const a2dCanvasObjectFlagsMask which) const
get specific bitflag value
a2dCanvasObject is the base class for Canvas Objects.
used to add object to a a2dCanvasDocument in the current parent
void SetFixedStyleStroke(const a2dStroke &fixStroke)
set a2dStroke to use when RenderFIX_STYLE is set.
a2dCanvas * GetCanvas() const
Get the Display window of the a2dView. But casted to a a2dCanvas.
virtual a2dObject * GetRefObject() const
when a2dProperty, return its value else assert
void ReStartEdit(wxUint16 editmode)
to restart editing in a different mode
a2dCanvasObjectList * GetChildObjectList()
get the list where the child objects are stored in.
void TransformPoint(double x, double y, double &tx, double &ty) const
Transform a point.
double GetRotation() const
return rotation
wxString GetName() const
get the name given to the handle.
virtual void EndEdit()
cleanup an editcopy object
static const a2dSignal sig_toolComEventSetEditObject
bool GetSelected() const
is the object selected flag set
return to contain edit bbox, suitable for editing matrix of object
void SetSelected(bool selected)
Set the object selected flag if allowed.
double GetBboxWidth()
get width of the boundingbox in world coordinates relative to its parents
static const a2dCommandId Id
used to release object from a a2dCanvasDocument in the current parent
int ReleaseChild(a2dCanvasObject *obj, bool backwards=false, bool all=false, bool now=false, bool undoCommands=false)
remove the given object from the childobjects
static a2dPropertyIdBool * PROPID_FirstEventInObject
set in Startedit(), to be used to detect first (mouse)event sent to object.
a2dAffineMatrix m_lworld
used for positioning the object (x,y,ang,scale etc.)
static a2dPropertyIdRefObject * PROPID_ViewSpecific
bool Do()
Override this to perform a command.
const a2dAffineMatrix & GetInverseTransform() const
Inverse of GetTransform()
~a2dMultiSelectGroup()
destructor
bool Undo()
Override this to undo a command.
wxMouseEvent & GetMouseEvent()
return the original mouse event that was redirected to the a2dHandle
a2dCommandGroup * GetCurrentGroup() const
return current group
a2dText is an abstract base class.
used to change a property on objects
double DeviceToWorldY(double y) const
convert y from device to world coordinates
static const a2dCanvasObjectFlagsMask HighLight
virtual a2dBoundingBox GetUnTransformedBbox(a2dBboxFlags flags=a2dCANOBJ_BBOX_CHILDREN) const
Get boundingbox without the affine matrix transform included.
double GetMinX() const
get minimum X of the boundingbox
a2dCanvasObjectList * m_childobjects
holds child objects
static const a2dSignal sig_changedShowObject
void Transform(const a2dAffineMatrix &tworld)
transform the object using the given matrix
#define forEachIn(listtype, list)
easy iteration for a2dlist
void SetPropertyToObject(a2dObject *obj, const basetype &value, SetFlags setflags=set_none) const
Set the property in obj to value.
a2dHandle * GetHandle()
get default handle for editing
double GetPosX() const
get x position from affine matrix
#define EVT_COM_EVENT(func)
static wxEvtHandler for communication event
void SetFixedStyleFill(const a2dFill &fixFill)
set a2dFill to use when RenderFIX_STYLE is set.
void SkewY(double angle)
Skew in Y.
const a2dCommandId * GetCommandId()
a specific id for this command.
a2dRecursiveEditTool holds multiple edit object in here
const a2dError a2dError_canvasObjectRelease
a2dDrawer2D * GetDrawer2D() const
get current a2dDrawer2D
#define wxStaticCast(obj, className)
The wxWindows 2.4.2 wxStaticCast is buggy. It evaluates its argument twice.
void SetCorridorPathCaptureObject(a2dCanvasObject *captureObject)
bool m_editable
object can be edited
static const a2dCommandId Id
used to add object to a a2dCanvasDocument in the current parent
double wxRadToDeg(double rad)
conversion from radians to degrees
void SkewX(double angle)
Skew in X.
void SetSpecificFlags(bool setOrClear, a2dCanvasObjectFlagsMask which)
set all bit flags in object that or true in mask to true or false
#define EVT_CANVASOBJECT_MOUSE_EVENT(func)
static event table macro for a2dCanvasObject mouse event
void SetMouseEvents(bool onoff)
If not set do not process mouse events.
void SetPerLayerMode(bool value)
if set the rendering is done layers by layer from the top
A2DGENERALDLLEXP a2dSmrtPtr< a2dGeneralGlobal > a2dGeneralGlobals
a global pointer to get to global instance of important classes.
void Translate(double x, double y)
relative translate the object to position x,y in world coordinates
general event sent from a2dHandle to its parent a2dCanvasObject
Restriction engine for editing restrictions like snapping.
a2dMultiSelectGroup()
constructor
a2dDrawer2D * GetDrawer2D()
get the internal m_drawer2D that is used for rendering the document
if set, respect layer order, hit testing is done per layer from the top.
static const a2dCanvasObjectFlagsMask SELECTED
a2dHandle * GetCanvasHandle()
return the handle object hit
static const a2dCanvasObjectFlagsMask Editing
Each a2dCommand is given a command id at construction.
virtual bool Submit(a2dCommand *command, bool storeIt=true)
next to the base class submit, it sets a2DocumentCommandProcessor for a2dCommand
corridor as a direct event path to a a2dCanvasObject
a2dCanvasObject * ChildIsHitWorld(a2dIterC &ic, a2dHitEvent &hitEvent, bool filterSelectableLayers=false)
Do hittest on children.
void SetVisible(bool visible)
set if this object will visible (be rendered or not)
virtual bool DoStartEdit(wxUint16 editmode, wxEditStyle editstyle)
only used for editable objects and under control of a editing tool.
void SetSnapTo(bool snap)
Sets snap_to flag.
A 2x3 affine matrix class for 2D transformations.
wxMouseEvent & GetMouseEvent()
return the original mouse event that was redirected to the a2dCanvasObject
double GetMaxX() const
get maximum X of the boundingbox
bool DoConnect()
if return true, connection with other object on this object its pins is allowed.
if set, set in the clone the PROPID_editcopy property to the original object
double GetPosY() const
get y position from affine matrix
while iterating a a2dCanvasDocument, this holds the context.
All updates of these modes force an update (e.g. update non-pending valid bounding boxes) ...
a2dCommandProcessor * GetCommandProcessor() const
Returns a pointer to the command processor associated with this document.
a2dConnectionGenerator * GetConnectionGenerator() const
Get class for generating new connection objects between object and pins.
virtual bool Submit(a2dCommand *command, bool storeIt=true)
bool ClearCommandsById(const a2dCommandId &commandId, a2dCommand *fromcommand=NULL)
erase commands with a certain id, starting at fromcommand
void Scale(double scalex, double scaley)
Scale in x and y ( > zero)
bool Do()
Override this to perform a command.
a2dRestrictionEngine * GetRestrictionEngine()
Get restriction engine (grid snapping)
void SetText(const wxString &text)
set the text for the object ' ' in string means new line
double GetUnitsScale()
this is the number that defines the physical dimension in meters / inch/ etc.
editing tool for a2dCanvasObject's
double DeviceToWorldX(double x) const
convert x from device to world coordinates
virtual void UpdateCrossHair(int x, int y)
blit old areas to remove last drawn crosshair and draw the cross hair at this new position...
bool IsDraggable() const
get if the object can be dragged
double GetMaxY() const
get maximum Y of the boundingbox
double GetWidth() const
returns width of the boundingbox
An object of this class will update a a2dIterC with the required information.
int GetCaret() const
Get position of caret (-1 means off)
virtual a2dObject * DoClone(CloneOptions options, a2dRefMap *refs) const
Clone this object and return a pointer to the new object.
return to contain children bbox
void SetPosXY(double x, double y, bool restrict=false)
set position to x,y
a2dCanvasObject * IsHitWorld(double x, double y, int layer=wxLAYER_ALL, a2dHitOption option=a2dCANOBJHITOPTION_NONE, bool filterSelectableLayers=false)
do a hittest on the view at coordinates x,y
double GetBboxHeight()
get height of the boundingbox in world coordinates relative to its parents
bool m_editingCopy
true if the object needs to be rendered in edit mode.
Event sent to a2dCommandProcessor.
virtual bool ProcessCanvasObjectEvent(wxEvent &event, bool &isHit, double x, double y, int margin, int layer=wxLAYER_ALL)
Corridor and captured object event processing.
bool Undo()
Override this to undo a command.
bool GetVisible() const
get visibility (rendering depends on layer settings also)
a2dCanvasObject * IsHitWorld(a2dIterC &ic, a2dHitEvent &hitEvent)
If the position (x,y) is within the object return this.
The a2dBoundingBox class stores one a2dBoundingBox of a a2dCanvasObject.
bool Invert(void)
Invert matrix.
a2dCanvasObjectList * Clone(a2dObject::CloneOptions options) const
Clone everything ( Clones objects also) in a new created list.
double GetMinY() const
get minimum Y of the boundingbox
a2dDrawing * GetDrawing() const
get drawing via top object
bool AddPendingUpdatesOldNew()
adds current and future boundingbox of the objects with pending flag set, to the pendinglist of all a...
void SetCaret(int position)
set position of caret (-1 means off)
basetype GetPropertyValue(const a2dObject *obj) const
Get the property value in obj.
a2dCanvasGlobal * a2dCanvasGlobals
global a2dCanvasGlobal to have easy access to global settings
all headers of the canvas module
#define EVT_UNDO(func)
event sent from a2DocumentCommandProcessor when a command is undone
used to release object from a a2dCanvasDocument in the current parent
a2dDrawingPart * GetDrawingPart() const
get current a2dDrawingPart
virtual void RenderChildObjects(a2dIterC &ic, RenderChild &whichchilds, OVERLAP clipparent)
render only the child objects
virtual void RenderTopObject(wxUint32 documentDrawStyle, wxUint8 id)
does render the top object in the given style.
a2dCanvasObject * Find(const wxString &objectname, const wxString &classname=wxT(""), a2dCanvasObjectFlagsMask mask=a2dCanvasOFlags::ALL, const a2dPropertyId *propid=NULL, const wxString &valueAsString=wxT(""), wxUint32 id=0) const
return the object which fits the filter.
void Append(a2dCanvasObject *obj)
append a a2dCanvasObject to the childobjects
used to change text and caret of canvas text objects in a a2dCanvasDocument
wxString GetText() const
get the text of the object ' ' in string means new line
void SetOpacityFactor(wxUint8 OpacityFactor)
when enabling m_useOpacityFactor, this is how transparent
virtual bool IsConnect() const
return true, if this object is used to connect other object's using rubberband like structures...
virtual bool LinkReferences(bool ignoreNonResolved=false)
link references to their destination
void SetRestrictPoint(double xSnap, double ySnap)
sets the point for snapping to
edit a copy of the original object
CloneOptions
options for cloning
bool DisconnectEvent(wxEventType type, wxEvtHandler *eventSink)
bool GetDraggable() const
get if the object can be dragged
void SetCorridorPath(bool OnOff, a2dCanvasObject *captureObject=NULL)
to set corridor path ( also to captured object), its a2dCanvasOFlags::IsOnCorridorPath flag is set on...
structure to give as parameter to member functions of a2dCanvasObject
Contain one drawing as hierarchical tree of a2dCanvasObject's.
virtual bool RestrictPoint(double &x, double &y, wxUint32 sourceRequired=snapToAll, bool ignoreEngine=false)
Restrict a single point of a line or polyline.
const a2dFill * a2dTRANSPARENT_FILL
global a2dFill stock object for TRANSPARENT filling
a base command for the a2dCommandProcessor