CGM Objects Library
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Public Attributes | List of all members
Larson::CCgmCellArray Class Reference

CCgmCellArray – CellArray element container class. More...

#include <CgmObj.h>

Inheritance diagram for Larson::CCgmCellArray:
Larson::CCgmBaseObj

Public Member Functions

 CCgmCellArray (CCgmObjects *pParent, enum Shape nShape)
 
virtual CCgmBaseObjClone ()
 return copy of this object, new memory is allocated for lists
 
PolyPolylineDataConvertToPoints (double step=1)
 convert this element to list of points
 
CCgmTileArrayConvertTo1BPPTileArray ()
 
void ConvertColors (int monoEnhance, int colorConvert)
 convert colors of this element as specified
 
void Draw (CDrawBase *pDB)
 draw this element to specfied drawing object
 
bool HitTest (DPoint point, double margin, int *pSegIndex=NULL)
 true if point touches this element within margin
 
bool IsRaster ()
 true if this is a raster type element, e.g Cell Array
 
bool IsSkewed ()
 
void ReCalcBounds ()
 recalculates bounds of this element, e.g. after geometry is modified
 
void Restore (CCgmBaseObj *pObj)
 restore the contents of this object from a copy
 
long Save (CGMLIB2_HANDLE hCGMLIB2, int bwCompression, int colorCompression, bool unicode, bool bRGBa, int vdcPrecision=false)
 save this element to CGM file
 
void TransformBy (CMatrix *pXForm)
 transform this element with specified matrix
 
int LengthCellColors ()
 
int GetBytesPerLine ()
 
bool Compress (unsigned char *pRaw)
 
unsigned char * UnCompress ()
 
const CCgmCellArrayoperator= (const CCgmCellArray &a)
 
- Public Member Functions inherited from Larson::CCgmBaseObj
 CCgmBaseObj (CCgmObjects *pOwner, enum Shape nShape)
 Constructor.
 
virtual ~CCgmBaseObj ()
 Destructor.
 
void CopyBase (CCgmBaseObj *p)
 Copy attributes of object p to this object.
 
virtual bool IsFill ()
 true if this is a filled graphical element
 
virtual bool IsClosed ()
 true if this is a closed graphical element
 
virtual bool IsText ()
 true if this is text element
 
DRect GetBounds (bool locus=false)
 get geoemtric extents of this object, if locus = false this will be visible bounds including line or edge width
 
virtual long GetHandleCount ()
 return number of edit handles
 
virtual DPoint GetHandle (long nHandle, int *pType, double handleOffset=0)
 return position of specified edit handle
 
virtual void MoveEditHandle (long nHandle, bool bAspect, DPoint point)
 move position of specified edit handle
 
const CCgmBaseObjoperator= (const CCgmBaseObj &a)
 
DRect BoundsFromPts (DPoint *pts, long nPts)
 calculate the bound rectangle fron a list of points
 
void DrawPath (CDrawBase *pDB, Path *path, bool fill)
 draw graphical path
 
void RotatePts (DPoint center, double angle, DPoint *points, long nPoints)
 rotate a list of point
 
DRect GetClipRect ()
 get the clip rectangle of this element
 
double DefaultStep ()
 
void dbgShapeInfo (int i, std::wstring *pID)
 
DPoint * arcToBeziers (DPoint center, double radius, double a1, double a2, long *cnt)
 
void arcSmallToBeziers (double radius, double a1, double a2, DPoint *polyBez)
 
char polygonType (DPoint *pts, long count)
 
wchar_t map2unichar (wchar_t wcin)
 

Public Attributes

unsigned char * m_cellColors
 cell colors More...
 
int m_compressedLength
 if m_precision == 32 and this is >0 this m_CellColors are RLE compressed
 
long m_bytesPerLine
 number of bytes per scan line
 
struct {
   long   nx
 
   long   ny
 
m_nCells
 number cells in x and y
 
DPoint m_Pts [3]
 cell array corners, P, Q and R
 
long m_precision
 cell color precision, 1 or 32
 
bool m_transpCellColorFlag
 transparent cell color indicator
 
CColor m_transpCellColor
 transparent cell color
 
unsigned char m_monoChromatic
 
- Public Attributes inherited from Larson::CCgmBaseObj
DRect m_bounds
 retains element vdc bounds (now includes shape: line width for lines, marker size for markers, etc.)
 
CColor m_auxColor
 auxilary color, i.e. relevant when transparencyOn
 
CColor m_fillColor
 fill color
 
CColor m_lineColor
 line color, for filled element e.g. rectangle this is edge color
 
unsigned char m_transparency
 Transparency.
 
unsigned char m_lineCap
 LineCapIndicator.
 
unsigned char m_lineDashCap
 LineDashCapIndicator.
 
unsigned char m_lineJoin
 LineJoinIndicator.
 
unsigned char m_lineWidthSpecMode
 line width specfication mode
 
unsigned char m_fillInteriorStyle
 fill interior style
 
unsigned char m_interiorStyleSpecMode
 interior style specfication mode
 
char m_lineTypeCont
 line type continuation
 
char m_polygonType
 polygon type, set by CgmIn
 
short m_lineType
 line type
 
short m_ataLayerNumber
 ATA Layer Number.
 
float m_mitreLimit
 mitre limit
 
float m_lineTypeInitOff
 element
 
long m_hatchPatternIndex
 hatch index, NULL if interiorStyle != interiorStyleHatch
 
CInterpInteriorParamsm_interpInterior
 pointer to interploated interior parameters, NULL if interiorStyle != interiorStyleInterp
 
ClippingPathm_clippingPath
 pointer to clipping path object i.e. protection regions
 
ClipRectanglem_clipRectangle
 pointer to clip rectangle object: 0= no rectangular clipping, ohterwise poiner to object
 
enum Shape m_nShape
 element shape, e.g. polyline, disjointPolyline ...
 
CCgmObjectsm_pOwner
 pointer to owner of this element
 
CPatternTables::PatternBundlem_patternBundle
 pointer to pattern table bundle, NULL if interiorStyle != interiorStylePattern
 
double m_lineWidth
 line width
 
DPoint m_patternHeight
 
DPoint m_patternWidth
 
DPoint m_patternRefPoint
 

Additional Inherited Members

- Public Types inherited from Larson::CCgmBaseObj
enum  Shape {
  polyline = 0x00000000, disjointPolyline = 0x00000001, polyMarker = 0x00000002, text = 0x00000004,
  restrictedText = 0x00000008, appendText = 0x00000010, polygon = 0x00000020, polygonSet = 0x00000040,
  cellArray = 0x00000080, rectangle = 0x00000100, circle = 0x00000200, arc3Pt = 0x00000400,
  arc3PtClose = 0x00000800, arcCenter = 0x00001000, arcCenterClose = 0x00002000, ellipse = 0x00004000,
  ellipticalArc = 0x00008000, ellipticalArcClose = 0x00010000, arcCenterRev = 0x00020000, nub = 0x00040000,
  nurb = 0x00080000, polybezier = 0x00100000, tile = 0x00200000, compoundLine = 0x00400000,
  figure = 0x00800000, trace = 0x01000000, arrow = 0x02000000, callout = 0x04000000,
  hyperbolicArc = 0x08000000, parabolicArc = 0x10000000, copySegment = 0x20000000, polySymbol = 0x40000000,
  compoundText = 0x80000000, gdp = 0x00000003, message = 0x00000007, applicationData = 0x0000000F
}
 
enum  CellPathDirection { cellPathDir0 = 0, cellPathDir90 = 1, cellPathDir180 = 2, cellPathDir270 = 3 }
 
enum  LineProgressionDirection { lineProgressionDir90 = 0, lineProgressionDir270 = 1 }
 
enum  InheritanceFlags { inhFlagStateList = 0, inhFlagAppStruct = 1 }
 
enum  CharSetType {
  charSet94G = 0, charSet96G = 1, charSet94MultiByteG = 2, charSet96MultiByteG = 3,
  charSetComplete = 4
}
 
enum  LocationDataTypeSelector { locDataTypeSelUI8 = 0, locDataTypeSelUI16 = 1, locDataTypeSelUI32 = 2 }
 
enum  ColourSelectionMode { colourSelectIndexed = 0, colourSelectDirect = 1 }
 
enum  SpecMode { specModeAbsolute = 0, specModeScaled = 1, specModeFractional = 2, specModeMM = 3 }
 
enum  DevViewportSpecMode { devViewSpecFraction = 0, devViewSpecMM = 1, devViewSpecPhysical = 2 }
 
enum  DevViewportIsotropy { devViewIsotropyNotForced = 0, devViewIsotropyForced = 1 }
 
enum  DevViewportHorAlign { devViewHorAlignLeft = 0, devViewHorAlignCentre = 1, devViewHorAlignRight = 2 }
 
enum  DevViewportVertAlign { devViewVertAlignBottom = 0, devViewVertAlignCentre = 1, devViewVertAlignTop = 2 }
 
enum  TextPrecision { textPrecString = 0, textPrecChar = 1, textPrecStroke = 2 }
 
enum  InteriorStyle {
  interiorStyleHollow = 0, interiorStyleSolid = 1, interiorStylePattern = 2, interiorStyleHatch = 3,
  interiorStyleEmpty = 4, interiorStyleGeoPatt = 5, interiorStyleInterp = 6
}
 
enum  HatchIndex {
  hatchIndexHorizontal = 1, hatchIndexVertical = 2, hatchIndexPosSlope = 3, hatchIndexNegSlope = 4,
  hatchIndexHorVertCross = 5, hatchIndexPosNegCross = 6
}
 
enum  InterpolatedInteriorStyle { interpolatedInteriorStyleParallel = 1, interpolatedInteriorStyleElliptical = 2, interpolatedInteriorStyleTriangular = 3 }
 
enum  LineType {
  lineTypeNotVisible = 0, lineTypeSolid = 1, lineTypeDash = 2, lineTypeDot = 3,
  lineTypeDashDot = 4, lineTypeDashDotDot = 5, lineTypeArrowTail = 6, lineTypeCircleHead = 7,
  lineTypeArrowHeadTail = 8, lineTypeStyleStich = 9, lineTypeStyleChain = 10, lineTypeStyleCenter = 11,
  lineTypeStyleHidden = 12, lineTypeStylePhantom = 13, lineTypeStyleWavy = 14, lineTypeStyleZBroke = 15
}
 
enum  HatchStyle { hatchStyleParallel = 0, hatchStyleCrossHatch = 1 }
 
enum  Transparency { transparencyOff = 0, transparencyOn = 1 }
 
enum  ClipIndicator { clipIndicatorOff = 0, clipIndicatorOn = 1 }
 
enum  ClippingMode { clipModeLocus = 0, clipModeShape = 1, clipModeLocusThenShape = 2 }
 
enum  ProtectionRegionIndicator { protRegionIndUnknown = 0, protRegionIndOff = 1, protRegionIndClip = 2, protRegionIndShield = 3 }
 
enum  TextPathMode { textPathModeOff = 0, textPathModeNonTang = 1, textPathModeAxisTang = 2 }
 
enum  TextFinalityFlag { textFinalFalse = 0, textFinalTrue = 1 }
 
enum  EdgeFlags {
  edgeFlagInvisible = 0, edgeFlagVisible = 1, edgeFlagClose = 2, edgeFlagVisibleClose = 3,
  edgeFlagAttrChanged = 4
}
 
enum  CellRepresentationMode { cellRepRunLength = 0, cellRepPackedList = 1 }
 
enum  ArcClosureType { arcCloseNone = -1, arcClosePie = 0, arcCloseChord = 1 }
 
enum  ContinuityIndicator { contIndicatorDisc = 1, contIndicatorCont = 2 }
 
enum  TileCompressionType {
  tileCompressNullBack = 0, tileCompressNullFore = 1, tileCompressT6 = 2, tileCompress1Dimensional = 3,
  tileCompressT42Dimensional = 4, tileCompressBitmap = 5, tileCompressRunLength = 6, tileCompressJPEG = 7,
  tileCompressLZW = 8, tileCompressPNG = 9
}
 
enum  MarkerType {
  markerTypeDot = 1, markerTypePlus = 2, markerTypeAsterisk = 3, markerTypeCircle = 4,
  markerTypeCross = 5
}
 
enum  TextPath { textPathRight = 0, textPathLeft = 1, textPathUp = 2, textPathDown = 3 }
 
enum  TextAlignmentHorizontal {
  textHorAlignNormal = 0, textHorAlignLeft = 1, textHorAlignCentre = 2, textHorAlignRight = 3,
  textHorAlignContHor = 4
}
 
enum  TextAlignmentVertical {
  textVertAlignNormal = 0, textVertAlignTop = 1, textVertAlignCap = 2, textVertAlignHalf = 3,
  textVertAlignBase = 4, textVertAlignBottom = 5, textVertAlignContVert = 6
}
 
enum  EdgeVisibility { edgeVisibleOff = 0, edgeVisibleOn = 1 }
 
enum  AspectSourceFlags {
  asfLineType = 0, asfLineWidth = 1, asfLineColour = 2, asfMarkerType = 3,
  asfMarkerSize = 4, asfMarkerColour = 5, asfTextFontIndex = 6, asfTextPrecision = 7,
  asfCharExpFactor = 8, asfCharSpacing = 9, asfTextColour = 10, asfInteriorStyle = 11,
  asfFillColour = 12, asfHatchIndex = 13, asfPatternIndex = 14, asfEdgeType = 15,
  asfEdgeWidth = 16, asfEdgeColour = 17
}
 
enum  AspectSourceFlagValue { asfValueIndividual = 0, asfValueBundled = 1 }
 
enum  LineCapIndicator {
  lineCapUnspecified = 1, lineCapButt = 2, lineCapRound = 3, lineCapProjSquare = 4,
  lineCapTriangle = 5
}
 
enum  DashCapIndicator { dashCapUnspecified = 1, dashCapButt = 2, dashCapMatch = 3 }
 
enum  LineJoinIndicator { lineJoinUnspecified = 1, lineJoinMitre = 2, lineJoinRound = 3, lineJoinBevel = 4 }
 
enum  LineTypeContinuation { lineContUnspecified = 1, lineContContinue = 2, lineContRestart = 3, lineContAdaptiveCont = 4 }
 
enum  TextScoreType { textScoreRight = 1, textScoreLeft = 2, textScoreThrough = 3, textScoreKendot = 4 }
 
enum  TextScoreIndicator { textScoreIndOff = 0, textScoreIndOn = 1 }
 
enum  RestrTextType {
  restrTextNone = 0, restrTextBasic = 1, restrTextBoxedCap = 2, restrTextBoxedAll = 3,
  restrTextIsotropicCap = 4, restrTextIsotropicAll = 5, restrTextJustified = 6
}
 
enum  SymbolSize { symbolSizeHeight = 0, symbolSizeWidth = 1, symbolSizeBoth = 2 }
 
enum  MessageAction { messageActionRequiredFalse = 0, messageActionRequiredTrue = 1 }
 
enum  SegmentTransformationApplication { segTransAppNo = 0, segTransAppYes = 1 }
 
enum  InheritanceFilter {
  inhFilterLineBundleIndex = 0, inhFilterLineType = 1, inhFilterLineWidth = 2, inhFilterLineColour = 3,
  inhFilterLineClippingMode = 4, inhFilterMarkerBundleIndex = 5, inhFilterMarkerType = 6, inhFilterMarkerSize = 7,
  inhFilterMarkerColour = 8, inhFilterMarkerClippingMode = 9, inhFilterTextBundleIndex = 10, inhFilterTextFontIndex = 11,
  inhFilterTextPrecision = 12, inhFilterCharExpFactor = 13, inhFilterCharSpacing = 14, inhFilterTextColour = 15,
  inhFilterCharHeight = 16, inhFilterCharOrientation = 17, inhFilterTextPath = 18, inhFilterTextAlignment = 19,
  inhFilterFillBundleIndex = 20, inhFilterInteriorStyle = 21, inhFilterFillColour = 22, inhFilterHatchIndex = 23,
  inhFilterPatternIndex = 24, inhFilterEdgeBundleIndex = 25, inhFilterEdgeType = 26, inhFilterEdgeWidth = 27,
  inhFilterEdgeColour = 28, inhFilterEdgeVisibility = 29, inhFilterEdgeClippingMode = 30, inhFilterFillRefPoint = 31,
  inhFilterPatternSize = 32, inhFilterAuxColour = 33, inhFilterTransparency = 34, inhFilterLineAttributes = 35,
  inhFilterMarkerAttributes = 36, inhFilterTextPresAndPlaceAttr = 37, inhFilterTextPlaceAndOrientAttr = 38, inhFilterFillAttributes = 39,
  inhFilterEdgeAttributes = 40, inhFilterPatternAttr = 41, inhFilterOutputControl = 42, inhFilterPickIdentifier = 43,
  inhFilterAllAttrAndControl = 44, inhFilterAll = 45, inhFilterLineTypeASF = 46, inhFilterLineWidthASF = 47,
  inhFilterLineColorASF = 48, inhFilterMarkerTypeASF = 49, inhFilterMarkerSizeASF = 50, inhFilterMarkerColourASF = 51,
  inhFilterTextFontIndexASF = 52, inhFilterTextPrecisionASF = 53, inhFilterCharExpFactorASF = 54, inhFilterCharSpacingASF = 55,
  inhFilterTextColourASF = 56, inhFilterInteriorStyleASF = 57, inhFilterFillColourASF = 58, inhFilterHatchIndexASF = 59,
  inhFilterPatternIndexASF = 60, inhFilterEdgeTypeASF = 61, inhFilterEdgeWidthASF = 62, inhFilterEdgeColourASF = 63,
  inhFilterLineASFs = 64, inhFilterMarkerASFs = 65, inhFilterTextASFs = 66, inhFilterFillASFs = 67,
  inhFilterEdgeASFs = 68, inhFilterAllASFs = 69, inhFilterMitreLimit = 70, inhFilterLineCap = 71,
  inhFilterLineJoin = 72, inhFilterLineTypeCont = 73, inhFilterLineTypeInitOffset = 74, inhFilterTextScoreType = 75,
  inhFilterRestrTextType = 76, inhFilterInterpolatedInterior = 77, inhFilterEdgeCap = 78, inhFilterEdgeJoin = 79,
  inhFilterEdgeTypeCont = 80, inhFilterEdgeTypeInitOffset = 81, inhFilterSymbolLibraryIndex = 82, inhFilterSymbolColour = 83,
  inhFilterSymbolSize = 84, inhFilterSymbolOrientation = 85, inhFilterSymbolAttr = 86
}
 
enum  InheritanceFilterSetting { inhFilterSettingStateList = 0, inhFilterSettingSegment = 1 }
 
enum  ClipInheritance { clipInhStateList = 0, clipInhIntersection = 1 }
 
enum  SegmentHighlighting { segHighlightNormal = 0, segHighlightHigh = 1 }
 
enum  PolygonType { polygonTypeNotAPolygon = 0, polygonTypeComplex = 1, polygonTypeConvex = 2, polygonTypeNonconvex = 3 }
 
- Static Public Member Functions inherited from Larson::CCgmBaseObj
static DPoint * beziertoPts (DPoint &p0, DPoint &p1, DPoint &p2, DPoint &p3, double step, long *nPts)
 
static PolyPolylineDataPolyBezierToPoints (long type, DPoint *pPts, long count, double step, DRect *pRect=NULL, DRect *pBounds=NULL)
 
- Protected Member Functions inherited from Larson::CCgmBaseObj
long SaveLineAttr (CGMLIB2_HANDLE hCGMLIB2)
 save line attributes during CGM save operation
 
long SaveFillAttr (CGMLIB2_HANDLE hCGMLIB2)
 save fill attributes during CGM save operation
 
long SaveClipping (CGMLIB2_HANDLE hCGMLIB2)
 save clipping during CGM save operation
 
DRect IntersectClip (DRect rect)
 tests for intersection of rect with bounds this element
 

Detailed Description

CCgmCellArray – CellArray element container class.

Member Data Documentation

unsigned char* Larson::CCgmCellArray::m_cellColors

cell colors

if precision= 32 bits per color in RGBa byte order if precision=1 bit per color each line is padded to 32 bits, and for 0 and 1 color values specified by fgColor & bgColor

unsigned char Larson::CCgmCellArray::m_monoChromatic

cell colors are all either black and white, this is set in CgmIn, used to determine if conversion to bi-tonal tile array is possible


The documentation for this class was generated from the following files: