wxArt2D
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
a2dIOHandlerGDSOut Class Reference

Output driver for GDSII files. More...

#include <gdsio.h>

Inheritance diagram for a2dIOHandlerGDSOut:
Inheritance graph
[legend]
Collaboration diagram for a2dIOHandlerGDSOut:
Collaboration graph
[legend]

Public Member Functions

bool CanSave (const wxObject *obj=NULL)
 Should return true if the handler can write this document to a stream. More...
 
virtual bool Save (a2dDocumentOutputStream &stream, const wxObject *doc)
 Override to write to the stream and store (part of) of the document contents in the stream. More...
 
virtual void InitializeSave ()
 Inits the handler for writing.
 
virtual void ResetSave ()
 Reset the object after saving.
 
void SetReadAsCameleon (bool asCameleons)
 
bool GetReadAsCameleon ()
 
void SetSaveTextAsVpath (bool textAsPath)
 if set text will be converted to a vectorpath, and as polygons and polylines.
 
bool GetSaveTextAsVpath ()
 /see SetSaveTextAsVpath()
 
void SetFromViewAsTop (bool fromViewAsTop)
 if set, the current view its ShowObject will be saved top down.
 
bool GetFromViewAsTop ()
 /see SetFromViewAsTop()
 
- Public Member Functions inherited from a2dIOHandlerStrOut
 a2dIOHandlerStrOut (wxMBConv &conv=wxConvUTF8)
 constructor
 
 ~a2dIOHandlerStrOut ()
 destructor
 
void SetFileName (const wxFileName &filename)
 
const wxFileName & GetFileName () const
 
- Public Member Functions inherited from a2dIOHandler
 a2dIOHandler ()
 constructor
 
 ~a2dIOHandler ()
 destructor
 
virtual wxObject * CreateObject (const wxString &symbolicName)
 Creates an specific object by name. More...
 
- Public Member Functions inherited from a2dRefMap
 a2dRefMap ()
 constructor
 
 ~a2dRefMap ()
 destructor
 
virtual void Initialize ()
 initialize mapping tables
 
a2dHashMapIntToObject & GetObjectHashMap ()
 This is used to find multiple referenced objects by id.
 
a2dHashMapCreateObject & GetObjectCreateHashMap ()
 has to map symbolic names to real classnames.
 
a2dResolveIdList & GetResolveIdList ()
 list of not resolved objects
 
bool ResolveOrAdd (a2dSmrtPtr< a2dObject > *storedHere, const wxString &id=wxT(""))
 try to resolve the object that is in storedHere when it is a reference. More...
 
bool ResolveOrAdd (a2dAutoZeroPtr< a2dObject > *storedHere, const wxString &id=wxT(""))
 try to resolve the object that is in storedHere when it is a reference.
 
bool ResolveOrAddLink (a2dObject *obj, const wxString &id=wxT(""))
 try to resolve an object referenced by obj using the LinkReference function
 
void ResolveInform (a2dObject *obj)
 call the objects LinkReference function (ptr=0) to inform it that links are done
 
void SetLastObjectLoadedId (const wxString &lastid)
 set by RefObject when finding a reference id during loading.
 
virtual bool LinkReferences (bool ignoreNonResolved=false)
 link references to their destination More...
 
bool RemoveReference (const wxString &idToRemove)
 remove given reference if from reference map.
 
a2dError GetLastError () const
 get last error encountered
 
void SetLastError (a2dError error)
 set last error encountered
 
- Public Member Functions inherited from a2dObject
virtual bool ProcessEvent (wxEvent &event)
 
bool SearchDynamicEventTable (wxEvent &event)
 
void Connect (int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL)
 
bool Disconnect (int winid, int lastId, wxEventType eventType, wxObjectEventFunction func=NULL, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL)
 
void ProcessConnectedEvent (wxEvent &event)
 wxCHECK_VERSION(2,9,0) More...
 
void ConnectEvent (wxEventType type, wxEvtHandler *eventSink)
 
bool DisconnectEvent (wxEventType type, wxEvtHandler *eventSink)
 
bool DisconnectEventAll (wxEvtHandler *eventSink)
 Remove all dynamic events in classA, going to classB (eventSink) More...
 
 a2dObject ()
 constructor
 
virtual ~a2dObject ()
 destructor
 
void operator= (const a2dObject &other)
 assignment operator
 
int GetOwnedBy ()
 like it to be protected, but this does not work with wxList macros More...
 
virtual a2dObjectSetNonDynamic ()
 Call to mark this object as non-dynamic (static/local/auto) More...
 
void CheckReferences ()
 Check zero reference count and delete if count is 0. More...
 
a2dObjectClone (CloneOptions options, a2dRefMap *refs=NULL) const
 create an exact copy of this property
 
 a2dObject (const a2dObject &other, CloneOptions options, a2dRefMap *refs)
 
virtual wxString GetName () const
 Returns the name of this object, if no name is given the internal id will be returned. More...
 
virtual void SetName (const wxString &name)
 Creates the a2dStringProperty PROPID_Name. More...
 
virtual bool IsTemporary_DontSave () const
 Check if this is a temporary object, which should not be saved.
 
void SaveAsDocument (a2dIOHandlerXmlSerOut &out)
 Save this object and all below as an XML document. More...
 
virtual void Save (wxObject *parent, a2dIOHandlerXmlSerOut &out, a2dObjectList *towrite)
 write all needed to an XML type of file called the CVG format More...
 
void LoadFromDocument (a2dIOHandlerXmlSerIn &parser)
 Load this object and all below from an XML document. More...
 
virtual void Load (wxObject *parent, a2dIOHandlerXmlSerIn &parser)
 load object from CVG file More...
 
wxInt64 GetUniqueSerializationId () const
 return a unique id for this object More...
 
virtual bool AlwaysWriteSerializationId () const
 If true, always write an id. More...
 
virtual bool LinkReference (a2dObject *other)
 link a reference in the object to the given value More...
 
virtual void ResolveInform ()
 inform an object that reference resolution was done More...
 
void Walker (wxObject *parent, a2dWalkerIOHandler &handler)
 This is used to recursively walk through an object tree.
 
void SetCheck (bool check)
 general flag use at will. More...
 
bool GetCheck () const
 general flag use at will.
 
void SetRelease (bool value)
 set release flag More...
 
bool GetRelease () const
 get release flag More...
 
a2dAutoZeroPtr< a2dObject > ** GetAutoZeroPtrList ()
 return the list head pointer for autozero pointers to this object More...
 
 DECLARE_PROPERTIES ()
 
a2dNamedPropertyGetProperty (const a2dPropertyId *propertyId, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const
 get property on this object More...
 
void SetProperty (a2dNamedProperty *propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none)
 Set the property to the this object. More...
 
void SetProperty (const a2dNamedProperty &propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none)
 Set the property to the this object and if enabled, to all childs and object members. More...
 
virtual a2dNamedPropertyFindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none)
 Find a dynamic property with given id in the property list. More...
 
virtual const a2dNamedPropertyFindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const
 Find a dynamic property with given id in the property list. More...
 
virtual bool HasProperty (const a2dPropertyId *id, const wxString &stringvalue=wxEmptyString) const
 Check if the object has a property with given id and string representation. More...
 
virtual void OnPropertyChanged (const a2dPropertyId *id)
 This function is called after a property changed. More...
 
virtual bool EditProperties (const a2dPropertyId *id, bool withUndo=true)
 edit properties of the object More...
 
void TakeOverProperties (a2dObject *from, a2dPropertyIdList *listOfIds)
 Properties in the id list are taken from the given object, en set to this. More...
 
wxURI GetURI () const
 quick way to get to PROPID_URI property More...
 
void SetURI (const wxURI &url)
 quickly set a property PROPID_URI More...
 
const a2dNamedPropertyListGetPropertyList () const
 Get the Property List. More...
 
bool HasDynamicProperties () const
 test if there are dynamic properties in the m_propertylist
 
virtual bool RemoveProperty (const a2dPropertyId *id, bool all=true)
 This function is called by a2dPropertyId to remove a property from the list. More...
 
void RemoveTemporaryProperties ()
 remove all temporary properties
 
virtual bool AddProperty (a2dNamedProperty *property)
 This function is called by a2dPropertyId to add a property to the list. More...
 

Protected Member Functions

unsigned int ReadUnsignedInt ()
 
int ReadInt ()
 
long ReadLong ()
 
float ReadFloat ()
 
double ReadDouble ()
 
void WriteByte (G_BYTE ch)
 
void WriteUnsignedInt (TWO_G_BYTE_UNSIGNED_INTEGER i)
 
void WriteInt (TWO_G_BYTE_SIGNED_INTEGER i)
 
void WriteLong (FOUR_G_BYTE_SIGNED_INTEGER i)
 
void WriteFloat (FOUR_G_BYTE_REAL i)
 
void WriteDouble (EIGHT_G_BYTE_REAL i)
 
void Write (Strans *Strans)
 
void WriteHeader (TWO_G_BYTE_UNSIGNED_INTEGER nw_recordsize, G_BYTE nw_datatype, G_BYTE nw_recordtype)
 
void WriteString (const wxString &a_string)
 write a string
 
void SetFlags (a2dCanvasObject *Element)
 
void WritePoint (double xi, double yi)
 
void WriteVpath (const a2dAffineMatrix &lworld, const a2dVpath *path, int layer, int datatype, int pathtype, double width)
 
void WritePath (const a2dAffineMatrix &lworld, a2dVertexArray *points, int layer, int datatype, int pathtype, double width)
 
void WritePath (const a2dAffineMatrix &lworld, a2dVertexList *points, int layer, int datatype, int pathtype, double width)
 
void WriteBoundary (const a2dAffineMatrix &lworld, a2dVertexArray *points, int layer, int datatype)
 
void WriteBoundary (const a2dAffineMatrix &lworld, a2dVertexList *points, int layer, int datatype, bool spline=false)
 
void SaveStructure (a2dCanvasObject *object, a2dCanvasObjectList *towrite)
 
void Save (a2dCanvasObject *object, a2dCanvasObjectList *towrite)
 
void DoSave (a2dPolylineL *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dPolygonL *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dVectorPath *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dText *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dTextGDS *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dCanvasObjectReference *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dCameleonInst *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dCameleon *obj, a2dCanvasObjectList *towrite)
 
void DoSave (a2dCanvasObjectArrayReference *obj, a2dCanvasObjectList *towrite)
 
void double2gds (unsigned char fb[])
 convert a machine real to a gdsii real More...
 
- Protected Member Functions inherited from a2dIOHandlerStrOut
void SetMode (wxEOL mode=wxEOL_NATIVE)
 define the line end mode for textual files
 
wxEOL GetMode ()
 get line end mode for textual files
 
void Write32 (wxUint32 i)
 write a 32 bits integer
 
void Write16 (wxUint16 i)
 write a 16 bits integer
 
void Write8 (wxUint8 i)
 write a 8 bits integer
 
virtual void WriteDouble (double d)
 write a double
 
bool IsOk () const
 is the stream Oke to write
 
a2dIOHandlerStrOutPutChar (wxChar c)
 write on character
 
- Protected Member Functions inherited from a2dObject
virtual bool DoIgnoreIfNotMember (const a2dPropertyId *id) const
 used to decide if a property shall be ignored, if it is not a member More...
 
virtual void DoWalker (wxObject *parent, a2dWalkerIOHandler &handler)
 iterate over this object and its children More...
 

Protected Attributes

bool m_back
 last read record is stored
 
TWO_G_BYTE_UNSIGNED_INTEGER m_recordsize
 size of the last read record
 
G_BYTE m_recordtype
 recordtype of last read record
 
G_BYTE m_datatype
 the type of the data in the last read record
 
std::vector< int > m_mapping
 mapping of GDSII layers to internal layers
 
a2dCanvasDocumentm_doc
 the document to store/load the data found into
 
double m_scale_out
 
double m_userunits_out
 
int m_objectFlags
 
bool m_textAsPath
 if true, convert text to a2dVpath
 
bool m_fromViewAsTop
 
a2dLayersm_layers
 
bool m_asCameleons
 
- Protected Attributes inherited from a2dIOHandlerStrOut
wxFileName m_filename
 
wxMBConv & m_conv
 unicode conversion
 
a2dDocumentOutputStreamm_streamo
 file or other string stream containing the format to output to.
 
wxEOL m_mode
 end of line mode
 
- Protected Attributes inherited from a2dRefMap
a2dHashMapIntToObject m_objecthashmap
 This is used to find multiple referenced objects by id.
 
a2dHashMapCreateObject m_objectCreate
 This is used to find a classname using a symbolic name.
 
a2dResolveIdList m_toResolve
 refernces to object which have not bin resolved yet ( e.g not read yet, but already referenced )
 
wxString m_lastObjectId
 
a2dError m_lastError
 set to last error found when parsing
 
- Protected Attributes inherited from a2dObject
a2dNamedPropertyList m_propertylist
 properties
 
int m_refcount
 how many references to this object do exist
 
bool m_check: 1
 used for linking multiple referenced objects when serializing
 
bool m_release: 1
 when set object is treated as being deleted, and wil be deleted in idle time.
 
bool m_recursion_active: 1
 this is used as a recursion stopper
 
bool m_pendingDisconnects: 1
 
unsigned int m_iteratorCount
 
a2dAutoZeroPtr< a2dObject > * m_autozeroptrlist
 this is a list of all a2dAutoZeroPtr object pointing to this object
 

Additional Inherited Members

- Public Types inherited from a2dObject
enum  CloneOptions {
  clone_members = 0x00000001, clone_properties = 0x00000002, clone_childs = 0x00000004, clone_unused = 0x00000008,
  clone_setoriginal = 0x00000010, clone_seteditcopy = 0x00000020, clone_noReference = 0x00000040, clone_noCameleonRef = 0x00000080,
  clone_toDrag = 0x00000100, clone_flat = 0x00000000, clone_deep = clone_members | clone_properties | clone_childs
}
 options for cloning More...
 
typedef a2dAutoZeroPtr< a2dObjectTAutoZeroPtrListClass
 this is needed inside the smart pointer template code
 
- Static Public Attributes inherited from a2dObject
static a2dPropertyIdBoolPROPID_Check = NULL
 used for linking multiple referenced objects when serializing
 
static a2dPropertyIdUriPROPID_URI = NULL
 attach an URL to the object
 
static a2dPropertyIdStringPROPID_Name = NULL
 Name property, to return name of this object.
 
static a2dPropertyIdVoidPtrPROPID_autozeroptrlist = NULL
 
static const a2dSignal sm_Edit_properties = wxNewId()
 edit properties event, see EditProperties()
 
- Protected Types inherited from a2dObject
enum  { refcount_nondynamic = 0x76543210 }
 special refcount value for non-dynamic objects
 

Detailed Description

Output driver for GDSII files.

Every record in the GDSII file is read/mapped into the right gds file structure Info on the different record types that are read can be found in the GDSII format manual

Definition at line 347 of file gdsio.h.

Member Function Documentation

bool a2dIOHandlerGDSOut::CanSave ( const wxObject *  obj = NULL)
virtual

Should return true if the handler can write this document to a stream.

Mostly implemented by simply returning true if the handler can indeed do this job. Understand that a a2dDocument itself is useless for storing data, so it needs to be casted internal to a specific a2dDocument.

Parameters
objpointer to object to save, normally a document.

Implements a2dIOHandlerStrOut.

Definition at line 2181 of file gdsio.cpp.

void a2dIOHandlerGDSOut::double2gds ( unsigned char  fb[])
protected

convert a machine real to a gdsii real

convert a machine double to gds double usage: void double2gds( fb ) input arguments : unsigned char fb[] 8byte array with machine double output arguments : unsigned char fb[] 8byte array with gds double

Important note: The number of mantissa bit in VAX representation is one less than the number of mantissa bits in GDSII representation. This routine is not able to generate the last 2 bits of the GDSII representation exactly. There does not exist a general solution for this problem!! In order to overcome the single problem that we are aware of, the UNITs record that is sometimes compared to a UNITs record, the solution is hard coded in this routine. The last 8 bits of a number representing 1E-9 result in 53, but should produce 51 (See GDSII documentation of UNIT record and the given example of it).

!! The same story holds for APOLLO and wxBIG_ENDIAN, but even worse. 1E-3 results in F0 for the last 8 bits instead of EF. Also corrected.

Definition at line 488 of file gdsio.cpp.

bool a2dIOHandlerGDSOut::Save ( a2dDocumentOutputStream stream,
const wxObject *  obj 
)
virtual

Override to write to the stream and store (part of) of the document contents in the stream.

Understand that a a2dDocument itself is useless for storing data, so it needs to be casted internal to a specific a2dDocument.

Parameters
streamthe open stream to which the object needs to be saved
objobject to save into stream, needs to be casted to the right one internal.

Implements a2dIOHandlerStrOut.

Definition at line 2199 of file gdsio.cpp.


The documentation for this class was generated from the following files:
a2dIOHandlerGDSOut Class Reference -- Sun Oct 12 2014 17:04:40 -- Sun Oct 12 2014 -- 1.8.5 -- wxArt2D -- . -- Main Page Reference Documentation