+
+
+
+
diff --git a/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Minus.gif b/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Minus.gif
new file mode 100644
index 0000000..17751cb
Binary files /dev/null and b/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Minus.gif differ
diff --git a/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Plus.gif b/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Plus.gif
new file mode 100644
index 0000000..f6009ca
Binary files /dev/null and b/OriginAutoCAD_chint/_UpgradeReport_Files/UpgradeReport_Plus.gif differ
diff --git a/OriginAutoCAD_chint/app.config b/OriginAutoCAD_chint/app.config
new file mode 100644
index 0000000..6be5bd9
--- /dev/null
+++ b/OriginAutoCAD_chint/app.config
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.dll b/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.dll
new file mode 100644
index 0000000..d6b8205
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.xml b/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.xml
new file mode 100644
index 0000000..e9de963
--- /dev/null
+++ b/OriginAutoCAD_chint/bin/Debug/Aspose.CAD.xml
@@ -0,0 +1,153392 @@
+
+
+
+ Aspose.CAD
+
+
+
+
+ The BlockName Entity
+
+
+
+
+ Gets or sets the name of the block.
+
+
+ The name of the block.
+
+
+
+
+ Handles codes
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Soft ownership reference: the owner does not need the owned object. The owned object
+ cannot exist by itself. Code - 2
+
+
+
+
+ Hard ownership reference: the owner needs the owned object. The owned object cannot exist
+ by itself. Code - 3
+
+
+
+
+ Soft pointer reference: the referencing object does not need the referenced object and vice
+ versa. Code - 4
+
+
+
+
+ Hard pointer reference: the referencing object needs the referenced object, but both are
+ owned by another object. Code - 5
+
+
+
+
+ The handler of namespace
+
+
+
+
+ Revisions history data
+
+
+
+
+ Gets or sets the val1.
+
+
+ The val1.
+
+
+
+
+ Gets or sets the val2.
+
+
+ The val2.
+
+
+
+
+ Gets or sets the val3.
+
+
+ The val3.
+
+
+
+
+ Gets or sets the val4.
+
+
+ The val4.
+
+
+
+
+ The cad version
+
+
+
+
+ CFF2 image class
+
+
+
+
+
+ Loads a message file from the specified path.
+
+
+ The file path of the message file.
+
+
+
+
+ Loads a message file from the specified stream.
+
+
+ The stream of the message file.
+
+
+
+
+ Caches data
+
+
+
+
+ Saves data
+
+ stream to save
+
+
+
+ Update size
+
+
+
+
+ Gets is image cached
+
+
+
+
+ Gets the max point.
+
+
+
+
+ Gets the min point.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the order secton.
+
+ The order section.
+
+
+
+ Gets the aux secton.
+
+ The aux section.
+
+
+
+ Gets the main secton.
+
+ The main section.
+
+
+
+ Gets the sub sectons.
+
+ The sub sections.
+
+
+
+ Colors of the line types.
+
+ The colors of the line types.
+
+
+
+ Description of the order section output
+
+
+
+
+ Description of the line types output
+
+
+
+
+ The standart message
+
+
+
+
+ The group index
+
+
+
+
+ The language
+
+
+
+
+ The containt
+
+
+
+
+ The type of coordinate system.
+
+
+
+
+ Millimeters
+
+
+
+
+ Inches
+
+
+
+
+ The basic of the linear elements
+
+
+
+
+ The basic of the geometry elements
+
+
+
+
+ The Basic of the drawn elements
+
+
+
+
+ The type of the drawn element
+
+
+
+
+ The start point
+
+
+
+
+ The type of the drawn element
+
+
+
+
+ The line thickness
+
+
+
+
+ The line type
+
+
+
+
+ The addition line type
+
+
+
+
+ Number of bridges on the line
+
+
+
+
+ Size of bridges on the line
+
+
+
+
+ The line
+
+
+
+
+ The line initializer
+
+
+
+
+ The end point
+
+
+
+
+ Description of the line types output
+
+
+
+
+ Description of the output
+
+
+
+
+ The CFF2OutputDescribing initializer
+
+
+
+
+ The font size
+
+
+
+
+ The font name
+
+
+
+
+ The angle
+
+
+
+
+ The text color
+
+
+
+
+ The LinesOutputDescribing initializer
+
+
+
+
+ Description of the order section output
+
+
+
+
+ The OrderOutputDescribing initializer
+
+
+
+
+ The language
+
+
+
+
+ The insert of the Sub element
+
+
+
+
+ The sub insert initializer
+
+
+
+
+ The name
+
+
+
+
+ The angle
+
+
+
+
+ The scale
+
+
+
+
+ The Text
+
+
+
+
+ The text initializer
+
+
+
+
+ The containt
+
+
+
+
+ The angle
+
+
+
+
+ The size
+
+
+
+
+ CFF2 type of drawn elements
+
+
+
+
+ The Line type
+
+
+
+
+ The Arc type
+
+
+
+
+ The text type
+
+
+
+
+ The sub insert type
+
+
+
+
+ The description lines output
+
+
+
+
+ The description order section output
+
+
+
+
+ CFF2 dimension line types
+
+
+
+
+ Line without arrows at the ends
+
+
+
+
+ Line with an arrow at the beginning
+
+
+
+
+ Line with an arrow at the end
+
+
+
+
+ Arrows at both ends of the line
+
+
+
+
+ CFF2 instruction codes
+
+
+
+
+ Along direction of the paper fibers
+
+
+
+
+ Cross the direction of paper fibers
+
+
+
+
+ Place for a hole
+
+
+
+
+ Peripheral cutting
+
+
+
+
+ Expanding chamfer
+
+
+
+
+ The line type definition
+
+
+
+
+ The index
+
+
+
+
+ The Line type
+
+
+
+
+ The parameters
+
+
+
+
+ CFF2 line types
+
+
+
+
+ Line alignment marks
+
+
+
+
+ Cutting line
+
+
+
+
+ Scoring line
+
+
+
+
+ Punching ruler
+
+
+
+
+ Combined cutting strip
+
+
+
+
+ Instructions on the use of counter-stamp elements
+
+
+
+
+ Corner punching knife
+
+
+
+
+ Punching knife
+
+
+
+
+ The line is applied but not burned on the form.
+
+
+
+
+ The line is burned, but does not carry rulers and knives.
+
+
+
+
+ Wavy knife with symmetric wave
+
+
+
+
+ Dimension lines
+
+
+
+
+ Perforator application line
+
+
+
+
+ The property
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The containt
+
+
+
+
+ The custom property
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The property name
+
+
+
+
+ The standart property
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The index of property name (from Standard Message File)
+
+
+
+
+ The Aux section of the CFF2 format
+
+
+
+
+ The line type definitions
+
+
+
+
+ The Main section of the CFF2 format
+
+
+
+
+ The name of section.
+
+
+
+
+ The type of coordinate system.
+
+
+
+
+ The coordinates of the lower left corner of the cutting
+
+
+
+
+ The coordinates of the upper right corner of the cutting
+
+
+
+
+ The scale
+
+
+
+
+ The drawn elements
+
+
+
+
+ The Order section of the CFF2 format
+
+
+
+
+ The properties of the CFF2 format
+
+
+
+
+ The Sub section of the CFF2 format
+
+
+
+
+ The name of section.
+
+
+
+
+ The drawn elements
+
+
+
+
+ Represents circle
+
+
+
+
+ Represents base class for arc-based elements
+
+
+
+
+ DgnDrawingElementBase class
+
+
+
+
+ Represents base class for drawing Dgn elements
+
+
+
+
+ Represents base class for all elements
+
+
+
+
+ Gets element metadata
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Initializes the quaternion.
+
+ The data bytes.
+ The offset.
+
+
+
+ Gets or sets
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets Origin of ellipse
+
+
+
+
+ Gets or sets Primary axis length
+
+
+
+
+ Gets or sets Secondary axis length
+
+
+
+
+ Gets or sets Counterclockwise rotation in degrees
+
+
+
+
+ Gets or sets Start angle (degrees counterclockwise of primary axis)
+
+
+
+
+ Gets or sets Sweep angle (degrees)
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Initializes a new instance of the class.
+
+ The center.
+ The radius.
+ The quaternion.
+
+
+
+ Gets center point of circle
+
+
+ The center.
+
+
+
+
+ Gets radius of circle
+
+
+ The radius.
+
+
+
+
+ Element container constraints
+
+
+
+
+ Gets or sets low value by X axis
+
+
+
+
+ Gets or sets low value by Y axis
+
+
+
+
+ Gets or sets low value by Z axis
+
+
+
+
+ Gets or sets hi value by X axis
+
+
+
+
+ Gets or sets hi value by Y axis
+
+
+
+
+ Gets or sets hi value by Z axis
+
+
+
+
+ Represents summary of a file element was read
+
+
+
+
+ Gets or sets the Type of a file element
+
+
+
+
+ Gets or sets a value indicating whether a file element was deleted
+
+
+
+
+ Gets or sets a value indicating whether a file element is a part of compound element
+
+
+
+
+ Gets or sets Color corresponding to Color index
+
+
+
+
+ Gets or sets Line weight
+
+
+
+
+ Gets or sets Line style
+
+
+
+
+ Gets or sets properties
+
+
+
+
+ Represents element orientation
+
+
+
+
+ design related
+
+
+
+
+ screen related
+
+
+
+
+ Represents element properties
+
+
+
+
+ Gets class element
+
+
+
+
+ Gets a value indicating whether element is locked
+
+
+
+
+ Gets a value indicating whether element is new
+
+
+
+
+ Gets a value indicating whether element is modified
+
+
+
+
+ Gets a value indicating whether element has attribute data present
+
+
+
+
+ Gets element orientation
+
+
+
+
+ Gets a value indicating whether element is planar
+
+
+
+
+ Gets a value indicating whether element could be snapped
+
+
+
+
+ Gets or sets the Attribute data of a file element
+
+
+
+
+ Represents 3d surface or 3d solid element
+
+
+
+
+ Represents compound element
+
+
+
+
+ Initializes a new instance of the class
+ for internal usage by inheritors only
+
+
+
+
+ Adds element to related elements collection
+
+ dgn element
+
+
+
+ Gets or sets total length of data of related elements
+
+
+
+
+ Gets or sets related elements count
+
+
+
+
+ Gets related elements
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Gets surface type
+
+
+
+
+ Gets surface creation method
+
+
+
+
+ Gets bound elements count
+
+
+
+
+ Represents arc element
+
+
+
+
+ B-spline curve element
+
+
+
+
+ Gets B-spline order: 2-15
+
+
+
+
+ Gets a value indicating whether B-spline is closed
+
+
+
+
+ Gets a value indicating whether B-spline is rational
+
+
+
+
+ Gets curve type
+
+
+
+
+ Gets or sets KNOT element
+
+
+
+
+ Gets or sets pole element
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents cell header element
+
+
+
+
+ Represents composite elements (like cell header)
+
+
+
+
+ Adds element as a child
+
+ element to add as a child
+
+
+
+ Gets childs of the composite element
+
+
+
+
+ Adds element as a child
+
+ element to add as a child
+
+
+
+ Gets cell name
+
+
+
+
+ Gets cell's class bit map
+
+
+
+
+ Gets array of levels used in cell
+
+
+
+
+ Gets cell's range block low
+
+
+
+
+ Gets cell's range block hi
+
+
+
+
+ Gets cell's 2D/3D transformation matrix
+
+
+
+
+ Gets cell's origin point
+
+
+
+
+ Gets cell's x scale
+
+
+
+
+ Gets cell's y scale
+
+
+
+
+ Gets cell's rotation angle
+
+
+
+
+ Gets childs of the composite element
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Cone element
+
+
+
+
+ Gets first circle
+
+
+
+
+ Gets second circle
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents 'core' element
+
+
+
+
+ Represents curve line element element
+
+
+
+
+ Represents line
+
+
+
+
+ Initializes line
+
+ bytes raw data
+ offset to read data from
+ vertices count
+ is 3D object or not
+
+
+
+ Gets vertices of the line
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents digitizer element
+
+
+
+
+ Initializes a new instance of the class
+
+ bytes raw data
+
+
+
+ Represents ellipse element
+
+
+
+
+ Knot weight element
+
+
+
+
+ Initializes knot weights
+
+ bytes raw data
+
+
+
+ Gets or sets weights of knot
+
+
+
+
+ Represents multi-line text element
+
+
+
+
+ Represents text element
+
+
+
+
+ Initializes a new instance of the class
+ for internal usage by inheritors only
+
+
+
+
+ Computes char size bny font
+
+ char to measure
+ font identficator
+ measured size of the char
+
+
+
+ Gets or sets font id
+
+
+
+
+ Gets or sets justification
+
+
+
+
+ Gets or sets char width in master units
+
+
+
+
+ Gets or sets char height in master units
+
+
+
+
+ Gets or sets counterclockwise rotation in degrees
+
+
+
+
+ Gets or sets Bottom left corner of text
+
+
+
+
+ Gets actual text
+
+
+
+
+ Gets text size in UOR
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Adds text element
+
+ text element to add
+
+
+
+ Gets number of lines
+
+
+
+
+ Gets nodes number
+
+
+
+
+ Gets line spacing
+
+
+
+
+ Gets maximum length allowed
+
+
+
+
+ Gets maximum length allowed to use
+
+
+
+
+ Gets lines
+
+
+
+
+ Gets text size in UOR
+
+
+
+
+ Represents poly-line
+
+
+
+
+ Represents root element of a DGN file
+
+
+
+
+ Gets a value indicating whether the file is 3D model
+
+
+
+
+ Gets global scale factor
+
+
+
+
+ Gets global origin point
+
+
+
+
+ Gets axis lock angel
+
+
+
+
+ Gets axis lock origin
+
+
+
+
+ Gets active cell
+
+
+
+
+ Gets active pattering scale
+
+
+
+
+ Gets active pattering cell
+
+
+
+
+ Gets active pattering row spacing
+
+
+
+
+ Gets active pattering angle
+
+
+
+
+ Gets second active pattering angle
+
+
+
+
+ Gets active pattering column spacing
+
+
+
+
+ Gets active point
+
+
+
+
+ Gets active line terminator scale
+
+
+
+
+ Gets active line terminator
+
+
+
+
+ Gets key point snap flag
+
+
+
+
+ Gets key point snap divisor
+
+
+
+
+ Gets or sets unit type of design file
+
+
+
+
+ Gets or sets sub-unit type of design file
+
+
+
+
+ Represents shape element
+
+
+
+
+ Gets a value indicating whether this is filled.
+
+
+ true if filled; otherwise, false.
+
+
+
+
+ Represents shared cell definition element
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ Gets the identifier.
+
+
+ The identifier.
+
+
+
+
+ Gets cell's origin point
+
+
+
+
+ Gets the definition.
+
+
+ The definition.
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents shared cell definition element
+
+
+
+
+ Adds element as a child
+
+ element to add as a child
+
+
+
+ Gets cell total length
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ Gets childs of the composite element
+
+
+
+
+ Represents spline knot element
+
+
+
+
+ Represents spline pole element
+
+
+
+
+ Initializes a new instance of the class
+
+ bytes raw data
+ is 3D object or not
+
+
+
+ Represents spline weight factor element
+
+
+
+
+ Represents surface element
+
+
+
+
+ Gets a value indicating whether the surface is rational
+
+
+
+
+ Gets or sets a value indicating whether the surface is uniformed
+
+
+
+
+ Gets Properties for U
+
+
+
+
+ Gets Order for U
+
+
+
+
+ Gets poles count for U
+
+
+
+
+ Gets knots count for U
+
+
+
+
+ Gets rule lines for U
+
+
+
+
+ Gets Properties for V
+
+
+
+
+ Gets Order for V
+
+
+
+
+ Gets poles count for V
+
+
+
+
+ Gets knots count for V
+
+
+
+
+ Gets rule lines for V
+
+
+
+
+ Gets surface type
+
+
+
+
+ Gets bound elements count
+
+
+
+
+ Gets bound elements
+
+
+
+
+ Gets poles
+
+
+
+
+ Gets or sets knot
+
+
+
+
+ Gets weights
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Symbology element
+
+
+
+
+ Represents 'Tag Set Definition' element
+
+
+
+
+ Gets the identifier.
+
+
+ The identifier.
+
+
+
+
+ Gets tags of the tag definition
+
+
+
+
+ Represents 'Tag Value' element
+
+
+
+
+ Gets tag set
+
+
+
+
+ Gets tag index
+
+
+
+
+ Gets tag length
+
+
+
+
+ Gets or sets the tag value.
+
+
+ The tag value.
+
+
+
+
+ The namespace contains Dgn elements.
+
+
+
+
+ Element type
+
+
+
+
+ Cell library
+
+
+
+
+ Cell header
+
+
+
+
+ Line element
+
+
+
+
+ Poly-line element
+
+
+
+
+ Group data
+
+
+
+
+ Shape element
+
+
+
+
+ Text element node
+
+
+
+
+ Digitizer setup
+
+
+
+
+ Root element
+
+
+
+
+ Symbology element
+
+
+
+
+ Curve element
+
+
+
+
+ Complex chain header
+
+
+
+
+ Complex shape header
+
+
+
+
+ Ellipse element
+
+
+
+
+ Arc element
+
+
+
+
+ Text element
+
+
+
+
+ Surface Header
+
+
+
+
+ 3D solid header
+
+
+
+
+ B-spline element
+
+
+
+
+ Point string
+
+
+
+
+ B-spline surface header
+
+
+
+
+ B-spline surface boundary
+
+
+
+
+ B-spline KNOT
+
+
+
+
+ B-spline curve
+
+
+
+
+ B-spline weight
+
+
+
+
+ Cone element
+
+
+
+
+ Dimension element
+
+
+
+
+ Shared cell
+
+
+
+
+ Shared cell
+
+
+
+
+ Tag element value
+
+
+
+
+ Unknown for now
+
+
+
+
+ Application Element
+
+
+
+
+ NonGraphical extended element (complex)
+
+
+
+
+ End of design marker
+
+
+
+
+ Represents view info
+
+
+
+
+ Gets extended flags
+
+
+
+
+ Gets class masks
+
+
+
+
+ Gets unused area
+ reserved for future use
+
+
+
+
+ Gets perspective disappearing point
+
+
+
+
+ Represents view locks
+
+
+
+
+ Gets locks
+
+
+
+
+ Represents view flags
+
+
+
+
+ Gets a value indicating whether view is filled or not
+
+
+
+
+ File format version
+
+
+
+
+ Version 7 (documented)
+
+
+
+
+ Version 8 (non-documented)
+
+
+
+
+ Dgn image class
+
+
+
+
+ Sub-unit type of an image.
+
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Saves the object's data to the specified stream.
+
+
+ The stream to save the object's data to.
+
+
+
+
+ Releases the contents of image - all entities, objects, etc, so it won't hold any references so memory could be collected
+
+
+
+
+ Gets current sub-unit type.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data reading is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets DGN version of loaded image
+
+
+
+
+ Gets a value indicating whether file is 3D or not
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets elements were read from source file
+
+
+
+
+ Gets the tags.
+
+
+ The tags.
+
+
+
+
+ Gets the max point.
+
+
+
+
+ Gets the min point.
+
+
+
+
+ Gets the views.
+
+
+ The views.
+
+
+
+
+ Justification type
+
+
+
+
+ Left Top justification
+
+
+
+
+ Left Center justification
+
+
+
+
+ Left Bottom justification
+
+
+
+
+ Left Margin Top justification
+
+
+
+
+ Left Margin Center justification
+
+
+
+
+ Left Margin Bottom justification
+
+
+
+
+ Center Top justification
+
+
+
+
+ Center Center justification
+
+
+
+
+ Center Bottom justification
+
+
+
+
+ Right Margin Top justification
+
+
+
+
+ Curve element justification
+
+
+
+
+ Right Margin Bottom justification
+
+
+
+
+ Right Top justification
+
+
+
+
+ Right Center justification
+
+
+
+
+ Right Bottom justification
+
+
+
+
+ Line style
+
+
+
+
+ Solid line style
+
+
+
+
+ Dotted line style
+
+
+
+
+ Medium dashed
+
+
+
+
+ Long dashed
+
+
+
+
+ Dot dashed
+
+
+
+
+ Short dashed
+
+
+
+
+ Dash double dot
+
+
+
+
+ Long dash-short dash
+
+
+
+
+ Represents point for DGN format
+
+
+
+
+ Initiailizes a new instance of the class
+
+
+
+
+ Initiailizes a new instance of the class
+
+ X coordinate
+ Y coordinate
+
+
+
+ Initiailizes a new instance of the class
+
+ X coordinate
+ Y coordinate
+ Z coordinate
+
+
+
+ Gets or sets X coordinate
+
+
+
+
+ Gets or sets Y coordinate
+
+
+
+
+ Gets or sets Z coordinate
+
+
+
+
+ Represents 3d surface type
+
+
+
+
+ 3d surface
+
+
+
+
+ Solid 3d element
+
+
+
+
+ Represents creation method of 3d surface and 3d solid
+
+
+
+
+ Surface of projection
+
+
+
+
+ Bounded Plane
+
+
+
+
+ Bounded Plane
+
+
+
+
+ Right circular cylinder
+
+
+
+
+ Right circular cone
+
+
+
+
+ Tabulated cylinder
+
+
+
+
+ Tabulated cone
+
+
+
+
+ Convolute object
+
+
+
+
+ Surface of revolution
+
+
+
+
+ Warped surface
+
+
+
+
+ Volume of projection
+
+
+
+
+ Volume of revolution
+
+
+
+
+ Volume defined by boundary element
+
+
+
+
+ Represents dgn tag
+
+
+
+
+ Gets or sets tag name
+
+
+
+
+ Gets or sets tag id
+
+
+
+
+ Gets or sets tag user prompt
+
+
+
+
+ Gets or sets the default tag value.
+
+
+ The default tag value.
+
+
+
+
+ Represents dgn tag type
+
+
+
+
+ String tag style
+
+
+
+
+ Integer tag style
+
+
+
+
+ Float tag style
+
+
+
+
+ DgnTagValue class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type.
+ The raw data.
+ The n data offset.
+
+
+
+ Gets or sets tag type
+
+
+
+
+ Gets or sets the string value.
+
+
+ The string value.
+
+
+
+
+ Gets or sets the integer value.
+
+
+ The integer value.
+
+
+
+
+ Gets or sets the float value.
+
+
+ The float value.
+
+
+
+
+ DgnQuaternion class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x value.
+ The y value.
+ The z value.
+ The w value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the x.
+
+
+ The x value.
+
+
+
+
+ Gets the y.
+
+
+ The y value.
+
+
+
+
+ Gets the z.
+
+
+ The z value.
+
+
+
+
+ Gets the w.
+
+
+ The w value.
+
+
+
+
+ The namespace handles Dgn related file formats processing.
+
+
+
+
+ DgnViewInfo class
+
+
+
+
+ The levels
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the origin.
+
+
+ The origin.
+
+
+
+
+ Gets or sets the delta.
+
+
+ The delta.
+
+
+
+
+ Gets or sets the conversion.
+
+
+ The conversion.
+
+
+
+
+ Gets or sets the active z.
+
+
+ The active z.
+
+
+
+
+ The namespace handles Dgn related file formats processing.
+
+
+
+
+ DWF image class
+
+
+
+
+ Adds render able element to specified page
+
+ Index of the page to add element to
+ Element to be added
+
+
+
+ Removes element from specified page
+
+ Index of page to remove element from
+ Index of element to be removed
+
+
+
+ Gets count of render able elements from specified page
+
+ Index of page to get count of elements from
+ Count of render able elements in specified page
+
+
+
+ Caches data
+
+
+
+
+ Saves data
+
+ stream to save
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets pages
+
+
+
+
+ Gets layers
+
+
+
+
+ Gets is image cached
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Layer tables list
+
+ The collection of
+
+
+ Enumeration of layers.
+
+ Enumerator of layers
+
+
+
+ Gets first layer by name.
+
+ The name of layer.
+ The layer or null if layer with "name" does not exist in the collection
+
+
+
+ Gets layer by name.
+
+ The name of layer.
+ The layers collection of
+
+
+
+ Gets layers by names.
+
+ Array names of layers.
+ The list of layer objects
+
+
+
+ Gets the layers names.
+
+ The list of layers names
+
+
+
+ Adds an item to the DwfLayersList
+
+ The object to add to the collection
+
+
+
+ Removes all items from the DwfLayersList
+
+
+
+
+ Determines whether the DwfLayersList contains a specific value.
+
+ the object to locate in the collection
+
+ true if item is found in the collection otherwise false
+
+
+
+
+ Copies the elements of DwfLayersList to an System.Array, starting at a particular System.Array index.
+
+ the one-dimensional array that is the destination of the elements copied
+ the zero-based index in array at which copying begins
+
+
+
+ Removes the first occurrence of a specific object from the DwfLayersList.
+
+ item to remove from collection
+
+ Result of removing
+
+
+
+
+ Gets the number of elements contained in the DwfLayersList.
+
+
+
+
+ Gets a value indicating whether the DwfLayersList is read-only.
+
+
+
+
+ The DWF merge options.
+
+
+
+
+ Gets or sets the merge type.
+
+
+
+
+ Gets or sets the source path.
+ Full path to source image that will be merge with DWF image.
+
+
+
+
+ Gets or sets the source DWF image page names that will be merge with DWF image.
+ If not set, will be merged all pages.
+
+
+
+
+ Gets or sets the page names of destination DWF image to witch will be add raster overlay image.
+ If not set, raster overlay image will be add to all pages.
+
+
+
+
+ The DWF merge type.
+
+
+
+
+ Add raster overlay.
+
+
+
+
+ Add pages.
+
+
+
+
+ Represents base class for DWF page.
+
+
+
+
+ Gets or sets page name
+
+
+
+
+ Gets or sets unit type
+
+
+
+
+ Gets or sets object ID
+
+
+
+
+ Gets the max point.
+
+
+
+
+ Gets the min point.
+
+
+
+
+ Gets read only collection of draw objects
+
+
+
+
+ Gets the list of draw objects
+
+
+
+
+ The namespace handles DWF related file formats processing.
+
+
+
+
+ Represents Whip drawable object
+
+
+
+
+ Represents base whip object
+
+
+
+
+ Gets or sets value, that object is materialized
+
+
+
+
+ Max point of object.
+
+ Max point of object.
+
+
+
+ Min point of object.
+
+ Min point of object.
+
+
+
+ Gets or sets Color
+
+
+
+
+ Gets or sets line weight
+
+
+
+
+ Gets or sets a value indicating whether object is visible.
+
+
+
+
+ Gets or sets transform matrix
+
+
+
+
+ Gets or sets line style
+
+
+
+
+ Gets or sets layer index
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Zip de-compressor for DWF
+
+
+
+
+ Initializes a new instance of the class
+
+ source stream
+
+
+
+ Extracts this instance.
+
+
+ The entries dictionary.
+
+
+
+
+ The namespace handles Dwf E-Plot processing.
+
+
+
+
+ Represents Layer
+
+
+
+
+ Represents object familt attributes
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Determines whether the specified System.Object is equal to the current DwfWhipLayer.
+
+ object for equals
+
+ Result of equals two DwfWhipLayer
+
+
+
+
+ Hash code for the current DwfWhipLayer.
+
+
+ HashCode of DwfWhipLayer
+
+
+
+
+ Gets name of DwfWhipLayer
+
+
+
+
+ Gets number
+
+
+
+
+ Gets visibility
+
+
+
+
+ Gets incarnation
+
+
+
+
+ The namespace handles Dwf related file formats processing.
+
+
+
+
+ Represents operations result
+
+
+
+
+ Success result
+
+
+
+
+ Waiting_For_Data
+
+
+
+
+ Corrupt file error
+
+
+
+
+ End of file error
+
+
+
+
+ UnknownFileReadError
+
+
+
+
+ Out of memory error
+
+
+
+
+ File already open error
+
+
+
+
+ No file open error
+
+
+
+
+ File write error
+
+
+
+
+ File open error
+
+
+
+
+ Internal error
+
+
+
+
+ Not a DWF file error
+
+
+
+
+ User requested abort
+
+
+
+
+ DWF Version Higher Than Toolkit
+
+
+
+
+ Unsupported DWF Opcode
+
+
+
+
+ Unsupported DWF ExtensionError
+
+
+
+
+ End of DWF OpcodeFound
+
+
+
+
+ File inconsistency warning
+
+
+
+
+ Toolkit usage error
+
+
+
+
+ Decompression terminated
+
+
+
+
+ File close error
+
+
+
+
+ OpcodeNotValidForThisObject
+
+
+
+
+ DWF Package Format
+
+
+
+
+ Minor version warning
+
+
+
+
+ Undefined result
+
+
+
+
+ Represents image format
+
+
+
+
+ The bitonal mapped
+
+
+
+
+ The group3 x mapped
+
+
+
+
+ The indexed
+
+
+
+
+ The mapped
+
+
+
+
+ The RGB
+
+
+
+
+ The RGB
+
+
+
+
+ The JPEG
+
+
+
+
+ Represents PNG group image format
+
+
+
+
+ Group4X mapped image format
+
+
+
+
+ Group4 image format
+
+
+
+
+ PNG image format
+
+
+
+
+ Represents materialization stage
+
+
+
+
+ Eating initial whitespace
+
+
+
+
+ Gathering String
+
+
+
+
+ Eating end whitespace
+
+
+
+
+ The namespace handles Dwf whip processing.
+
+
+
+
+ Represents Whip contour set object
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ points of the set
+
+
+
+ Transforms object
+
+ transform matrix
+
+
+
+ Gets points
+
+
+
+
+ Gets or sets rendition incarnation
+
+
+
+
+ Gets or sets the number of contours in the set (size of counts_list.)
+
+
+
+
+ Gets or sets transformation value. True if the points have been transformed
+
+
+
+
+ Gets of sets Relativized value. True if the points have been relativized.
+
+
+
+
+ Gets or sets stage item counter
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Ellipse
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets or sets Center point of ellipse.
+
+
+
+
+ Gets or sets Major axis radius.
+
+
+
+
+ Gets or sets Minor axis radius.
+
+
+
+
+ Gets or sets Start angle (in 360/65,536ths of a degree.)
+
+
+
+
+ Gets or sets End angle (in 360/65,536ths of a degree.)
+
+
+
+
+ Gets or sets Rotation angle (in 360/65,536ths of a degree.)
+
+
+
+
+ Gets of sets is transformed
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Filled Ellipse
+
+
+
+
+ DwfWhipGouraudPointSet class
+
+
+
+
+ Represents point set object
+
+
+
+
+ The list of points used by the contours.
+
+
+
+
+ Transforms object
+
+ Transform matrix
+
+
+
+ Gets points
+
+
+
+
+ Gets or sets is transformed, true if the points have been transformed
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Gets points
+
+
+
+
+ DwfWhipGouraudPolyline class
+
+
+
+
+ DwfWhipGouraudPolytriangle class
+
+
+
+
+ DwfWhipImage class
+
+
+
+
+ Represents whip PNG group for image object
+
+
+
+
+ Initializes a new instance of the class
+
+ code of format
+
+
+
+ Checks the format.
+
+ The format code.
+
+
+
+
+ Gets image colums count
+
+
+
+
+ Gets image rows count
+
+
+
+
+ Gets minimal corner of image (top, left)
+
+
+
+
+ Gets maximal corner of image (bottom, right)
+
+
+
+
+ Binary dataof image encoded accrording to format
+
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Initializes a new instance of the class.
+
+ code of format
+
+
+
+ Checks the format.
+
+ The format code.
+
+
+
+
+ Represents outline Ellipse (just contour)
+
+
+
+
+ Represents whip PNG group for image object
+
+
+
+
+ Initializes a new instance of the class.
+
+ code of format
+
+
+
+ Checks the format.
+
+ The format code.
+
+
+
+
+ Represents Polygon
+
+
+
+
+ Represents polyline
+
+
+
+
+ A drawing object describing a POLYMARKER (a set of points).
+
+
+
+
+ Represents Polytriangle
+
+
+
+
+ The namespace handles Dwf whip objects processing.
+
+
+
+
+ Represents Text object
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets Position
+
+
+
+
+ Gets Text string
+
+
+
+
+ Gets overscore
+
+
+
+
+ Gets underscore
+
+
+
+
+ Gets bounds
+
+
+
+
+ Gets reversed
+
+
+
+
+ Gets or sets font
+
+
+
+
+ Gets the min point of object.
+
+ Min point of object.
+
+
+
+ Gets the max point of object.
+
+ Max point of object.
+
+
+
+ Represents Text option Bounds object
+
+
+
+
+ Gets bounds
+
+
+
+
+ Represents Text option Scoring
+
+
+
+
+ Array of positions
+
+
+
+
+ The namespace handles Dwf whip objects processing.
+
+
+
+
+ Represents file heuristics
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets or sets w2d channel
+
+
+
+
+ Gets or sets apply transform flag
+
+
+
+
+ Gets or sets transform
+
+
+
+
+ Represents view port
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ points of contour
+
+
+
+ Gets contours set
+
+
+
+
+ Gets name of vieport
+
+
+
+
+ Gets Incarnation
+
+
+
+
+ The namespace handles Dwf whip objects processing.
+
+
+
+
+ Represents String
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ initial value
+
+
+
+ Gets string value of object
+
+
+
+
+ Represents An enumeration of cap styles used by WT_Line_End_Cap, WT_Line_Start_Cap, WT_Dash_End_Cap, and WT_Dash_Start_Cap.
+
+
+
+
+ Butt cap style
+
+
+
+
+ Square cap style
+
+
+
+
+ Round cap style
+
+
+
+
+ Diamond cap style
+
+
+
+
+ Capstyle cap style
+
+
+
+
+ Undefined cap style
+
+
+
+
+ Represents join style IDs
+
+
+
+
+ Miter join style
+
+
+
+
+ Bevel join style
+
+
+
+
+ Round join style
+
+
+
+
+ Diamond join style
+
+
+
+
+ Joinstyle join style
+
+
+
+
+ Undefined join style
+
+
+
+
+ Represents line cap style
+
+
+
+
+ Gets cap style
+
+
+
+
+ Represents Line join style
+
+
+
+
+ Gets line join style
+
+
+
+
+ Represents line style
+
+
+
+
+ Gets join style
+
+
+
+
+ Gets start cap
+
+
+
+
+ Gets end cap
+
+
+
+
+ Represents weight of line
+
+
+
+
+ Gets weight value
+
+
+
+
+ Represents logical box
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ minimal point
+ maximal point
+
+
+
+ Gets minimal point of box
+
+
+
+
+ Gets maximal point of box
+
+
+
+
+ Represents Logical point
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ X coordinate
+ Y coordinate
+
+
+
+ Gets or sets X coordinate
+
+
+
+
+ Gets or sets Y coordinate
+
+
+
+
+ Represents transform of scene
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Initializes a new instance of the class
+
+ translate point
+ x axis scale
+ y axis scale
+ rotation angle
+
+
+
+ Sets rotation angle
+
+ rotation angle
+
+
+
+ Gets or sets translate
+
+
+
+
+ Gets or sets scale by x axis
+
+
+
+
+ Gets or sets scale by y axis
+
+
+
+
+ Gets or sets rotation angle
+
+
+
+
+ Represents Font
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets font name
+
+
+
+
+ Gets or sets Height
+
+
+
+
+ Gets or sets rotation
+
+
+
+
+ Gets charset
+
+
+
+
+ Gets font family
+
+
+
+
+ Gets width scale
+
+
+
+
+ Gets options flags
+
+
+
+
+ Gets pitch
+
+
+
+
+ Gets style
+
+
+
+
+ Represents Font option charset
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option font family
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option font flags
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option Height
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option font name
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option rotation
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option font style
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets font is bold
+
+
+
+
+ Gets font is italic
+
+
+
+
+ Gets font is underlined
+
+
+
+
+ Represents font option width scale
+
+
+
+
+ Gets value of option
+
+
+
+
+ Represents Font option pitch
+
+
+
+
+ Gets value of option
+
+
+
+
+ The namespace handles Dwf whip objects processing.
+
+
+
+
+ The namespace handles Dwf whip objects processing.
+
+
+
+
+ Conforms to the 32-bit ARGB pixels loaded partially.
+
+
+
+
+ Processes the loaded pixels.
+
+ The pixels rectangle.
+ The 32-bit ARGB pixels.
+ The start pixels point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end pixels point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ Ifc Image class
+
+
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+
+ Releases the contents of image - all entities, objects, etc, so it won't hold any references so memory could be collected
+
+
+
+
+ Gets the attributes collection.
+
+
+
+
+ Gets list of layers in image
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data readig is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the depth.
+
+
+ The depth.
+
+
+
+
+ The namespace handles ifc file format processing.
+
+
+
+
+ IGES Image class
+
+
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+
+ Releases the contents of image - all entities, objects, etc, so it won't hold any references so memory could be collected
+
+
+
+
+ Gets Image height
+
+
+ Image height
+
+
+
+
+ Gets Image width
+
+
+ Image width
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data readig is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ The namespace handles IGES file format processing.
+
+
+
+
+ The identifiers for PLT command argument type.
+
+
+
+
+ The numerical type.
+
+
+
+
+ The string type.
+
+
+
+
+ The byte type.
+
+
+
+
+ The flag byte type.
+
+
+
+
+ The partial data loader.
+
+
+
+
+ Processes the loaded data.
+
+ The data rectangle.
+ The raw data.
+ The start data point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end data point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ Processes the loaded data.
+
+ The data rectangle.
+ The raw data.
+ The start data point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end data point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+ The load options.
+
+
+
+ The namespace contains different file format load options.
+
+
+
+
+ The namespace is the core for nested namespaces and the most basic objects used for Aspose.CAD processing.
+
+
+
+
+ The raster image 32-bit ARGB pixel loader.
+
+
+
+
+ The raster image raw data loader.
+
+
+
+
+ Loads raw data.
+
+ The rectangle to load raw data from.
+ The raw data settings to use for loaded data. Note if data is not in the format specified then data conversion will be performed.
+ The raw data loader.
+
+
+
+ Gets a value indicating whether raw data loading is supported.
+
+
+ true if raw data loading is supported; otherwise, false.
+
+
+
+
+ Gets the current raw data settings. Note when using these settings the data loads without conversion.
+
+
+ The current raw data settings.
+
+
+
+
+ Loads 32-bit ARGB pixels partially (by blocks).
+
+ The rectangle to load pixels from.
+ The partial pixel loader.
+
+
+
+ Specifies the types of images and colors that will be affected by the color and grayscale adjustment settings of an .
+
+
+
+
+ All color values, including gray shades, are adjusted by the same color-adjustment matrix.
+
+
+
+
+ All colors are adjusted, but gray shades are not adjusted. A gray shade is any color that has the same value for its red, green, and blue components.
+
+
+
+
+ Only gray shades are adjusted.
+
+
+
+
+ Translates colors to and from GDI+ Color structures. This class cannot be inherited.
+
+
+
+
+ Takes color from the HTML color.
+
+ HTML color.
+ The color.
+
+
+
+ Takes color from the OLE color.
+
+ OLE color.
+ The color.
+
+
+
+ Takes color from the HTML color.
+
+ Win32 color.
+ The color.
+
+
+
+ Creates HTML color from the color.
+
+ The color class.
+ The html string color.
+
+
+
+ Translates OLE color to color.
+
+ The color.
+ The OLE color.
+
+
+
+ Translates the color to win32 color.
+
+ The color.
+ The win32 color.
+
+
+
+ The object having bounds.
+
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ The object supporting transparency.
+
+
+
+
+ Gets or sets the object's opacity. The value should be between 0 and 1. Value of 0 means that object is fully visible, value of 1 means the object is fully opaque.
+
+ The opacity value.
+
+
+
+ The namespace provides different helper classes for color dithering.
+
+
+
+
+ EXIF data container for jpeg files.
+
+
+
+
+ The maximum EXIF segment size in bytes allowed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ Array of EXIF tags together with common and GPS tags.
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ The common tags.
+ The EXIF tags.
+ The GPS tags.
+
+
+
+ Serializes the EXIF data. Writes the tags values and contents. The most influencing size tag is Thumbnail tag contents.
+
+ The serialized EXIF data.
+ The overall segment size must be less than or equal to MaxExifSegmentSize bytes in order to produce correct jpeg image.
+ Hint: try to reduce the thumbnail size or change its compression in case you have too big EXIF section size.
+
+
+
+
+ Gets or sets the artist.
+
+
+ The artist.
+
+
+
+
+ Gets or sets the bits per sample.
+
+
+ The bits per sample.
+
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Gets or sets the copyright.
+
+
+ The copyright.
+
+
+
+
+ Gets or sets the date time.
+
+
+ The date time.
+
+
+
+
+ Gets or sets the image description.
+
+
+ The image description.
+
+
+
+
+ Gets or sets the image length.
+
+
+ The length of the image.
+
+
+
+
+ Gets or sets the image width.
+
+
+ The width of the image.
+
+
+
+
+ Gets or sets the manufacturer of the recording equipment.
+
+
+ The manufacturer of the recording equipment.
+
+
+
+
+ Gets or sets the model.
+
+
+ The model.
+
+
+
+
+ Gets or sets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets or sets the photometric interpretation.
+
+
+ The photometric interpretation.
+
+
+
+
+ Gets or sets the planar configuration.
+
+
+ The planar configuration.
+
+
+
+
+ Gets or sets the chromaticity of the three primary colors of the image.
+
+
+ The chromaticity of the three primary colors of the image.
+
+
+
+
+ Gets or sets the reference black white.
+
+
+ The reference black white.
+
+
+
+
+ Gets or sets the resolution unit.
+
+
+ The resolution unit.
+
+
+
+
+ Gets or sets the samples per pixel.
+
+
+ The samples per pixel.
+
+
+
+
+ Gets or sets the software.
+
+
+ The software.
+
+
+
+
+ Gets or sets the thumbnail image.
+
+
+ The thumbnail.
+
+
+
+
+ Gets or sets the transfer function.
+
+
+ The transfer function.
+
+
+
+
+ Gets or sets the x resolution.
+
+
+ The x resolution.
+
+
+
+
+ Gets or sets the matrix coefficients for transformation from RGB to YCbCr image data.
+
+
+ The matrix coefficients for transformation from RGB to YCbCr image data.
+
+
+
+
+ Gets or sets the position of chrominance components in relation to the luminance component.
+
+
+ The position of chrominance components in relation to the luminance component.
+
+
+
+
+ Gets or sets the sampling ratio of chrominance components in relation to the luminance component.
+
+
+ The sampling ratio of chrominance components in relation to the luminance component.
+
+
+
+
+ Gets or sets the y resolution.
+
+
+ The y resolution.
+
+
+
+
+ The namespace contains EXIF related helper classes and methods.
+
+
+
+
+ Big Rectangular Filter Options
+
+
+
+
+ Filter Options Base, abstract class
+
+
+
+
+ Deconvolution Filter Options, abstract class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the SNR(signal-to-noise ratio)
+ recommended range 0.002 - 0.009, default value = 0.007
+
+
+ The SNR.
+
+
+
+
+ Gets or sets the brightness.
+ recommended range 1 - 1.5
+ default value = 1.15
+
+
+ The brightness.
+
+
+
+
+ Gets or sets a value indicating whether this is grayscale.
+ Return grayscale mode or RGB mode.
+
+
+ true if grayscale; otherwise, false.
+
+
+
+
+ Gauss Wiener Filter Options
+ Deblur gauss
+
+
+
+
+ Initializes a new instance of the class.
+
+ The radius.
+ The smooth.
+
+
+
+ Gets or sets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets or sets the smooth.
+
+
+ The smooth.
+
+
+
+
+ Median filter
+
+
+
+
+ Initializes a new instance of the class.
+
+ The size of filter rectangle.
+
+
+
+ Gets or sets the size.
+
+
+ The size of filter rectangle.
+
+
+
+
+ Deconvolution filter options
+ deblur motion
+
+
+
+
+ Initializes a new instance of the class.
+
+ The lenght.
+ The smooth.
+ The angle in gradus.
+
+
+
+ Gets or sets the length.
+
+
+ The length.
+
+
+
+
+ Gets or sets the smooth.
+
+
+ The smooth.
+
+
+
+
+ Gets or sets the angle in gradus.
+
+
+ The angle.
+
+
+
+
+ The namespace handles Filter options.
+
+
+
+
+ Small rectangular filter options
+
+
+
+
+ Color palette adjustment class
+
+
+
+
+ The namespace contains classes for adjustment of color palette to the image colors and visa versa.
+
+
+
+
+ Contains cache settings.
+
+
+
+
+ Sets the settings to defaults.
+
+
+
+
+ Fires when reallocation was performed
+
+
+
+
+ Gets or sets a value indicating whether reallocation should be exact or not. If reallocation is non exact the performance should be higher.
+
+
+ true if reallocation is exact; otherwise, false.
+
+ The exact reallocation will perform reallocation of additional memory only up to the upper limit specified.
+ When passing upper limit for in-memory during reallocation the cached data will be copied to disk if possible.
+ When passing upper limit for disk memory during reallocation the appropriate exception is thrown.
+ The performance should be higher if this option is turned off as no additional copying will be performed if possible,
+ however this may also lead to pass upper limits specified for memory or disk.
+
+
+
+ Gets or sets the cache folder.
+
+
+ The cache folder.
+
+
+
+
+ Gets the allocated in-memory bytes count.
+
+
+ The allocated in-memory bytes count.
+
+
+
+
+ Gets the allocated disk bytes count.
+
+
+ The allocated disk bytes count.
+
+
+
+
+ Gets or sets the maximum available memory for cache in memory. The value specified is megabytes count.
+
+
+ The maximum memory for cache.
+
+ Value of 0 will consume all available memory and serves as no upper limit.
+
+
+
+ Gets or sets the maximum available disk space for cache. The value specified is megabytes count.
+
+
+ The maximum available disk space for cache.
+
+ Value of 0 will consume all available memory and serves as no upper limit.
+
+
+
+ Gets or sets the cache scheme used.
+
+
+ The cache scheme used.
+
+
+
+
+ Specifies the cache type to use.
+
+
+
+
+ Specifies auto cache type. The auto cache scheme will try to cache in-memory first then on disk.
+
+
+
+
+ The disk cache only.
+
+
+
+
+ The in-memory cache only.
+
+
+
+
+ Color comparison method to adjust to nearest neighbor
+
+
+
+
+ The euclidian method
+
+
+
+
+ Helper class for color palettes manipulation.
+
+
+
+
+ Creates a monochrome color palette containing 2 colors only.
+
+
+ Color palette for monochrome images.
+
+
+
+
+ Creates the 4 bit color palette.
+
+ The 4 bit color palette.
+
+
+
+ Creates the 4 bit grayscale palette.
+
+ if set to true the palette starts with white color, otherwise it starts with black color.
+
+ The 4 bit grayscale palette.
+
+
+
+
+ Creates the 8 bit color palette.
+
+ The 8 bit color palette.
+
+
+
+ Creates the 8 bit grayscale palette.
+
+ if set to true the palette starts with white color, otherwise it starts with black color.
+
+ The 8 bit grayscale palette.
+
+
+
+
+ Gets color palette from raster image (palletizes image) in case the image does not have one. In case palette exists it will be used instead performing calculations.
+
+ The raster image.
+ The desired entries count.
+
+ The color palette which starts with the most frequent colors from the and contains entries.
+
+
+
+
+ Get uniform 256 color palette.
+
+
+ The image.
+
+
+ The .
+
+
+
+
+ Get 256 color palette, composed from upper bits of initial image color values.
+
+
+ The image.
+
+
+ The .
+
+
+
+
+ Colors quantization methods
+
+
+
+
+ Nothing color quantization method is used
+
+
+
+
+ The popularity method
+
+
+
+
+ Dithering method.
+
+
+
+
+ Threshold dithering. Simplest and fastest dithering algorithm.
+
+
+
+
+ The Floyd-Steinberg dithering. A more complex dithering algorithm, uses nearest neighbors intensity values.
+
+
+
+
+ Specifies style information applied to text.
+
+
+
+
+ Normal text.
+
+
+
+
+ Bold text.
+
+
+
+
+ Italic text.
+
+
+
+
+ Underlined text.
+
+
+
+
+ Text with a line through the middle.
+
+
+
+
+ Image filters to use
+
+
+
+
+ Nothing filter used
+
+
+
+
+ The big rectangular filter
+
+
+
+
+ The small rectangular filter
+
+
+
+
+ Image resize settings class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the entries count
+
+
+ The entries count
+
+
+
+
+ Gets or sets the interpolation mode.
+
+
+ The mode.
+
+
+
+
+ Gets or sets the type of the filter.
+
+
+ The type of the filter.
+
+
+
+
+ Gets or sets the color quantization method.
+
+
+ The color quantization method.
+
+
+
+
+ Gets or sets the color compare method.
+
+
+ The color compare method.
+
+
+
+
+ Represents a raster image supporting raster graphics operations. This image caches pixel data when required.
+
+
+
+
+ Represents a raster image supporting raster graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+
+
+
+ Gets the default pixels array using partial pixel loader.
+
+ The rectangle to get pixels for.
+ The partial pixel loader.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gets the default raw data array using partial pixel loader.
+
+ The rectangle to get pixels for.
+ The partial raw data loader.
+ The raw data settings.
+
+
+
+ Gets the default 32-bit ARGB pixels array.
+
+ The rectangle to get pixels for.
+ The default pixels array.
+
+
+
+ Gets the default raw data array.
+
+ The rectangle to get raw data for.
+ The raw data settings.
+
+ The default raw data array.
+
+
+
+
+ Gets an image 32-bit ARGB pixel.
+
+ The pixel x location.
+ The pixel y location.
+ The 32-bit ARGB pixel for the specified location.
+
+
+
+ Gets an image pixel.
+
+ The pixel x location.
+ The pixel y location.
+ The pixel color for the specified location.
+
+
+
+ Sets an image 32-bit ARGB pixel for the specified position.
+
+ The pixel x location.
+ The pixel y location.
+ The 32-bit ARGB pixel for the specified position.
+
+
+
+ Sets an image pixel for the specified position.
+
+ The pixel x location.
+ The pixel y location.
+ The pixel color for the specified position.
+
+
+
+ Reads the whole scan line by the specified scan line index.
+
+ Zero based index of the scan line.
+ The scan line pixel color values array.
+
+
+
+ Reads the whole scan line by the specified scan line index.
+
+ Zero based index of the scan line.
+ The scan line pixel color values array as ARGB.
+
+
+
+ Writes the whole scan line to the specified scan line index.
+
+ Zero based index of the scan line.
+ The pixel colors array as ARGB to write.
+
+
+
+ Writes the whole scan line to the specified scan line index.
+
+ Zero based index of the scan line.
+ The pixel colors array to write.
+
+
+
+ Loads 32-bit ARGB pixels partially by packs.
+
+ The desired rectangle.
+ The 32-bit ARGB pixel loader.
+
+
+
+ Loads pixels partially by packs.
+
+ The desired rectangle.
+ The pixel loader.
+
+
+
+ Loads 32-bit ARGB pixels.
+
+ The rectangle to load pixels from.
+
+ The loaded 32-bit ARGB pixels array.
+
+
+
+
+ Loads pixels.
+
+ The rectangle to load pixels from.
+
+ The loaded pixels array.
+
+
+
+
+ Loads pixels in CMYK format.
+
+ The rectangle to load pixels from.
+
+ The loaded CMYK pixels array.
+
+
+
+
+ Loads raw data.
+
+ The rectangle to load raw data from.
+ The raw data settings to use for loaded data. Note if data is not in the format specified then data conversion will be performed.
+ The raw data loader.
+
+
+
+ Saves the raw data.
+
+ The raw data.
+ The starting raw data offset.
+ The raw data rectangle.
+ The raw data settings the data is in.
+
+
+
+ Saves the 32-bit ARGB pixels.
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Saves the pixels.
+
+ The rectangle to save pixels to.
+ The pixels array.
+
+
+
+ Saves the pixels.
+
+ The rectangle to save pixels to.
+ The CMYK pixels array.
+
+
+
+ Sets the resolution for this .
+
+ The horizontal resolution, in dots per inch, of the .
+ The vertical resolution, in dots per inch, of the .
+
+
+
+ Sets the image palette.
+
+ The palette to set.
+ if set to true colors will be updated according to the new palette; otherwise color indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no corresponding palette entries.
+
+
+
+ Crop image with shifts.
+
+ The left shift.
+ The right shift.
+ The top shift.
+ The bottom shift.
+
+
+
+ Filters the specified rectangle.
+
+ The rectangle.
+ The options.
+
+
+
+ Loads pixels (format specific method).
+
+ The rectangle to load pixels from.
+ The partial pixel loader. The inheritor should call corresponding methods on this interface when pixels are loaded.
+
+
+
+ Saves pixels (format specific method).
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets or sets the indexed color converter
+
+
+ The indexed color converter
+
+
+
+
+ Gets or sets the custom color converter
+
+
+ The custom color converter
+
+
+
+
+ Gets or sets the fallback index to use when palette index is out of bounds
+
+
+ The fallback index to use when palette index is out of bounds
+
+
+
+
+ Gets the current raw data settings. Note when using these settings the data loads without conversion.
+
+
+ The current raw data settings.
+
+
+
+
+ Gets the raw data format.
+
+
+ The raw data format.
+
+
+
+
+ Gets the raw line size in bytes.
+
+
+ The raw line size in bytes.
+
+
+
+
+ Gets a value indicating whether raw data loading is available.
+
+
+ true if this raw data loading is available; otherwise, false.
+
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+ The horizontal resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+ The vertical resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets a value indicating whether image has transparent color.
+
+
+
+
+ Gets a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets the image transparent color.
+
+
+
+
+ Gets or sets the data loader.
+
+
+ The data loader.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Updates the image dimensions.
+
+ The new image width.
+ The new image height.
+
+
+
+ Called when data is cached and all related resources may be de-allocated.
+
+
+
+
+ Saves pixels (format specific method).
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets a value indicating whether image data is cached currently.
+
+
+ true if image data is cached; otherwise, false.
+
+
+
+
+ The jfif segment.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the density units.
+
+
+
+
+ Gets or sets the thumbnail.
+
+
+
+
+ Gets or sets the version.
+
+
+
+
+ Gets or sets the x density.
+
+
+
+
+ Gets or sets the y density.
+
+
+
+
+ The namespace contains classes for PDF file format integration.
+
+
+
+
+ This class represents set of metadata for document description.
+
+
+
+
+ Gets or sets keywords of the document.
+
+
+
+
+ Gets or sets title of the document.
+
+
+
+
+ Gets or sets author of the document.
+
+
+
+
+ Gets or sets subject of the document.
+
+
+
+
+ Defines the compression method used for image data.
+
+
+
+
+ No compression. The image data stored as raw bytes in RGBA planar order.
+ That means that first all R data is written, then all G is written, then all B and finally all A data is written.
+
+
+
+
+ RLE compressed the image data starts with the byte counts for all the scan lines (rows * channels), with each
+ count stored as a two-byte value. The RLE compressed data follows, with each scan line compressed separately.
+ The RLE compression is the same compression algorithm used by the Macintosh ROM routine PackBits and the TIFF standard.
+
+
+
+
+ ZIP without prediction.
+
+
+
+
+ ZIP with prediction.
+
+
+
+
+ The resource block.
+
+
+
+
+ The resource signature.
+
+
+
+
+ Saves the resource block to the specified stream.
+
+ The stream to save the resource block to.
+
+
+
+ Validates the resource values.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Caches the data for subsequent faster retrieval.
+
+
+
+
+ Stops data caching.
+
+
+
+
+ Gets the resource signature. Should be always '8BIM'.
+
+ The resource signature.
+
+
+
+ Gets or sets the unique identifier for the resource.
+
+ The unique identifier for the resource.
+
+
+
+ Gets or sets the resource name. Pascal string, padded to make the size even (a null name consists of two bytes of 0).
+
+ The resource name.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the resource block size in bytes including its data.
+
+ The resource block size.
+
+
+
+ Gets the minimal required PSD version.
+
+ The minimal PSD version.
+
+
+
+ Represents resource block state.
+
+
+
+
+ Typical state.
+
+
+
+
+ Cached state.
+
+
+
+
+ Represents the grid and guides resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets or sets the guides.
+
+ The guides.
+
+
+
+ Gets the guide resource blocks count.
+
+ The guide resource blocks count.
+
+
+
+ Gets or sets the header version. This value should be always 1.
+
+ The header version.
+
+
+
+ Gets or sets the horizontal grid cycle. The default is 576.
+
+ The horizontal grid cycle.
+
+
+
+ Gets or sets the vertical grid cycle. The default is 576.
+
+ The vertical grid cycle.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ The namespace contains Psd related resource elements.
+
+
+
+
+ Represents the thumbnail resource for psd 4.0.
+
+
+
+
+ The thumbnail resource block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Validates the resource values.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Caches the data for subsequent faster retrieval.
+
+
+
+
+ Stops data caching.
+
+
+
+
+ Saves the common data.
+
+ The stream container.
+
+
+
+ Gets or sets the JPEG options. Suitable when thumbnail resource is saved into JPEG file format only. This option has no effect when RAW format is defined.
+
+
+ The JPEG options.
+
+
+
+
+ Gets or sets the thumbnail data format.
+
+ The thumbnail data format.
+
+
+
+ Gets or sets the width of thumbnail in pixels.
+
+ The thumbnail width.
+
+
+
+ Gets or sets the height of thumbnail in pixels.
+
+ The thumbnail height.
+
+
+
+ Gets the row width in bytes.
+
+ The row width in bytes.
+
+
+
+ Gets the total data size.
+
+ The total data size.
+
+
+
+ Gets or sets the size after compression. Used for consistency check.
+
+ The size after compression.
+
+
+
+ Gets or sets the bits pixel.
+
+ The thumbnail bits pixel.
+
+
+
+ Gets or sets the planes count.
+
+ The thumbnail planes count.
+
+
+
+ Gets or sets the 32-bit ARGB thumbnail data.
+
+ The 32-bit ARGB thumbnail data.
+
+
+
+ Gets or sets the thumbnail data.
+
+ The thumbnail data.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ The transparency index resource block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Gets or sets the transparency color index.
+
+ The transparency color index.
+
+
+
+ The unknown resource. When a resource block is not recognized then this resource block is created.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data.
+
+ The resource data.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Represents the XMP metadata resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Get or set XMP data container
+
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ The bmp file format creation options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The BMP options.
+
+
+
+ Gets or sets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Gets or sets the horizontal resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+
+
+ The horizontal resolution.
+
+
+
+
+ Gets or sets the vertical resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+
+
+ The vertical resolution.
+
+
+
+
+ The DWF options.
+
+
+
+
+ Gets or sets target DWF interface.
+ 0 - ePlot interface (default).
+ 1 - eModel interface.
+
+
+
+
+ Gets or sets the merge options.
+
+
+
+
+ The gif file format creation options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The GIF Options.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets a value indicating whether palette correction is applied.
+
+
+ true if palette correction is applied; otherwise, false.
+
+ Palette correction means that whenever image is exported to GIF the source image colors will be analyzed
+ in order to build the best matching palette (in case image Palette does not exist or not specified in the options).
+ The analyze process takes some time however the output image will have the best matching color palette and result is visually better.
+
+
+
+ Gets or sets the GIF color resolution.
+
+
+ The color resolution.
+
+
+ Color Resolution - Number of bits per primary color available
+ to the original image, minus 1. This value represents the size of
+ the entire palette from which the colors in the graphic were
+ selected, not the number of colors actually used in the graphic.
+ For example, if the value in this field is 3, then the palette of
+ the original image had 4 bits per primary color available to create
+ the image. This value should be set to indicate the richness of
+ the original palette, even if not every color from the whole
+ palette is available on the source machine.
+
+
+
+
+ Gets or sets a value indicating whether palette entries are sorted.
+
+
+ true if palette entries are sorted; otherwise, false.
+
+
+
+
+ Gets or sets the GIF pixel aspect ratio.
+
+
+ The GIF pixel aspect ratio.
+
+
+ Pixel Aspect Ratio - Factor used to compute an approximation
+ of the aspect ratio of the pixel in the original image. If the
+ value of the field is not 0, this approximation of the aspect ratio
+ is computed based on the formula:
+ Aspect Ratio = (Pixel Aspect Ratio + 15) / 64
+ The Pixel Aspect Ratio is defined to be the quotient of the pixel's
+ width over its height. The value range in this field allows
+ specification of the widest pixel of 4:1 to the tallest pixel of
+ 1:4 in increments of 1/64th.
+ Values :
+ 0 - No aspect ratio information is given.
+ 1..255 - Value used in the computation.
+
+
+
+ Gets or sets the GIF background color index.
+
+
+ The GIF background color index.
+
+
+
+
+ Gets or sets a value indicating whether GIF has trailer.
+
+
+ true if GIF has trailer; otherwise, false.
+
+
+
+
+ True if image should be interlaced.
+
+
+
+
+ The Jpeg2000 file format options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Jpeg2000 file format options to copy settings from.
+
+
+
+ Gets or sets the Jpeg comment markers.
+
+
+ The Jpeg comment markers.
+
+
+
+
+ Gets or sets the JPEG2000 codec
+
+
+ The JPEG2000 codec
+
+
+
+
+ The jpeg file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The JPEG options.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the jfif.
+
+
+
+
+ Gets or sets the jpeg file comment.
+
+
+
+
+ Get or set exif data container
+
+
+
+
+ Gets or sets the compression type.
+
+
+
+
+ Gets or sets the color type for jpeg image.
+
+
+
+
+ Gets or sets image quality.
+
+
+
+
+ The scaled quality.
+
+
+
+
+ Gets or sets the RD optimizer settings.
+
+
+ The RD optimizer settings.
+
+
+
+
+ The destination RGB color profile for CMYK jpeg images. Use for saving images. Must be in pair with CMYKColorProfile for correct color conversion.
+
+
+
+
+ The destination CMYK color profile for CMYK jpeg images. Use for saving images. Must be in pair with RGBColorProfile for correct color conversion.
+
+
+
+
+ Specifies the PDF compliance level to output file.
+
+
+
+
+ The output file will be PDF 1.5 compliant.
+
+
+
+
+ The output file will be PDF/A-1a compliant.
+
+
+
+
+ The output file will be PDF/A-1b compliant.
+
+
+
+
+ The PDF options.
+
+
+
+
+ Desired conformance level for generated PDF document.
+ Important note: This option should not be changed after PdfDocument object is constructed.
+ Default is .
+
+
+
+
+ Gets or sets a digital signature details. If not set, then no signing will be performed.
+
+
+
+
+ The PDF options.
+
+
+
+
+ Gets or sets metadata for document.
+
+
+
+
+ Gets or sets the core PDF options.
+
+
+ The core PDF options.
+
+
+
+
+ The png file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The PNG options.
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the type of the color.
+
+
+ The type of the color.
+
+
+
+
+ Gets or sets a value indicating whether this is progressive.
+
+
+ true if progressive; otherwise, false.
+
+
+
+
+ Gets or sets the filter type used during png file save process.
+
+
+
+
+ The png image compression level in the 0-9 range, where 9 is maximum compression and 0 is store mode.
+
+
+
+
+ The bit depth.
+
+
+
+
+ The psd file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options.
+
+
+
+ Get or set XMP data container
+
+
+
+
+ Gets or sets the psd resources.
+
+ The psd resources.
+
+
+
+ Gets or sets the psd file version.
+
+ The psd file version.
+
+
+
+ Gets or sets the psd compression method.
+
+ The compression method.
+
+
+
+ Gets or sets the psd color mode.
+
+ The color mode.
+
+
+
+ Gets or sets the bits count per color channel.
+
+ The bits count per color channel.
+
+
+
+ Gets or sets the color channels count.
+
+ The color channels count.
+
+
+
+ The SVG file format creation options.
+
+
+
+
+
+ Gets or sets the color type for SVG image.
+
+
+ The type of the color of SVG image.
+
+
+
+
+ Gets or sets a value indicating whether text must be converted as shapes.
+ By default text will be converted as shapes.
+
+
+ true if all text is turned into SVG shapes in the convertion; otherwise, false.
+
+
+
+
+ Gets or sets the font store options.
+
+
+ The font store options.
+
+
+
+
+ Wether sub-pixel lindewidths should be rescaled
+
+
+
+
+ Wether minimum non-rescaled line widh should be defined relative to whole image size (if false) or in pixels (if true)
+
+
+
+
+ Lines with width less than image's size\minimumRelativeLinewidthRatio will be rescaled if relative rescaling is used
+
+
+
+
+ Lines with width in pixels less than this will be rescaled
+
+
+
+
+ Minumum width of the line (i.e. width of zero-width line) relative to minimum non-rescaled linewidth
+
+
+
+
+ Parameters for font storage in SVG
+
+
+
+
+ Gets the source font file name.
+
+
+ The source font file.
+
+
+
+
+ Gets the source font stream, where font data will be read from.
+
+
+ The source font stream.
+
+
+
+
+ Gets or sets the destination stream where font data will be written to if FontStoreType is set to Stream.
+
+
+ The destination font stream.
+
+
+
+
+ Gets or sets the font file URI.
+
+
+ The font file URI.
+
+
+
+
+ Gets or sets a value indicating whether destionation stream should be disposed.
+
+
+ true if [dispose stream]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating how to store font.
+
+
+ Do not store font, store embedded in SVG file, or store in provided destination stream.
+
+
+
+
+ The font store type
+
+
+
+
+ The none, fonts not stored
+
+
+
+
+ The Stream, fonts stored to stream
+
+
+
+
+ The embedded, fonts embedded in svg file as base64
+
+
+
+
+ The svg callback interface
+
+
+
+
+ Called for each raster image in SVG. Use it to specify how to store the raster image.
+
+ The bytes of the raster image content
+ Type of the image.
+ Name of the suggested file.
+ if set to true then image will be embedded into SVG.
+
+ Should return path to saved resource. Path will be used in SVG image to refer to raster content. Path should be relative to target SVG document.
+
+
+
+
+ Called for each font used in SVG. Use it to specify how to store the font.
+
+ The font storage parameters
+
+
+
+ Called when SVG document is ready.
+
+ The SVG document conent bytes.
+ Suggested name for the file.
+ Should return path to saved svg document.
+
+
+
+ Represents type of raster image within SVG image.
+
+
+
+
+ JPEG JFIF.
+
+
+
+
+ Portable Network Graphics.
+
+
+
+
+ Windows Bitmap.
+
+
+
+
+ Gif image format
+
+
+
+
+ Tiff image format
+
+
+
+
+ Unknown format
+
+
+
+
+ Сolor mode for SVG images.
+
+
+
+
+ The Grayscale image.
+
+
+
+
+ YCbCr image, standard option for SVG images.
+
+
+
+
+ CMYK image.
+
+
+
+
+ The YCCK color image.
+
+
+
+
+ The RGB Color mode.
+
+
+
+
+ The tiff file format options.
+ Note that width and height tags will get overwritten on image creation by width and height parameters so there is no need to specify them directly.
+ Note that many options return a default value but that does not mean that this option is set explicitly as a tag value. To verify the tag is present use Tags property or the corresponding IsTagPresent method.
+
+
+ WARNING! never modify tiff options during save since this may cause side effects and hard to find bugs.
+ The following line was specially left commented since it caused incorrect determination of data beginning.
+ The passed options did not contain spp (although the options are not correct in such case but still this scenario causes errors)
+ and the next line caused +spp tag +bpp tag added and when options were written after data completely written they have overwritten
+ the data beginning for uncompressed codec!!! See TiffUncompressedCodec.Encode.
+ this.Options.SamplesPerPixel = 3;
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected tiff file format.
+ The tiff file format byte order to use.
+
+
+
+ Initializes a new instance of the class. By default little endian convention is used.
+
+ The expected tiff file format.
+
+
+
+ Initializes a new instance of the class.
+
+ The options to copy from.
+
+
+
+ Initializes a new instance of the class.
+
+ The tags to initialize options with.
+
+
+
+ Determines whether tag is present in the options or not.
+
+ The tag id to check.
+
+ true if tag is present; otherwise, false.
+
+
+
+
+ Gets the valid tags count.
+
+ The tags to validate.
+ The valid tags count.
+
+
+
+ Removes the tag.
+
+
+ The tag to remove.
+
+
+ true if successfully removed
+
+
+
+
+ Validates if options have valid combination of tags
+
+
+
+
+ Adds the tags.
+
+ The tags to add.
+
+
+
+ Adds a new tag.
+
+ The tag to add.
+
+
+
+ Gets the instance of the tag by type.
+
+ The tag key.
+
+ Instance of the tag if exists or null otherwise.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets a value indicating whether the have been properly configured. Use Validate method as to find the failure reason.
+
+
+ true if TiffOptions are properly configured; otherwise, false.
+
+
+
+
+ Gets or sets the artist.
+
+
+ The artist.
+
+
+
+
+ Gets or sets a value indicating the tiff byte order.
+
+
+
+
+ Gets the icc profile stream.
+
+
+ The icc profile.
+
+
+
+
+ Gets or sets the bits per sample.
+
+
+ The bits per sample value.
+
+ When setting this value keep in mind that it will also set SamplesPerPixel value to array length. These 2 properties are very tightly coupled so may be set alltogether only.
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Gets or sets the copyright.
+
+
+ The copyright.
+
+
+
+
+ Gets or sets the color map.
+
+
+ The color map.
+
+ value
+
+ The color map may be defined for samples per pixel equal to 1 only.
+ or
+ The bits per sample are not defined.
+
+ value;The array length must correspond to the followign formula: 3 * (2**BitsPerSample).
+
+
+
+ Gets or sets the color palette.
+
+
+ The color palette.
+
+
+
+
+ Gets or sets the date and time.
+
+
+ The date and time.
+
+
+
+
+ Gets or sets the name of the document.
+
+
+ The name of the document.
+
+
+
+
+ Gets or sets the alpha storage option. Options other than
+ are used when there are more than 3 defined.
+
+
+ The alpha storage option.
+
+
+
+
+ Gets a value indicating whether the extra samples is present.
+
+
+ true if the extra samples is present; otherwise, false.
+
+
+
+
+ Gets or sets the byte bits fill order.
+
+
+ The byte bits fill order.
+
+
+
+
+ Gets or sets the halftone hints.
+
+
+ The halftone hints.
+
+ value
+ value;Halftone hints array length must be equal to 2.
+
+
+
+ Gets or sets the image description.
+
+
+ The image description.
+
+
+
+
+ Gets or sets the ink names.
+
+
+ The ink names.
+
+
+
+
+ Gets or sets the scanner manufacturer.
+
+
+ The scanner manufacturer.
+
+
+
+
+ Gets or sets the max sample value.
+
+
+ The max sample value.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets or sets the min sample value.
+
+
+ The min sample value.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets or sets the scanner model.
+
+
+ The scanner model.
+
+
+
+
+ Gets or sets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets or sets the page name.
+
+
+ The page name.
+
+
+
+
+ Gets or sets the page number tag.
+
+
+ The page number tag.
+
+ value
+ value;Expected 2 values in the array: PageNumber[0] is the page number and PageNumber[1] is the total number of pages in the document.
+
+
+
+ Gets or sets the photometric.
+
+
+ The photometric.
+
+
+
+
+ Gets or sets the planar configuration.
+
+
+ The planar configuration.
+
+
+
+
+ Gets or sets the resolution unit.
+
+
+ The resolution unit.
+
+
+
+
+ Gets or sets the rows per strip.
+
+
+ The rows per strip.
+
+
+
+
+ Gets or sets the sample format.
+
+
+ The sample format.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets the samples per pixel. To change this property value use the property setter.
+
+
+ The samples per pixel.
+
+
+
+
+ Gets or sets the max sample value. The value has a field type which best matches the sample data (Byte, Short or Long type).
+
+
+ The max sample value.
+
+
+
+
+ Gets or sets the min sample value. The value has a field type which best matches the sample data (Byte, Short or Long type).
+
+
+ The min sample value.
+
+
+
+
+ Gets or sets the software type.
+
+
+ The software type.
+
+
+
+
+ Gets or sets the strip byte counts.
+
+
+ The strip byte counts.
+
+
+
+
+ Gets or sets the strip offsets.
+
+
+ The strip offsets.
+
+
+
+
+ Gets or sets a general indication of the kind of data contained in this subfile.
+
+
+ The general indication of the kind of data contained in this subfile.
+
+
+
+
+ Gets or sets the target printer.
+
+
+ The target printer.
+
+
+
+
+ Gets or sets the threshholding.
+
+
+ The threshholding.
+
+
+
+
+ Gets the total pages.
+
+
+ The total pages.
+
+
+
+
+ Gets or sets the x position.
+
+
+ The x position.
+
+
+
+
+ Gets or sets the resolution settings.
+
+
+
+
+ Gets or sets the x resolution.
+
+
+ The x resolution.
+
+
+
+
+ Gets or sets the y position.
+
+
+ The y position.
+
+
+
+
+ Gets or sets the y resolution.
+
+
+ The y resolution.
+
+
+
+
+ Gets or sets the fax t4 options.
+
+
+ The fax t4 options.
+
+
+
+
+ Gets or sets the predictor for LZW compression.
+
+
+ The predictor type.
+
+
+
+
+ Gets or sets the image length.
+
+
+ The image length.
+
+
+
+
+ Gets or sets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets or sets the tags.
+
+
+ The tags.
+
+
+
+
+ Gets the valid tag count. This is not the total tags count but the number of tags which may be preserved.
+
+
+ The valid tag count.
+
+
+
+
+ Gets the bits per pixel.
+
+
+ The bits per pixel.
+
+
+
+
+ The wmf file format creation options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The WMF options.
+
+
+
+ Gets or sets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ The advanced buffer processor.
+
+
+
+
+ The buffer processor.
+
+
+
+
+ Processes the buffer.
+
+ The buffer to process.
+ The buffer length to process.
+
+
+
+ Finishes the row.
+
+
+
+
+ Finishes the rows.
+
+ The rows count.
+
+
+
+ Conforms to the pixels loaded partially.
+
+
+
+
+ Processes the loaded pixels.
+
+ The pixels rectangle.
+ The pixels.
+ The start pixels point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end pixels point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ The pasd color palette
+
+
+
+
+ Gets the index of the transparent color.
+
+ The index of the transparent color.
+
+
+
+ Gets a value indicating whether transparent color exists.
+
+
+ true if transparent color exists; otherwise, false.
+
+
+
+
+ Gets the transparent color.
+
+ The transparent color.
+
+
+
+ Gets the raw color palette entries data.
+
+ The raw color palette entries data.
+
+
+
+ Gets the raw color palette entries count.
+
+ The raw color palette entries count.
+
+
+
+ The raster image pixel loader.
+
+
+
+
+ Loads pixels partially (by blocks).
+
+ The rectangle to load pixels from.
+ The partial pixel loader.
+
+
+
+ The psd image resource exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The resource.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The resource.
+ The inner exception.
+
+
+
+ Gets the psd resource which caused this exception.
+
+ The resource.
+
+
+
+ Ifc image exception
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Iges image exception
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The image exporter. Can export data from internal Aspose.CAD format to a specified data format.
+
+
+
+
+ Exports the specified image data into specified data format.
+
+ The image data to export.
+ The stream to export data to.
+ Options for image export
+
+
+
+ Exports the specified image data into specified data format.
+
+ The image data to export.
+ The stream to export data to.
+ Options for image export
+ The bounds rectangle.
+
+
+
+ The Cad exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The message.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The namespace contains exceptions thrown by one of the file formats supported.
+
+
+
+
+ The namespace contains exceptions thrown by any of the core CAD components.
+
+
+
+
+ Available codepages
+
+
+
+
+ The default code page - undefined, use system encoding
+
+
+
+
+ Thai language - Windows 874
+
+
+
+
+ Japanese language - Windows 932
+
+
+
+
+ Simple chinese language - Windows 936
+
+
+
+
+ Korean language - Windows 949
+
+
+
+
+ Traditional chinese language - Windows 950
+
+
+
+
+ Central europe language - Windows 1250
+
+
+
+
+ Cyrillic language - Windows 1251
+
+
+
+
+ English language - Windows 1252
+
+
+
+
+ Greek language - Windows 1253
+
+
+
+
+ Turkish language - Windows 1254
+
+
+
+
+ Hebrew language - Windows 1255
+
+
+
+
+ Arabic language - Windows 1256
+
+
+
+
+ Baltic language - Windows 1257
+
+
+
+
+ Vietnam language - Windows 1258
+
+
+
+
+ Western Europe - ISO 8859-1 - Latin-1
+
+
+
+
+ Central Europe - ISO 8859-2 - Latin-2
+
+
+
+
+ ISO Latin 3 - ISO 8859-3
+
+
+
+
+ Baltic ISO - ISO 8859-4
+
+
+
+
+ Cyrillic ISO - ISO 8859-5 - Latin/Cyrillic
+
+
+
+
+ Arabic ISO - ISO 8859-6 - Latin/Arabic
+
+
+
+
+ Greek ISO - ISO 8859-7
+
+
+
+
+ Hebrew ISO - ISO 8859-8
+
+
+
+
+ Latin 5 - ISO 8859-9
+
+
+
+
+ US-ASCII
+
+
+
+
+ IBM CP 437 - OEM US
+
+
+
+
+ IBM CP 850 - Wester European DOS
+
+
+
+
+ IBM CP 852 - Central European DOS
+
+
+
+
+ IBM CP 855 - Cyrillic DOS
+
+
+
+
+ IBM CP 857 - Turkish DOS
+
+
+
+
+ IBM CP 860 - Portugese DOS
+
+
+
+
+ IBM CP 861 - Icelandic DOS
+
+
+
+
+ IBM CP 863 - French Canadian DOS
+
+
+
+
+ IBM CP 864 - Arabic DOS
+
+
+
+
+ IBM CP 865 - Nordic DOS
+
+
+
+
+ IBM CP 869 - Greek Modern (2) DOS
+
+
+
+
+ IBM CP 932 - Japanese - JIS X 0201:1976 + JIS X 0208:1983
+
+
+
+
+ Apple Standard Roman (=Windows 10000)
+
+
+
+
+ Original Big5
+
+
+
+
+ Korean KS C 5601-1987
+
+
+
+
+ Korean Johab
+
+
+
+
+ IBM CP 866 - Cyrillic DOS
+
+
+
+
+ Simplified Chinese GB2312
+
+
+
+
+ Korean Johab Windows (=Windows 1361)
+
+
+
+
+ Unicode UTF-16 (=Windows 1200)
+
+
+
+
+ Unicode UTF-8 (=Windows 65001)
+
+
+
+
+ Code pages used in MIF symbols
+
+
+
+
+ Autodetect MIF encoding from n symbol in M+nXXXX format.
+
+
+
+
+ Codepage index 1 - Windows 932
+
+
+
+
+ Codepage index 2 - Windows 950
+
+
+
+
+ Codepage index 3 - Windows 949
+
+
+
+
+ Codepage index 4 - Windows 936
+
+
+
+
+ Codepage index 5 - Windows 1361
+
+
+
+
+ Code pages converting helper
+
+
+
+
+ Gets the code.
+
+ The code pages.
+ Language encoding
+ Unknown code page
+
+
+
+ Gets integer code.
+
+ The code pages.
+ Language encoding
+ Unknown code page
+
+
+
+ Helps determine MIF codepage
+
+
+
+
+ Gets codepage from n symbol in M+nXXXX format
+
+ The n symbol
+ Codepage
+
+
+
+ Gets codepage for MIF codepage
+
+ MIF codepage
+ Common codepage
+
+
+
+ Encoder fallback that replaces out of codepage characters with CIF sequence
+
+
+
+
+ Creates the actual fallback buffer
+
+ Fallback buffer
+
+
+
+ For surrogate pair of two UTF-16 characters that are encoded as two consequent CIF entries in AutoCad format (slash-escaped) it is 14, so we return 14
+
+
+
+
+ The replacing encoder fallback buffer that actually does the replacement work
+
+
+
+
+ Called when a single-char character out of output codepage is encountered
+
+ Out of codepage character
+ Index of character in the input string
+ True if we do replace, false if not
+
+
+
+ Called when a surrogate pair of characters out of output codepage is encountered
+
+ Out of codepage character - high surrogate
+ Out of codepage character - low surrogate
+ Index of character in the input string
+ True if we do replace, false if not
+
+
+
+ Gets next replacement char
+
+ Replacement char
+
+
+
+ Rewinds position in the replacement buffer by one
+
+ True if successful, false if cannot rewind
+
+
+
+ Count of remaining characters in replacement buffer
+
+
+
+
+ Specifies the order for matrix transform operations.
+
+
+
+
+ The new operation is applied before the old operation.
+
+
+
+
+ The new operation is applied after the old operation.
+
+
+
+
+ Replaces the GDI+ Matrix.
+
+
+ Most algorithms taken from Sun's AffineTransform.java.
+ Java's names for matrix elements used internally.
+ Map of java names to .net ones to description:
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+
+
+
+ An identity transform is one in which the output coordinates are
+ always the same as the input coordinates.
+ If this transform is anything other than the identity transform,
+ the type will either be the constant GENERAL_TRANSFORM or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+
+
+ A translation moves the coordinates by a constant amount in x
+ and y without changing the length or angle of vectors.
+
+
+
+
+ A uniform scale multiplies the length of vectors by the same amount
+ in both the x and y directions without changing the angle between
+ vectors.
+ This flag bit is mutually exclusive with the TypeGeneralScale flag.
+
+
+
+
+ A general scale multiplies the length of vectors by different
+ amounts in the x and y directions without changing the angle
+ between perpendicular vectors.
+ This flag bit is mutually exclusive with the TypeUniformScale flag.
+
+
+
+
+ This constant is a bit mask for any of the scale flag bits.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a mirror image flip about some axis which changes the
+ normally right handed coordinate system into a left handed
+ system in addition to the conversions indicated by other flag bits.
+ A right handed coordinate system is one where the positive X
+ axis rotates counterclockwise to overlay the positive Y axis
+ similar to the direction that the fingers on your right hand
+ curl when you stare end on at your thumb.
+ A left handed coordinate system is one where the positive X
+ axis rotates clockwise to overlay the positive Y axis similar
+ to the direction that the fingers on your left hand curl.
+ There is no mathematical way to determine the angle of the
+ original flipping or mirroring transformation since all angles
+ of flip are identical given an appropriate adjusting rotation.
+ NOTE: TypeFlip was added after GENERAL_TRANSFORM was in public
+ circulation and the flag bits could no longer be conveniently
+ renumbered without introducing binary incompatibility in outside
+ code.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a quadrant rotation by some multiple of 90 degrees in
+ addition to the conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the TypeGeneralRotation flag.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a rotation by an arbitrary angle in addition to the
+ conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the
+
+
+
+
+ This constant is a bit mask for any of the rotation flag bits.
+
+
+
+
+ This constant indicates that the transform defined by this object
+ performs an arbitrary conversion of the input coordinates.
+ If this transform can be classified by any of the above constants,
+ the type will either be the constant TypeIdentity or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+
+
+ Initializes a new instance of the Matrix class as the identity matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+
+
+ Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.
+
+ A structure that represents the rectangle to be transformed.
+ An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
+
+
+
+ Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.
+
+ A structure that represents the rectangle to be transformed.
+ An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Implements the operator ==.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ The result of the operator.
+
+
+
+ Implements the operator !=.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ The result of the operator.
+
+
+
+ Gets the copy of matrix elements.
+
+
+ A matrix elements copy.
+
+
+
+
+ Applies the geometric transform represented by this to a specified array of points.
+
+ The points.
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this using the specified order.
+
+ The scale X.
+ The scale Y.
+ The order.
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this Matrix using (default) Prepend order.
+
+ The sx. The sx. The sx.
+ The sy. The sy. The sy.
+
+
+
+ Applies the specified translation vector to this Matrix in the specified order.
+
+ The offset X.
+ The offset Y.
+ The order.
+
+
+
+ Applies the specified translation vector to this using (default) Prepend order.
+
+ The tx. The tx. The tx.
+ The ty. The ty. The ty.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter, and in the order specified in the order parameter.
+
+ The tx. The tx. The tx.
+ The order. The order. The order.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter using (default) Prepend order.
+
+ The matrix to multiply with.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin (zero x and y coordinates) for this Matrix in the specified order.
+
+ The rotate angle.
+ The matrix order.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin (zero x and y coordinates) for this Matrix in the default (Prepend) order.
+
+ The rotate angle.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the specified order.
+
+ The angle.
+ The point.
+ The order.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the default (Prepend) order.
+
+ The angle.
+ The point.
+
+
+
+ Resets this Matrix to have the elements of the identity matrix.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Determines whether two matrixes are equal.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ True if matrixes are equal.
+
+
+
+ Gets an array of floating-point values that represents the elements of this .
+
+ An array of floating-point values that represents the elements of this .
+
+
+
+ Gets the matrix element at first row first column. Represents scale along X axis.
+
+
+
+
+ Gets the matrix element at first row second column. Represents shear along Y axis.
+
+
+
+
+ Gets the matrix element at second row first column. Represents shear along X axis.
+
+
+
+
+ Gets the matrix element at second row second column. Represents scale along Y axis.
+
+
+
+
+ Gets the matrix element at third row first column. Represents translation along X axis.
+
+
+
+
+ Gets the matrix element at third row first column. Represents translation along Y axis.
+
+
+
+
+ Represents possible modes for colorization of objects.
+
+
+
+
+ Allows to use common color.
+
+
+
+
+ Allows to use separate color for every object.
+
+
+
+
+ One of supported CAD file formats.
+
+
+
+
+ Undefined file format.
+
+
+
+
+ Custom file format.
+
+
+
+
+ Bmp file format.
+
+
+
+
+ Gif file format.
+
+
+
+
+ Jpeg file format.
+
+
+
+
+ Png file format.
+
+
+
+
+ Tiff file format.
+
+
+
+
+ Psd file format.
+
+
+
+
+ Pdf file format.
+
+
+
+
+ Jpeg2000 file format
+
+
+
+
+ The CAD Release 1.0 file format.
+
+
+
+
+ The CAD Release 1.2 file format.
+
+
+
+
+ The CAD Release 1.4 file format.
+
+
+
+
+ The CAD Release 1.5 file format.
+
+
+
+
+ The CAD Release 2.1 file format.
+
+
+
+
+ The CAD Release 2.21 file format.
+
+
+
+
+ The CAD Release 2.22 file format.
+
+
+
+
+ The CAD Release 2.5 file format.
+
+
+
+
+ The CAD Release 2.6 file format.
+
+
+
+
+ The CAD Release 9 file format.
+
+
+
+
+ The CAD Release 10 file format.
+
+
+
+
+ The CAD Release 11 file format.
+
+
+
+
+ The CAD Release 13 file format.
+
+
+
+
+ The CAD Release 14 file format.
+
+
+
+
+ The CAD Release 2000 file format.
+
+
+
+
+ The CAD Release 2004 file format.
+
+
+
+
+ The CAD Release 2007 file format.
+
+
+
+
+ The CAD Release 2010 file format.
+
+
+
+
+ The CAD Release 2013 file format.
+
+
+
+
+ The Dgn version 7 file format.
+
+
+
+
+ The Dgn version 8 file format.
+
+
+
+
+ The Dgn version 9 file format.
+
+
+
+
+ The DXF CAD Release 1.0 file format.
+
+
+
+
+ The DXF CAD Release 1.2 file format.
+
+
+
+
+ The DXF CAD Release 1.4 file format.
+
+
+
+
+ The DXF CAD Release 1.5 file format.
+
+
+
+
+ The DXF CAD Release 2.1 file format.
+
+
+
+
+ The DXF CAD Release 2.21 file format.
+
+
+
+
+ The DXF CAD Release 2.22 file format.
+
+
+
+
+ The DXF CAD Release 2.5 file format.
+
+
+
+
+ The DXF CAD Release 2.6 file format.
+
+
+
+
+ The DXF CAD Release 9 file format.
+
+
+
+
+ The DXF CAD Release 10 file format.
+
+
+
+
+ The DXF CAD Release 11 file format.
+
+
+
+
+ The DXF CAD Release 13 file format.
+
+
+
+
+ The DXF CAD Release 14 file format.
+
+
+
+
+ The DXF CAD Release 2000 file format.
+
+
+
+
+ The DXF CAD Release 2004 file format.
+
+
+
+
+ The DXF CAD Release 2007 file format.
+
+
+
+
+ The DXF CAD Release 2010 file format.
+
+
+
+
+ The DXF CAD Release 2013 file format.
+
+
+
+
+ The IFC version 2X3 file format
+
+
+
+
+ The STL file format.
+
+
+
+
+ The Wmf file format
+
+
+
+
+ The Dwf file format
+
+
+
+
+ The IGES file format
+
+
+
+
+ The PLT file format
+
+
+
+
+ The DWT cad R010
+
+
+
+
+ The DWT cad R012
+
+
+
+
+ The DWT cad R014
+
+
+
+
+ The DWT cad R015
+
+
+
+
+ The DWT cad R021
+
+
+
+
+ The DWT cad R0221
+
+
+
+
+ The DWT cad R0222
+
+
+
+
+ The DWT cad R025
+
+
+
+
+ The DWT cad R026
+
+
+
+
+ The DWT cad R9
+
+
+
+
+ The DWT cad R10
+
+
+
+
+ The DWT cad R11
+
+
+
+
+ The DWT cad R13
+
+
+
+
+ The DWT cad R14
+
+
+
+
+ The DWT cad R2000
+
+
+
+
+ The DWT cad R2004
+
+
+
+
+ The DWT cad R2007
+
+
+
+
+ The DWT cad R2010
+
+
+
+
+ The DWT cad R2013
+
+
+
+
+ The SVG file format
+
+
+
+
+ The CFF, CFF2, CF2 file format
+
+
+
+
+ The OBJ file format
+
+
+
+
+ The CAD Release 2018 file format.
+
+
+
+
+ The namespace contains graphics files processing classes and methods.
+
+
+
+
+ ObserverPoint class
+
+
+
+
+ Initializes a new instance of the class with default rotation angles.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle rotate x.
+ The angle rotate y.
+ The angle rotate z.
+
+
+
+ Gets or sets the angle rotate x.
+
+
+ The angle rotate x.
+
+
+
+
+ Gets or sets the angle rotate y.
+
+
+ The angle rotate y.
+
+
+
+
+ Gets or sets the angle rotate z.
+
+
+ The angle rotate z.
+
+
+
+
+ The image is the base class for all type of drawings.
+
+
+
+
+ Represents an object with bounds.
+
+
+
+
+ Gets the object size.
+
+ The object size.
+
+
+
+ Gets the object bounds.
+
+ The object bounds.
+
+
+
+ Gets the object width.
+
+ The object width.
+
+
+
+ Gets the object height.
+
+ The object height.
+
+
+
+ Unit type of an image.
+
+
+
+
+ Options this image was loaded with.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The color palette.
+
+
+
+
+ Determines whether image can be loaded from the specified file path.
+
+
+ The file path.
+
+
+ true if image can be loaded from the specified file; otherwise, false.
+
+
+ Checks whether loading of a drawing is possible
+
+ var fileName = @"C:\path\drawing.dwg";
+ if (Aspose.CAD.Image.CanLoad(fileName))
+ {
+ using (Aspose.CAD.Image drawing = Aspose.CAD.Image.Load(fileName))
+ {
+ // process the drawing
+ }
+ }
+
+
+
+
+ Determines whether an image can be loaded from the specified file path and optionally using the specified open options
+
+
+ The file path.
+
+
+ The load options.
+
+
+ true if an image can be loaded from the specified file; otherwise, false.
+
+
+ Checks whether loading of a drawing is possible with specified encoding
+
+ var fileName = @"C:\path\drawing.dwg";
+ if (Aspose.CAD.Image.CanLoad(fileName, new LoadOptions
+ {
+ SpecifiedEncoding = CodePages.Japanese
+ }))
+ {
+ using (Aspose.CAD.Image drawing = Aspose.CAD.Image.Load(fileName))
+ {
+ // process the drawing
+ }
+ }
+
+
+
+
+ Determines whether image can be loaded from the specified stream.
+
+
+ The stream to load from.
+
+
+ true if image can be loaded from the specified stream; otherwise, false.
+
+
+ Checks whether loading of a drawing is possible from the stream specified
+
+ using (var f = File.OpenRead("file.dxf"))
+ {
+ var currentPosition = f.Position;
+ if (Image.CanLoad(f))
+ {
+ Assert.AreEqual(currentPosition, f.Position);
+ // process the drawing...
+ }
+ }
+
+
+
+
+ Determines whether image can be loaded from the specified stream and optionally using the specified .
+
+
+ The stream to load from.
+
+
+ The load options.
+
+
+ true if image can be loaded from the specified stream; otherwise, false.
+
+
+ Checks whether loading of a drawing is possible from the stream specified with a corresponding encoding
+
+ using (var f = File.OpenRead("file.dwg", new LoadOptions
+ {
+ SpecifiedEncoding = CodePages.Japanese
+ }))
+ {
+ var currentPosition = f.Position;
+ if (Image.CanLoad(f))
+ {
+ Assert.AreEqual(currentPosition, f.Position);
+ // process the drawing...
+ }
+ }
+
+
+
+
+ Gets the file format.
+
+
+ The file path.
+
+
+ The determined file format.
+
+
+ The file format determined does not mean that the specified image may be loaded. Use one of the CanLoad method overloads to determine whether file may be loaded.
+
+
+ Determines whether file is a DWG drawing
+
+ var fileFormat = Image.GetFileFormat("file.dwg");
+ if (fileFormat >= FileFormat.CadR010 && fileFormat <= FileFormat.CadR2010)
+ {
+ Console.WriteLine("This is a DWG drawing");
+ }
+
+
+
+
+ Gets the file format.
+
+
+ The stream.
+
+
+ The determined file format.
+
+
+ The file format determined does not mean that the specified image may be loaded. Use one of the CanLoad method overloads to determine whether stream may be loaded.
+
+
+ Determines whether a stream contains a DXF drawing
+
+ using (var f = File.OpenRead("file.dxf"))
+ {
+ var fileFormat = Image.GetFileFormat(f);
+ if (fileFormat >= FileFormat.DXFCadR010 && fileFormat <= FileFormat.DXFCadR2010)
+ {
+ Console.WriteLine("This is a DXF drawing");
+ }
+ }
+
+
+
+
+ Gets rectangle which fits the current drawing.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The object width.
+
+
+ The object height.
+
+
+ The fitting rectangle or exception if no fitting rectangle can be found.
+
+
+
+
+ Gets rectangle which fits the current image.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The 32-bit ARGB pixels.
+
+
+ The object width.
+
+
+ The object height.
+
+
+ The fitting rectangle or exception if no fitting rectangle can be found.
+
+
+
+
+ Loads a new image from the specified file.
+
+ The file path to load image from.
+ The load options.
+
+ The loaded drawing.
+
+
+ Loads a drawing to process and unloads all related resources when dispose is called
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg", new LoadOptions
+ {
+ UnloadOnDispose = true
+ }))
+ {
+ // process the drawing
+ }
+
+
+
+
+ Loads a new image from the specified file.
+
+
+ The file path to load image from.
+
+
+ The loaded drawing.
+
+
+ Loads a drawing to process
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ // process the drawing
+ }
+
+
+
+
+ Loads a new image from the specified stream.
+
+ The stream to load image from.
+ The load options.
+
+ The loaded drawing.
+
+
+ Loads a drawing to process from corresponding stream and unloads all related resources when dispose is called
+
+ using (var image = Aspose.CAD.Image.Load(File.OpenRead("fileName.dwg"), new LoadOptions
+ {
+ UnloadOnDispose = true
+ }))
+ {
+ // process the drawing
+ }
+
+
+
+
+ Loads a new image from the specified stream.
+
+
+ The stream to load image from.
+
+
+ The loaded drawing.
+
+
+ Loads a drawing to process from corresponding stream
+
+ using (var image = Aspose.CAD.Image.Load(File.OpenRead("fileName.dwg"))
+ {
+ // process the drawing
+ }
+
+
+
+
+ Determines whether image can be saved to the specified file format represented by the passed save options.
+
+
+ The save options to use.
+
+
+ true if image can be saved to the specified file format represented by the passed save options; otherwise, false.
+
+
+ Checks whether export is possible to BMP with default options
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ if (image.CanSave(new BmpOptions()))
+ {
+ // export to BMP format is possible with this options
+ }
+ }
+
+
+
+
+ Saves the image data to the underlying stream.
+
+
+ Saves all changes made to drawing. Note: Only DXF is currently supported
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ image.Save();
+ }
+
+
+
+
+ Saves the object's data to the specified file location in the specified file format according to save options.
+
+
+ The file path.
+
+
+ The options.
+
+
+ Exports drawing to BMP with specified size
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ image.Save("targetFile.bmp", new BmpOptions()
+ {
+ VectorRasterizationOptions = new CadRasterizationOptions()
+ {
+ PageWidth = 640,
+ PageHeight = 480
+ }
+ });
+ }
+
+
+
+
+ Saves the image's data to the specified stream in the specified file format according to save options.
+
+ The stream to save the image's data to.
+ The save options.
+ optionsBase
+ Cannot save to the specified format as it is not supported at the moment.;optionsBase
+ Image export failed.
+
+ Exports drawing to JPEG format and rotate it by 90 degrees then writes to memory stream
+
+ using (var ms = new MemoryStream())
+ {
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ image.Save(ms, new JpegOptions()
+ {
+ Rotation = RotateFlipType.Rotate90FlipNone
+ });
+ }
+ }
+
+
+
+
+ Gets attribute value.
+
+
+ The attribute.
+
+
+ The attribute value.
+
+
+ Prints 'IfcStructure' attribute of an IFC drawing
+
+ using (var ifcImage = Image.Load("drawing.ifc"))
+ {
+ var structure = ifcImage.GetAttributeValue("IfcStructure");
+ Console.WriteLine(structure);
+ }
+
+
+
+
+ Gets rectangle which fits the current image.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The fitting rectangle
+
+
+
+
+ Gets rectangle which fits the current bitmap taking into account the pixels passed. The passed pixels array count should be equal to the fitting rectangle size.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The 32-bit ARGB pixels array.
+
+
+ The fitting rectangle.
+
+
+
+
+ Called when palette is changed.
+
+
+ The old palette.
+
+
+ The new palette.
+
+
+
+
+ Called when palette is changing.
+
+
+ The old palette.
+
+
+ The new palette.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Releases the contents of image - all entities, objects, etc, so it won't hold any references so memory could be collected
+
+
+
+
+ Gets the image bounds.
+
+ The image bounds.
+
+ Custom processing of a drawing depending on its bounds
+
+ var fileName = @"C:\path\drawing.dwg";
+ using (Aspose.CAD.Image drawing = Aspose.CAD.Image.Load(fileName))
+ {
+ if (drawing.Bounds.Width > 500)
+ {
+ // ...
+ }
+ }
+
+
+
+
+ Gets the container.
+
+
+ The container.
+
+
+ If this property is not null it indicates the image is contained whithin another image.
+
+
+ Gets root (top-level) drawing where current drawing is nested in
+
+ Image drawing = ...
+ while (drawing.Container != null)
+ {
+ drawing = drawing.Container;
+ }
+
+
+
+
+ Gets the image height.
+
+ The image height.
+
+ Prints drawing's height
+
+ Image drawing = ...
+ System.Console.WriteLine("Drawing's height: " + drawing.Height);
+
+
+
+
+ Gets or sets the color palette.
+
+ The color palette.
+
+ Asserts DGN drawing contains palette
+
+ var fileName = @"C:\path\drawing.dgn";
+ using (DgnImage drawing = (DgnImage)Image.Load(fileName))
+ {
+ Assert.IsNotNull(drawing.Palette);
+ }
+
+
+
+
+ Gets the image size.
+
+ The image size.
+
+ Processes a drawing if it is not empty
+
+ var fileName = @"C:\path\drawing.dwg";
+ using (Aspose.CAD.Image drawing = Aspose.CAD.Image.Load(fileName))
+ {
+ if (!drawing.Size.IsEmpty)
+ {
+ // ...
+ }
+ }
+
+
+
+
+ Gets the image width.
+
+ The image width.
+
+ Prints drawing's width
+
+ Image drawing = ...
+ System.Console.WriteLine("Drawing's width: " + drawing.Width);
+
+
+
+
+ Gets or sets a value indicating whether image has background color.
+
+
+
+
+ Gets or sets a value for the background color.
+
+
+
+
+ Gets current unit type.
+
+
+ Normalize export page size despite of unit type defined on drawing
+
+ public static void ExportPageSizeNormalizationExample()
+ {
+ using (CadImage cadImage = (CadImage)Image.Load("fileName.dwg"))
+ {
+ CadVportList viewPorts = cadImage.ViewPorts;
+ CadVportTableObject table = (CadVportTableObject)viewPorts[0];
+ Console.WriteLine(table.ViewTwistAngle.Value);
+
+ bool currentUnitIsMetric = false;
+ double currentUnitCoefficient = 1.0;
+ var values = DefineUnitSystem(cadImage.UnitType);
+ currentUnitIsMetric = values.Item1;
+ currentUnitCoefficient = values.Item2;
+
+ PngOptions pngOptions = new PngOptions();
+ var rasterizationOptions = new CadRasterizationOptions();
+ rasterizationOptions.Layouts = new string[] { "Model" };
+
+ if (currentUnitIsMetric)
+ {
+ double metersCoeff = 1 / 1000.0;
+ double scaleFactor = metersCoeff / currentUnitCoefficient;
+ rasterizationOptions.PageWidth = (float)(210 * scaleFactor);
+ rasterizationOptions.PageHeight = (float)(297 * scaleFactor);
+ rasterizationOptions.UnitType = UnitType.Millimeter;
+ }
+ else
+ {
+ rasterizationOptions.PageWidth = (float)(8.27f / currentUnitCoefficient);
+ rasterizationOptions.PageHeight = (float)(11.69f / currentUnitCoefficient);
+ rasterizationOptions.UnitType = UnitType.Inch;
+ }
+
+ pngOptions.VectorRasterizationOptions = rasterizationOptions;
+ cadImage.Save("fileName.png", pngOptions);
+ }
+ }
+
+ protected static Tuple<bool, double> DefineUnitSystem(UnitType unitType)
+ {
+ var isMetric = false;
+ var coefficient = 1.0;
+
+ switch (unitType)
+ {
+ case UnitType.Parsec:
+ coefficient = 3.0857 * 10000000000000000.0;
+ isMetric = true;
+ break;
+ case UnitType.LightYear:
+ coefficient = 9.4607 * 1000000000000000.0;
+ isMetric = true;
+ break;
+ case UnitType.AstronomicalUnit:
+ coefficient = 1.4960 * 100000000000.0;
+ isMetric = true;
+ break;
+ case UnitType.Gigameter:
+ coefficient = 1000000000.0;
+ isMetric = true;
+ break;
+ case UnitType.Kilometer:
+ coefficient = 1000.0;
+ isMetric = true;
+ break;
+ case UnitType.Decameter:
+ isMetric = true;
+ coefficient = 10.0;
+ break;
+ case UnitType.Hectometer:
+ isMetric = true;
+ coefficient = 100.0;
+ break;
+ case UnitType.Meter:
+ isMetric = true;
+ coefficient = 1.0;
+ break;
+ case UnitType.Centimenter:
+ isMetric = true;
+ coefficient = 0.01;
+ break;
+ case UnitType.Decimeter:
+ isMetric = true;
+ coefficient = 0.1;
+ break;
+ case UnitType.Millimeter:
+ isMetric = true;
+ coefficient = 0.001;
+ break;
+ case UnitType.Micrometer:
+ isMetric = true;
+ coefficient = 0.000001;
+ break;
+ case UnitType.Nanometer:
+ isMetric = true;
+ coefficient = 0.000000001;
+ break;
+ case UnitType.Angstrom:
+ isMetric = true;
+ coefficient = 0.0000000001;
+ break;
+ case UnitType.Inch:
+ coefficient = 1.0;
+ break;
+ case UnitType.MicroInch:
+ coefficient = 0.000001;
+ break;
+ case UnitType.Mil:
+ coefficient = 0.001;
+ break;
+ case UnitType.Foot:
+ coefficient = 12.0;
+ break;
+ case UnitType.Yard:
+ coefficient = 36.0;
+ break;
+ case UnitType.Mile:
+ coefficient = 63360.0;
+ break;
+ }
+
+ return new Tuple<bool, double>(isMetric, coefficient);
+ }
+
+
+
+
+ Assumed unit type when UnitType is set to Unitless
+
+
+
+
+ Gets the attributes collection.
+
+
+ Prints attributes defined on drawing
+
+ public static void PrintDrawingAttributes()
+ {
+ using (var ifcImage = Image.Load("drawing.ifc"))
+ {
+ foreach (string attr in ifcImage.Attributes)
+ {
+ Console.WriteLine(ifcImage.GetAttributeValue(attr));
+ }
+ }
+ }
+
+
+
+
+ The image base options.
+
+
+
+
+ XMP metadata of image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image options.
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+
+
+
+ Gets or sets the parameter for rotate, flip, or rotate and flip the image..
+
+
+
+
+ Gets or sets a of layer names must be exported.
+ All data will be exported without layers if names is not sets.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the source to create image in.
+
+ The source to create image in.
+
+
+
+ Gets or sets the color palette.
+
+ The color palette.
+
+
+
+ Gets or sets the resolution settings.
+
+
+
+
+ Gets or sets the vector rasterization options.
+
+
+ The vector rasterization options.
+
+
+
+
+ Timeout value for export operation
+
+
+
+
+ Token that can be used to interrupt export operation
+
+
+
+
+ The Cad rasterization options.
+
+
+
+
+ The vector rasterization options.
+
+
+
+
+ Gets or sets the border X.
+
+
+ The border X.
+
+
+
+
+ Gets or sets Margins.
+
+
+
+
+ Gets or sets the border Y.
+
+
+ The border Y.
+
+
+
+
+ Gets or sets the page height.
+
+
+
+
+ Gets or sets the page size.
+
+
+
+
+ Gets or sets the page width.
+
+
+
+
+ Gets or sets a background color.
+
+
+
+
+ Wether background of color not equal to default background color of output format (white for PDF and SVG, transparent for raster) should be embedded into output image (if not embedded, background will be default of the output render system, but color of the content that depend on background color will be rendered using stated background color)
+
+
+
+
+ Gets or sets a foreground color.
+
+
+
+
+ Gets or sets unit type of export result.
+
+
+
+
+ Gets or sets a value indicating whether content of a drawing is represented as image inside Pdf. Applicable only for CAD to Pdf export. Default is false.
+
+
+
+
+ Gets or sets options to render bitmap inside pdf (if ContentAsBitmap is set to true).
+
+
+
+
+ Gets or sets the layout page sizes.
+
+
+ The layout page sizes.
+
+
+
+
+ Scale of exported region relative to whole document's image. Calculated as ratio of corresponding dimension of exported region to larger dimension of exported document.
+
+
+
+
+ Position of top left corner of exported region relative to whole document's image, in relative units - 0,0 is top left, 1,1 is bottom of document's image.
+
+
+
+
+ Rendering result handler.
+
+
+ Sets up error handler to catch all export errors and prints them to STDOUT
+
+ using (var image = Aspose.CAD.Image.Load("fileName.dwg"))
+ {
+ image.Save("targetFile.bmp", new BmpOptions()
+ {
+ VectorRasterizationOptions = new CadRasterizationOptions()
+ {
+ RenderResult = result =>
+ {
+ if (!result.IsRenderComplete)
+ {
+ foreach (var resultFailure in result.Failures)
+ {
+ Console.WriteLine($"Error: {resultFailure.Message} (error code {resultFailure.RenderCode})");
+ }
+ }
+ }
+ }
+ });
+ }
+
+
+
+
+ Gets or sets zoom factor. Allows to zoom drawing relatively to canvas size. Value of 1 corresponds to exact fit, value below 1 allows to preserve margins, value above 1 allows to scale drawing up.
+
+
+ Sets up zoom to keep whole drawing borders visible
+
+ using (CadImage cadImage = (CadImage)Image.Load(GetPath(fileName)))
+ {
+ JpegOptions options = new JpegOptions();
+ var rasterizationOptions = new CadRasterizationOptions();
+ rasterizationOptions.Zoom = 0.9f;
+ options.VectorRasterizationOptions = rasterizationOptions;
+ cadImage.Save(outFile, options);
+ }
+
+
+
+
+ Gets or sets the pen options.
+
+
+ The pen options.
+
+
+ Sets up "squared" pen
+
+ using (CadImage cadImage = (CadImage)Image.Load(GetPath(fileName)))
+ {
+ JpegOptions options = new JpegOptions();
+ var rasterizationOptions = new CadRasterizationOptions();
+ rasterizationOptions.PenOptions = new PenOptions() { StartCap = LineCap.Square, EndCap = LineCap.Square };
+ options.VectorRasterizationOptions = rasterizationOptions;
+ cadImage.Save(outFile, options);
+ }
+
+
+
+
+ Gets or sets the observer point.
+
+
+ The observer point.
+
+
+ Sets up observation point to perform export of custom view of a drawing
+
+ using (CadImage cadImage = (CadImage)Image.Load(GetPath(fileName)))
+ {
+ JpegOptions options = new JpegOptions();
+ var rasterizationOptions = new CadRasterizationOptions();
+ rasterizationOptions.PageWidth = 1500;
+ rasterizationOptions.PageHeight = 1500;
+ float xAngle = 10; //Angle of rotation along the X axis
+ float yAngle = 20; //Angle of rotation along the Y axis
+ float zAngle = 30; //Angle of rotation along the Z axis
+ rasterizationOptions.ObserverPoint = new ObserverPoint(xAngle, yAngle, zAngle);
+ options.VectorRasterizationOptions = rasterizationOptions;
+ cadImage.Save(outFile, options);
+ }
+
+
+
+
+ Gets or sets a value indicating whether layouts should be automatically scaled.
+
+
+
+
+ Gets or sets layers of DXF file to export.
+
+
+
+
+ Gets or sets the layoutName.
+
+
+ The specific layout name or null for use Model. Model is also a layout.
+
+
+
+
+ Gets or sets type of drawing.
+
+
+
+
+ Gets or sets no scaling during export.
+
+
+
+
+ The PDF product location
+
+
+
+
+ Gets or sets the quality.
+
+
+ The quality.
+
+
+
+
+ Gets or sets whether to export entities on layouts, which are outside plot area.
+
+
+
+
+ Delegate to create handler to catch CadRenderResult
+
+ Result of a rendering
+
+
+
+ Represents result of rendering
+
+
+
+
+ Initializes a new instance of
+
+
+
+ List of rendering errors
+
+
+
+
+ Gets a value indicating whether rendering is successful
+
+
+
+
+ Represents graphics options for embedded bitmap.
+
+
+
+
+ Initializes a new instance of the GraphicsOptions class.
+
+
+
+
+ Gets or sets text rendering hint.
+
+
+
+
+ Gets or sets smoothing mode.
+
+
+
+
+ Gets or sets interpolation mode.
+
+
+
+
+ The namespace contains classes suitable for export, save or creation of different file formats.
+
+
+
+
+ Drawing pen options
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the start cap.
+
+
+ The start cap.
+
+
+
+
+ Gets or sets the end cap.
+
+
+ The end cap.
+
+
+
+
+ RasterizationQuality class
+
+
+
+
+ Gets or sets the text quality.
+
+
+ The text quality.
+
+
+
+
+ Gets or sets the hatch quality.
+
+
+ The hatch quality.
+
+
+
+
+ Gets or sets the arc and spline quality.
+
+
+ The arc and spline quality.
+
+
+
+
+ Gets or sets a value indicating whether [text thickness normalization].
+
+
+ true if [text thickness normalization]; otherwise, false.
+
+
+
+
+ Gets or sets the objects precision.
+
+
+ The objects precision.
+
+
+
+
+ RasterizationQuality
+
+
+
+
+ The low
+
+
+
+
+ The medium
+
+
+
+
+ The high
+
+
+
+
+ Represents possible missing sections in CAD file
+
+
+
+
+ Header is missing
+
+
+
+
+ Layouts information is missing
+
+
+
+
+ Block information is missing
+
+
+
+
+ Dimension styles information is missing
+
+
+
+
+ Styles information is missing
+
+
+
+
+ Unable to render drawing parts with PDF
+
+
+
+
+ Represents information with results of rendering
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The render code.
+
+
+
+ Gets or sets string message
+
+
+
+
+ Gets or sets code of error
+
+
+
+
+ Represents unit types.
+
+
+
+
+ Kilometer unit
+
+
+
+
+ Meter unit
+
+
+
+
+ Centimeter unit
+
+
+
+
+ Millimeter unit
+
+
+
+
+ Micrometer unit, the same as micron
+
+
+
+
+ Nanometer unit
+
+
+
+
+ Angstrom unit
+
+
+
+
+ Decimeter unit
+
+
+
+
+ Decameter unit
+
+
+
+
+ Hectometer unit
+
+
+
+
+ Gigameter unit
+
+
+
+
+ Astronomical unit
+
+
+
+
+ Light year unit
+
+
+
+
+ Parsec unit
+
+
+
+
+ Mile unit value.
+
+
+
+
+ Yard unit value.
+
+
+
+
+ Foot unit value.
+
+
+
+
+ Inch unit value.
+
+
+
+
+ Mil unit (thousandth of an inch).
+
+
+
+
+ MicroInch unit
+
+
+
+
+ Custom unit.
+
+
+
+
+ Unitless unit.
+
+
+
+
+ Margins class.
+
+
+
+
+ Gets or sets left margin.
+
+
+
+
+ Gets or sets right margin.
+
+
+
+
+ Gets or sets top margin.
+
+
+
+
+ Gets or sets bottom margin.
+
+
+
+
+ Token that can be used to interrupt long operation
+
+
+
+
+ Source that provides token used to interrupt long operations and triggers interruption. Must be disposed!
+
+
+
+
+ Creates source
+
+
+
+
+ Disposes source
+
+
+
+
+ Triggers the interruption of operation
+
+
+
+
+ Token used to interrupt long operations
+
+
+
+
+ Represents the loading options.
+
+
+
+
+ Sets the custom font folders.
+
+
+
+
+ Gets or sets the specified encoding.
+
+
+ The specified encoding.
+
+
+
+
+ Gets or sets encoding for MIF characters
+
+ Specified MIF character encoding
+
+
+
+ Gets or sets the background .
+
+
+ The background color.
+
+ Typically the background color is set whenever pixel value cannot be recovered due to data corruption.
+
+
+
+ Whether to unload all data and free memory when Dispose is called
+
+
+
+
+ Wether to recover non-escaped CIF (U+XXXX) and MIF (M+nXXXX) character notations
+
+
+
+
+ Represents a non generic dictionary.
+
+
+
+
+ The actual dictionary used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The dictionary to use.
+
+
+
+ Removes the element with the specified key from the
+ object.
+
+ The key of the element to remove.
+
+
+
+ Copies the elements of the
+ to an
+ , starting at a particular
+ index.
+
+ The one-dimensional
+ that is the destination of the elements copied from
+ . The
+ must have zero-based indexing.
+ The zero-based index in
+ at which copying begins.
+
+
+
+ Adds an element with the provided key and value to the
+ object.
+
+ The
+ to use as the key of the element to add.
+ The
+ to use as the value of the element to add.
+
+
+
+ Removes all elements from the
+ object.
+
+
+
+
+ Determines whether the
+ object contains an element with the specified key.
+
+ The key to locate in the
+ object.
+
+ true if the
+ contains an element with the key; otherwise, false.
+
+
+
+
+ Gets the enumerator.
+
+ The dictionary enumerator
+
+
+
+ Gets a value indicating whether the
+ object has a fixed size.
+
+ true if the object has a fixed size; otherwise, false.
+
+
+
+ Gets a value indicating whether the
+ object is read-only.
+
+ true if the object is read-only; otherwise, false.
+
+
+
+ Gets an
+ object containing the keys of the
+ object.
+
+ An object containing the keys of the object.
+
+
+
+ Gets the number of elements contained in the
+ .
+
+ The number of elements contained in the .
+
+
+
+ Gets a value indicating whether access to the
+ is synchronized (thread safe).
+
+ true if access to the is synchronized (thread safe); otherwise, false.
+
+
+
+ Gets an object that can be used to synchronize access to the
+ .
+
+ An object that can be used to synchronize access to the .
+
+
+
+ Gets an
+ object containing the values in the
+ object.
+
+ An object containing the values in the object.
+
+
+
+ Gets or sets the element with the specified key.
+
+ The element key.
+ The element with the specified key.
+
+
+
+ Non generic list of objects
+
+
+
+
+ The list - internal container of objects
+
+
+
+
+ Initializes a new instance of the class.
+
+ The list - container of objects.
+
+
+
+ Adds an item to the .
+
+ The to add to the .
+
+ The position into which the new element was inserted.
+
+
+
+
+ Removes all items from the .
+
+
+
+
+ Determines whether the contains a specific value.
+
+ The to locate in the .
+
+ true if the is found in the ; otherwise, false.
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which should be inserted.
+ The to insert into the .
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The to remove from the .
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+
+
+ Copies the elements of the to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets a value indicating whether the has a fixed size.
+
+
+
+
+ Gets a value indicating whether the is read-only.
+
+
+
+
+ Gets or sets the element at the specified index.
+
+ The index.
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+
+
+ Gets a value indicating whether access to the is synchronized (thread safe).
+
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+
+
+ The pixel data format.
+
+
+
+
+ Returns result of non-equality for two classes.
+
+ The first to compare.
+ The second to compare.
+ True if both and contain non-equal data or one of the parameters is null.
+
+
+
+ Returns result of equality for two classes.
+
+ The first to compare.
+ The second to compare.
+ True if both and contain equal data or both parameters are null.
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the cyan, magenta, yellow and black.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the cyan, magenta, yellow and black.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for 16 bits per pixel with 5 bits for each of the red, green and blue, alpha is not defined.
+
+
+ The defined for 16 bits per pixel with 5 bits for each of the red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for indexed 8 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 8 bit per color.
+
+
+
+
+ Gets the defined for indexed 4 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 4 bit per color.
+
+
+
+
+ Gets the defined for indexed 2 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 2 bit per color.
+
+
+
+
+ Gets the defined for indexed 1 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 1 bit per color.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the luma, blue-difference and red-difference chroma components.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the luma, blue-difference and red-difference chroma components.
+
+
+
+
+ Gets the defined for 8 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval.
+
+
+ The defined for 8 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the luma, blue-difference, red-difference and black chroma components.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the luma, blue-difference, red-difference and black chroma components.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for 16 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval and additional 8 bit alpha component.
+
+
+ The defined for 16 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval and additional 8 bit alpha component.
+
+
+
+
+ Gets the pixel format.
+
+
+ The pixel format.
+
+
+
+
+ Gets the bits per pixel.
+
+
+ The bits per pixel.
+
+
+
+
+ Gets the channels count.
+
+
+ The channels count.
+
+
+
+
+ Gets the bits count for each channel.
+
+
+ The channel bits.
+
+
+
+
+ The pixel data format actual meaning.
+
+
+
+
+ The grayscale color space
+
+
+
+
+ The BGR color space.
+
+
+
+
+ The RGB color space.
+
+
+
+
+ The YCbCr color space.
+
+
+
+
+ The CMYK color space.
+
+
+
+
+ The YCCK color space.
+
+
+
+
+ The dithering methods used to control color conversion.
+
+
+
+
+ The palette is ignored
+
+
+
+
+ The palette is not ignored and wise color conversion should be applied.
+
+
+
+
+ The custom converter.
+
+
+
+
+ The namespace contains DWF graphics files processing classes and methods.
+
+
+
+
+ The color converter.
+
+
+
+
+ Converts the passed data to the output format.
+
+ The source format.
+ The source data.
+ The offset in bytes where data copying should begin.
+ The bit start. Note this value is not byte aligned value instead this is actual bit where copying should begin.
+ The samples count.
+ The lines count.
+ The destination format.
+ The output data.
+ The output offset where data copying should start.
+
+ The converted bytes count.
+
+
+
+
+ The color converter for indexed image formats.
+
+
+
+
+ Fills the indexed to indexed image conversion map.
+
+ The conversion map.
+ The source format.
+ The destination format.
+
+
+
+ The namespace for objects which manage Aspose.CAD licensing.
+
+
+
+
+ The raw data settings
+
+
+
+
+ Gets or sets the pixel data format
+
+
+ The pixel data format
+
+
+
+
+ Gets or sets the color palette
+
+
+ The color palette
+
+
+
+
+ Gets or sets the dithering method to use for raw data conversion
+
+
+ The dithering method to use for raw data conversion
+
+
+
+
+ Gets or sets the indexed color converter
+
+
+ The indexed color converter
+
+
+
+
+ Gets or sets the custom color converter
+
+
+ The custom color converter
+
+
+
+
+ Gets or sets the fallback index to use when palette index is out of bounds
+
+
+ The fallback index to use when palette index is out of bounds
+
+
+
+
+ Gets or sets the pixels line size in bytes for raw data processing
+
+
+ The pixels line size in bytes for raw data processing
+
+
+
+
+ Specifies the resize type.
+
+
+
+
+ The pixels are not preserved during resize operation.
+
+
+
+
+ Left top point of the new image will coincide with the left top point of the original image. Crop will occur if required.
+
+
+
+
+ Right top point of the new image will coincide with the right top point of the original image. Crop will occur if required.
+
+
+
+
+ Right bottom point of the new image will coincide with the right bottom point of the original image. Crop will occur if required.
+
+
+
+
+ Left bottom point of the new image will coincide with the left bottom point of the original image. Crop will occur if required.
+
+
+
+
+ Center of the new image will coincide with the center of the original image. Crop will occur if required.
+
+
+
+
+ Resample using lanczos algorithm with a=3.
+
+
+
+
+ Resample using nearest neighbour algorithm.
+
+
+
+
+ Resample using adaptive algorithm based on weighted and blended rational function and lanczos3 interpolation algorithms.
+
+
+
+
+ Resample using bilinear interpolation. Image pre-filtering is allowed to remove the noice before resample, when needed
+
+
+
+
+ The SVG file format creation options.
+
+
+
+
+
+ Version of output DXF format
+
+
+
+
+ Specifies version of DXF file
+
+
+
+
+ R11-R12 DXF version
+
+
+
+
+ The Cad class type names.
+
+
+
+
+ NONE - default type
+
+
+
+
+ ACDBDICTIONARYWDFLT class
+
+
+
+
+ ACDBPLACEHOLDER class
+
+
+
+
+ ARCALIGNEDTEXT class
+
+
+
+
+ DICTIONARYVAR class
+
+
+
+
+ HATCH class
+
+
+
+
+ IDBUFFER class
+
+
+
+
+ IMAGE class
+
+
+
+
+ IMAGEDEF class
+
+
+
+
+ IMAGEDEF_REACTOR class
+
+
+
+
+ LAYER_INDEX class
+
+
+
+
+ LAYOUT class
+
+
+
+
+ LWPOLYLINE class
+
+
+
+
+ OBJECT_PTR class
+
+
+
+
+ OLE2FRAME class
+
+
+
+
+ PLOTSETTINGS class
+
+
+
+
+ RASTERVARIABLES class
+
+
+
+
+ RTEXT class
+
+
+
+
+ SORTENTSTABLE class
+
+
+
+
+ SPATIAL_INDEX class
+
+
+
+
+ SPATIAL_FILTER class
+
+
+
+
+ WIPEOUT class
+
+
+
+
+ WIPEOUTVARIABLES class
+
+
+
+
+ Dxf image class
+
+
+
+
+ Cad image class
+
+
+
+
+ The classes
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Removes entity by its position.
+
+ Position to remove entity from.
+
+
+
+ Removes enity.
+
+ Entity to remove.
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Updates size of an image after changes, that may affect initial size, e.g. removing of entities.
+ MinPoint, MaxPoint, Width and Height properties of image are updated.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+
+ The stream to save the object's data to.
+
+
+
+
+ Releases the contents of image - all entities, objects, etc, so it won't hold any references so memory could be collected
+
+
+
+
+ Gets or sets the default line weight.
+
+
+ The default line weight.
+
+
+
+
+ Gets or sets the default font.
+
+
+ The default font.
+
+
+
+
+ Gets file's encoding
+
+
+
+
+ Gets or sets the specified encoding.
+
+
+ The specified encoding.
+
+
+
+
+ Gets or sets the specified MIF character encoding
+
+
+
+
+ Gets or sets the dimension styles.
+
+
+ The dimension styles.
+
+
+
+
+ Gets or sets the block entities.
+
+
+ The block entities.
+
+
+
+
+ Gets or sets the class entities.
+
+
+ The class entities.
+
+
+
+
+ Gets or sets the thumbnail image.
+
+
+ The thumbnail image.
+
+
+
+
+ Gets or sets the blocks tables.
+
+
+ The blocks tables.
+
+
+
+
+ Gets or sets the dimension styles.
+
+
+ The dimension styles.
+
+
+
+
+ Gets or sets the entities.
+
+
+ The entities.
+
+
+
+
+ Gets or sets the objects.
+
+
+ The objects.
+
+ Invalid value for Objects
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data reading is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets or sets the layers.
+
+
+ The layers.
+
+
+
+
+ Gets the max point.
+
+
+
+
+ Gets the min point.
+
+
+
+
+ Gets or sets the styles.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the layouts.
+
+
+ The layouts.
+
+
+
+
+ Gets or sets the header.
+
+
+ The header.
+
+
+
+
+ Gets or sets the view ports.
+
+
+ The view ports.
+
+
+
+
+ Gets or sets the views.
+
+
+ The views.
+
+
+
+
+ Gets or sets the uc ss.
+
+
+ The uc ss.
+
+
+
+
+ Gets or sets the CadAcds list
+
+
+
+
+ Gets or sets the application identifier tables.
+
+
+ The application identifier tables.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Assigns next available object handle.
+
+ instance to add.
+
+
+
+ Gets next available object handle
+
+
+
+
+ Removes entity.
+
+ Entity to add.
+ Thrown when entity is null
+ Thrown if removing of the current entity is not implemented
+
+
+
+ Adds entity.
+
+ Entity to add.
+ Thrown when entity is null
+ Thrown if the current entity has been added before
+ Thrown if adding of the current entity is not implemented
+
+
+
+ Adds enity.
+
+ Object to add.
+ Thrown when object is null
+ Thrown if the current object has been added before
+ Thrown if adding of the current object is not implemented
+
+
+
+ Removes enity.
+
+ Object to remove.
+ Thrown when object is null
+ Thrown if removing of the current object is not implemented
+
+
+
+ IDwgSectionData interface
+
+
+
+
+ Gets the length.
+
+
+
+
+
+ Gets the bit.
+
+ The index.
+
+
+
+
+ The Cad Object List
+
+
+
+
+ Constructor
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Collection of cad layouts
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a to the dictionary.
+
+ The key.
+ The to add.
+
+
+
+ Determines whether contained within this dictionary.
+
+ The key.
+
+ True if the current dictionary contains an element with the key; otherwise, false.
+
+
+
+
+ Removes the with the specified key.
+
+ The key to remove.
+
+ True if the element is successfully removed; otherwise, false. This method also returns false if was not found in the dictionary.
+
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized.
+
+ True if the dictionary contains an element with the specified key; otherwise, false.
+
+
+
+
+ Clones the dictionary.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ Gets the strongly typed collection of keys.
+
+
+ The strongly typed keys collection.
+
+
+
+
+ Gets the strongly typed values collection.
+
+
+ The strongly typed values collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key.
+ The for the specified key.
+
+
+
+ Cad binary Code Value class
+
+
+
+
+ Code Value class
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the cad integral parameter.
+ The code of the parameter.
+ The value of the parameter.
+
+
+
+ Initializes a new instance of the class.
+
+ The code of the parameter.
+ The value of the parameter.
+
+
+
+ Gets the string value.
+
+ Value as string
+
+
+
+ Gets the binary data.
+
+ Byte array from hexadecimal data.
+
+
+
+ Gets the boolean value.
+
+
+ The .
+
+
+
+
+ The get short value.
+
+
+ The .
+
+
+
+
+ The get integer value.
+
+
+ The .
+
+
+
+
+ The get long value.
+
+
+ The .
+
+
+
+
+ The get double value.
+
+
+ The .
+
+
+
+
+ The get object value.
+
+
+ The .
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Gets the type of the cad integral parameter.
+
+
+ The type of the cad integral parameter.
+
+
+
+
+ Gets the attribute.
+
+
+
+
+ Gets or sets the code.
+
+
+ The code.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the integral parameter.
+ The code of the parameter.
+ The data of the parameter.
+ The data count.
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the integral parameter.
+ The code of the parameter.
+ The value of the parameter.
+
+
+
+ Gets the binary data.
+
+
+ Byte array from hexadecimal data.
+
+
+
+
+ Gets the boolean value.
+
+
+ The .
+
+
+
+
+ The get short value.
+
+
+ The .
+
+
+
+
+ The get integer value.
+
+
+ The .
+
+
+
+
+ The get long value.
+
+
+ The .
+
+
+
+
+ The get double value.
+
+
+ The .
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ CAD blocks collection
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a to the dictionary.
+
+ The key.
+ The to add.
+
+
+
+ Determines whether contained within this dictionary.
+
+ The key.
+
+ True if the current dictionary contains an element with the key; otherwise, false.
+
+
+
+
+ Removes the with the specified key.
+
+ The key to remove.
+
+ True if the element is successfully removed; otherwise, false. This method also returns false if was not found in the dictionary.
+
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized.
+
+ True if the dictionary contains an element with the specified key; otherwise, false.
+
+
+
+
+ Clones the dictionary.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets the strongly typed collection of keys.
+
+
+ The strongly typed keys collection.
+
+
+
+
+ Gets the strongly typed values collection.
+
+
+ The strongly typed values collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key.
+ The for the specified key.
+
+
+
+ The cad view dictionary
+ The following group codes apply to VPORT symbol table entries. The VPORT
+ table is unique: it may contain several entries with the same name (indicating
+ a multiple-viewport configuration). The entries corresponding to the active
+ viewport configuration all have the name *ACTIVE. The first such entry
+ describes the current viewport.
+ Since the name is not unique, we use List as a container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Gets block table by layout handle
+
+ The layout handle.
+ ///
+ The .
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ CAD classes collection
+
+
+
+
+ Clones the list.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Autocad version enum
+
+
+
+
+ Value for non-versioned
+
+
+
+
+ Value the AutoCAD drawing database R10 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database R11 and R12 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database R13 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database R14 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2000 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2004 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2007 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2010 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2013 version number string marker
+
+
+
+
+ Value the AutoCAD drawing database AutoCAD 2018 version number string marker
+
+
+
+
+ Contains Acds names
+
+
+
+
+ NONE - default type
+
+
+
+
+ The ACDSDATA object
+
+
+
+
+ The ACDSSCHEMA object
+
+
+
+
+ The ACDSRECORD object
+
+
+
+
+ Constants values for containers code values
+
+
+
+
+ The visual style
+
+
+
+
+ The grid display
+
+
+
+
+ The grid major
+
+
+
+
+ The default lighting
+
+
+
+
+ The default lighting type
+
+
+
+
+ The brightness
+
+
+
+
+ The contrast
+
+
+
+
+ The display name
+
+
+
+
+ The flags value
+
+
+
+
+ The acad prefix.
+
+
+
+
+ The RTVS properties prefix.
+
+
+
+
+ The Cad attachment point.
+
+
+
+
+ Top left attachment point.
+
+
+
+
+ Top center attachment point.
+
+
+
+
+ Top right attachment point.
+
+
+
+
+ Middle left attachment point.
+
+
+
+
+ Middle center attachment point.
+
+
+
+
+ Middle right attachment point.
+
+
+
+
+ Bottom left attachment point.
+
+
+
+
+ Bottom center attachment point.
+
+
+
+
+ Bottom right attachment point.
+
+
+
+
+ Cad attachment point type
+
+
+
+
+ The top left
+
+
+
+
+ The top center
+
+
+
+
+ The top right
+
+
+
+
+ The middle left
+
+
+
+
+ The middle center
+
+
+
+
+ The middle right
+
+
+
+
+ The bottom left
+
+
+
+
+ The bottom center
+
+
+
+
+ The bottom right
+
+
+
+
+ The boundary path type flag.
+
+
+
+
+ Default boundary type.
+
+
+
+
+ External boundary type.
+
+
+
+
+ Polyline boundary type.
+
+
+
+
+ Derived boundary type.
+
+
+
+
+ Textbox boundary type.
+
+
+
+
+ Outermost boundary type.
+
+
+
+
+ General constant values for Cad file format.
+
+
+
+
+ Begin section marker
+
+
+
+
+ End Section string marker
+
+
+
+
+ The end table marker
+
+
+
+
+ The end block
+
+
+
+
+ The block name
+
+
+
+
+ Variable namning for EOF
+
+
+
+
+ Variable namning prefix for parse
+
+
+
+
+ Begin Entity marker
+
+
+
+
+ Start section string marker
+
+
+
+
+ The thumbnail image
+
+
+
+
+ Start header string marker
+
+
+
+
+ Start tables string marker
+
+
+
+
+ Start table string marker
+
+
+
+
+ Variable namning prefix for parse
+
+
+
+
+ Begin header variable description
+
+
+
+
+ Header variable prefix
+
+
+
+
+ The dictionary
+
+
+
+
+ The DEFAULT TEXT STYLE const
+
+
+
+
+ The face 3d entity name
+
+
+
+
+ The coordination model
+
+
+
+
+ The solid 3d entity name
+
+
+
+
+ The mleader entity name
+
+
+
+
+ The WFPREC3DD header variable
+
+
+
+
+ The reverse WFPREC3DD header variable
+
+
+
+
+ Codepage used for strings in the file
+
+
+
+
+ Version of file format
+
+
+
+
+ The custom property tag
+
+
+
+
+ The custom property.
+
+
+
+
+ The standard style.
+
+
+
+
+ Gets the name of the enum variable type.
+
+
+ Name of the enum object.
+
+
+ string added to the front.
+
+
+ string name of the enum variable type
+
+
+
+
+ Gets the by layer.
+
+
+ The by layer.
+
+
+
+
+ Cad Dimension type enum
+
+
+
+
+ The rotated dimension type
+
+
+
+
+ The aligned dimension type
+
+
+
+
+ The angular dimension type
+
+
+
+
+ The diameter dimension type
+
+
+
+
+ The radius dimension type
+
+
+
+
+ The angular3 point dimension type
+
+
+
+
+ The ordinate dimension type
+
+
+
+
+ The block dimension type
+
+
+
+
+ The Cad drawing direction.
+
+
+
+
+ The left to right.
+
+
+
+
+ The top to bottom.
+
+
+
+
+ The by style.
+
+
+
+
+ The Cad entity coordinates.
+
+
+
+
+ The Cad 10.
+
+
+
+
+ The Cad 11.
+
+
+
+
+ The Cad 12.
+
+
+
+
+ The Cad 13.
+
+
+
+
+ The Cad 14.
+
+
+
+
+ The Cad 15.
+
+
+
+
+ The Cad 16.
+
+
+
+
+ The Cad 17.
+
+
+
+
+ The Cad 18.
+
+
+
+
+ The Cad 210.
+
+
+
+
+ The Cad entity space mode.
+
+
+
+
+ The model space.
+
+
+
+
+ The paper space.
+
+
+
+
+ Contains Entity names
+
+
+
+
+ NONE - default type
+
+
+
+
+ 3DFACE entity
+
+
+
+
+ 3DSOLID entity
+
+
+
+
+ ACAD_PROXY_ENTITY entity
+
+
+
+
+ ARC entity
+
+
+
+
+ ATTDEF entity
+
+
+
+
+ ATTRIB entity
+
+
+
+
+ BODY entity
+
+
+
+
+ The coordination model entity
+
+
+
+
+ DIMENSION entity
+
+
+
+
+ ELLIPSE entity
+
+
+
+
+ HATCH entity
+
+
+
+
+ HELIX entity
+
+
+
+
+ HEADER entity
+
+
+
+
+ IMAGE entity
+
+
+
+
+ INSERT entity
+
+
+
+
+ Callout line entity
+
+
+
+
+ Callout context data entity
+
+
+
+
+ Callout LEADER entity
+
+
+
+
+ LIGHT entity
+
+
+
+
+ LWPOLYLINE entity
+
+
+
+
+ MESH entity
+
+
+
+
+ MLINE entity
+
+
+
+
+ MLEADERSTYLE entity
+
+
+
+
+ MLEADERSTYLE entity
+
+
+
+
+ MULTILEADER entity
+
+
+
+
+ MTEXT entity
+
+
+
+
+ OLEFRAME entity
+
+
+
+
+ OLE@FRAME entity
+
+
+
+
+ POINT entity
+
+
+
+
+ POLYLINE entity
+
+
+
+
+ RAY entity
+
+
+
+
+ REGION entity
+
+
+
+
+ SECTION entity
+
+
+
+
+ SEQEND entity
+
+
+
+
+ SHAPE entity
+
+
+
+
+ SOLID entity
+
+
+
+
+ SPLINE entity
+
+
+
+
+ SUN entity
+
+
+
+
+ SURFACE entity
+
+
+
+
+ TABLE entity
+
+
+
+
+ TEXT entity
+
+
+
+
+ UNDERLAY entity
+
+
+
+
+ PDFUNDERLAY entity
+
+
+
+
+ DWFUNDERLAY entity
+
+
+
+
+ DGNUNDERLAY entity
+
+
+
+
+ VERTEX entity
+
+
+
+
+ VIEWPORT entity
+
+
+
+
+ WIPEOUT entity
+
+
+
+
+ The line entity
+
+
+
+
+ The Xline entity
+
+
+
+
+ The circle entity
+
+
+
+
+ The trace entity
+
+
+
+
+ The tolerance entity
+
+
+
+
+ Plane surface
+
+
+
+
+ Revolved surface
+
+
+
+
+ Extruded surface
+
+
+
+
+ Swept surface
+
+
+
+
+ The lofted surface
+
+
+
+
+ The graphics data container
+
+
+
+
+ The Cad fill setting.
+
+
+
+
+ The fill off.
+
+
+
+
+ The use background color.
+
+
+
+
+ The use window color.
+
+
+
+
+ The use text frame (R2018+)
+
+
+
+
+ Font style table flags.
+
+
+
+
+ Empty flag.
+
+
+
+
+ Fixed pitch (monospace font).
+
+
+
+
+ Variable pitch.
+
+
+
+
+ Roman family (serif).
+
+
+
+
+ Swiss family (sans serif).
+
+
+
+
+ Italic style.
+
+
+
+
+ Bold style.
+
+
+
+
+ Bold italic style.
+
+
+
+
+ Cad group code value types
+
+
+
+
+ Unknown group
+
+
+
+
+ String (with the introduction of extended symbol names in AutoCAD 2000, the 255-character
+ limit has been increased to 2049 single-byte characters not including the newline at the end of the line)
+
+
+
+
+ String (255-character maximum; less for Unicode strings)
+
+
+
+
+ String representing hexadecimal (hex) handle value
+
+
+
+
+ Arbitrary text string
+
+
+
+
+ String representing hex value of binary chunk
+
+
+
+
+ String value
+
+
+
+
+ Comment (string)
+
+
+
+
+ String representing hex object IDs
+
+
+
+
+ Double precision 3D point value
+
+
+
+
+ Double precision floating-point value
+
+
+
+
+ Double precision scalar floating-point value
+
+
+
+
+ 16-bit integer value
+
+
+
+
+ 32-bit integer value
+
+
+
+
+ 64-bit integer value
+
+
+
+
+ Long value (32 bit)
+
+
+
+
+ Boolean flag value
+
+
+
+
+ Polyline type hatch
+
+
+
+
+ The line boundary type
+
+
+
+
+ The circle boundary type
+
+
+
+
+ The ellipse boundary type
+
+
+
+
+ The spline boundary type
+
+
+
+
+ Contains Header Variable names
+
+
+
+
+ Default attrbute
+
+
+
+
+ The acad version.
+
+
+
+
+ The acadmaintver.
+
+
+
+
+ The author header
+
+
+
+
+ The keywords header
+
+
+
+
+ The dwgcodepage.
+
+
+
+
+ The title header
+
+
+
+
+ The subject header
+
+
+
+
+ The Dragmode.
+
+
+
+
+ The Dragvs.
+
+
+
+
+ The Osmode.
+
+
+
+
+ The Blipmode.
+
+
+
+
+ The Coords.
+
+
+
+
+ The Attdia.
+
+
+
+
+ The Attreq.
+
+
+
+
+ The Handling.
+
+
+
+
+ The lastsavedby.
+
+
+
+
+ The custompropertytag
+
+
+
+
+ The customproperty
+
+
+
+
+ The insbase.
+
+
+
+
+ The requiredversions
+
+
+
+
+ The extmin.
+
+
+
+
+ The extmax.
+
+
+
+
+ The limmin.
+
+
+
+
+ The limmax.
+
+
+
+
+ The orthomode.
+
+
+
+
+ The regenmode.
+
+
+
+
+ The fillmode.
+
+
+
+
+ The qtextmode.
+
+
+
+
+ The mirrtext.
+
+
+
+
+ The ltscale.
+
+
+
+
+ The attmode.
+
+
+
+
+ The textsize.
+
+
+
+
+ The tracewid.
+
+
+
+
+ The textstyle.
+
+
+
+
+ The clayer.
+
+
+
+
+ The celtype.
+
+
+
+
+ The cecolor.
+
+
+
+
+ The celtscale.
+
+
+
+
+ The comments
+
+
+
+
+ The delobj
+
+
+
+
+ The dispsilh.
+
+
+
+
+ The dimscale.
+
+
+
+
+ The dimasz.
+
+
+
+
+ The dimexo.
+
+
+
+
+ The dimdli.
+
+
+
+
+ The dimrnd.
+
+
+
+
+ The dimdle.
+
+
+
+
+ The dimexe.
+
+
+
+
+ The dimtp.
+
+
+
+
+ The dimtm.
+
+
+
+
+ The dimtxt.
+
+
+
+
+ The dimcen.
+
+
+
+
+ The dimtsz.
+
+
+
+
+ The dimtol.
+
+
+
+
+ The dimlim.
+
+
+
+
+ The dimtih.
+
+
+
+
+ The dimtoh.
+
+
+
+
+ The dims e 1.
+
+
+
+
+ The dims e 2.
+
+
+
+
+ The dimtad.
+
+
+
+
+ The dimzin.
+
+
+
+
+ The dimblk.
+
+
+
+
+ The dimaso.
+
+
+
+
+ The dimsho.
+
+
+
+
+ The dimpost.
+
+
+
+
+ The dimapost.
+
+
+
+
+ The dimalt.
+
+
+
+
+ The dimaltd.
+
+
+
+
+ The dimaltf.
+
+
+
+
+ The dimlfac.
+
+
+
+
+ The dimtofl.
+
+
+
+
+ The dimtvp.
+
+
+
+
+ The dimtix.
+
+
+
+
+ The dimsoxd.
+
+
+
+
+ The dimsah.
+
+
+
+
+ The dimbl k 1.
+
+
+
+
+ The dimbl k 2.
+
+
+
+
+ The dimstyle.
+
+
+
+
+ The dimclrd.
+
+
+
+
+ The dimclre.
+
+
+
+
+ The dimclrt.
+
+
+
+
+ The dimtfac.
+
+
+
+
+ The dimgap.
+
+
+
+
+ The dimjust.
+
+
+
+
+ The dims d 1.
+
+
+
+
+ The dims d 2.
+
+
+
+
+ The dimtolj.
+
+
+
+
+ The dimtzin.
+
+
+
+
+ The dimaltz.
+
+
+
+
+ The dimalttz.
+
+
+
+
+ The dimfit
+
+
+
+
+ The dimupt.
+
+
+
+
+ The dimdec.
+
+
+
+
+ The dimtdec.
+
+
+
+
+ The dimaltu.
+
+
+
+
+ The dimalttd.
+
+
+
+
+ The dimtxsty.
+
+
+
+
+ The dimaunit.
+
+
+
+
+ The dimadec.
+
+
+
+
+ The dimaltrnd.
+
+
+
+
+ The dimazin.
+
+
+
+
+ The dimdsep.
+
+
+
+
+ The dimatfit.
+
+
+
+
+ The dimfrac.
+
+
+
+
+ The dimfac.
+
+
+
+
+ The dimldrblk.
+
+
+
+
+ The dimlunit.
+
+
+
+
+ The dimlwd.
+
+
+
+
+ The dimlwe.
+
+
+
+
+ The dimtmove.
+
+
+
+
+ The dimfxl.
+
+
+
+
+ The dimfxlon.
+
+
+
+
+ The dimjogang.
+
+
+
+
+ The dimtfill.
+
+
+
+
+ The dimtfillclr.
+
+
+
+
+ The dimarcsym.
+
+
+
+
+ The dimltype.
+
+
+
+
+ The dimlte x 1.
+
+
+
+
+ The dimlte x 2.
+
+
+
+
+ The dimtxtdirection.
+
+
+
+
+ The lunits.
+
+
+
+
+ The luprec.
+
+
+
+
+ The sketchinc.
+
+
+
+
+ The filletrad.
+
+
+
+
+ The aunits.
+
+
+
+
+ The auprec.
+
+
+
+
+ The menu attribute.
+
+
+
+
+ The elevation.
+
+
+
+
+ The pelevation.
+
+
+
+
+ The thickness.
+
+
+
+
+ The limcheck.
+
+
+
+
+ The chamfera.
+
+
+
+
+ The chamferb.
+
+
+
+
+ The chamferc.
+
+
+
+
+ The chamferd.
+
+
+
+
+ The skpoly.
+
+
+
+
+ The tdcreate.
+
+
+
+
+ The tducreate.
+
+
+
+
+ The tdupdate.
+
+
+
+
+ The tduupdate.
+
+
+
+
+ The tdindwg.
+
+
+
+
+ The tdusrtimer.
+
+
+
+
+ The usrtimer.
+
+
+
+
+ The angbase.
+
+
+
+
+ The angdir.
+
+
+
+
+ The pdmode.
+
+
+
+
+ The pdsize.
+
+
+
+
+ The plinewid.
+
+
+
+
+ The splframe.
+
+
+
+
+ The splinetype.
+
+
+
+
+ The splinesegs.
+
+
+
+
+ The handseed.
+
+
+
+
+ The surfta b 1.
+
+
+
+
+ The surfta b 2.
+
+
+
+
+ The surftype.
+
+
+
+
+ The surfu.
+
+
+
+
+ The surfv.
+
+
+
+
+ The ucsbase.
+
+
+
+
+ The ucsname.
+
+
+
+
+ The ucsorg.
+
+
+
+
+ The ucsxdir.
+
+
+
+
+ The ucsydir.
+
+
+
+
+ The ucsorthoref.
+
+
+
+
+ The ucsorthoview.
+
+
+
+
+ The ucsorgtop.
+
+
+
+
+ The ucsorgbottom.
+
+
+
+
+ The ucsorgleft.
+
+
+
+
+ The ucsorgright.
+
+
+
+
+ The ucsorgfront.
+
+
+
+
+ The ucsorgback.
+
+
+
+
+ The pucsbase.
+
+
+
+
+ The pucsname.
+
+
+
+
+ The pucsorg.
+
+
+
+
+ The pucsxdir.
+
+
+
+
+ The pucsydir.
+
+
+
+
+ The pucsorthoref.
+
+
+
+
+ The pucsorthoview.
+
+
+
+
+ The pucsorgtop.
+
+
+
+
+ The pucsorgbottom.
+
+
+
+
+ The pucsorgleft.
+
+
+
+
+ The pucsorgright.
+
+
+
+
+ The pucsorgfront.
+
+
+
+
+ The pucsorgback.
+
+
+
+
+ The user i 1.
+
+
+
+
+ The user i 2.
+
+
+
+
+ The user i 3.
+
+
+
+
+ The user i 4.
+
+
+
+
+ The user i 5.
+
+
+
+
+ The user r 1.
+
+
+
+
+ The user r 2.
+
+
+
+
+ The user r 3.
+
+
+
+
+ The user r 4.
+
+
+
+
+ The user r 5.
+
+
+
+
+ The worldview.
+
+
+
+
+ The saveimages
+
+
+
+
+ The shadedge.
+
+
+
+
+ The shadedif.
+
+
+
+
+ The tilemode.
+
+
+
+
+ The maxactvp.
+
+
+
+
+ The pickstyle
+
+
+
+
+ The pinsbase.
+
+
+
+
+ The plimcheck.
+
+
+
+
+ The pextmin.
+
+
+
+
+ The pextmax.
+
+
+
+
+ The plimmin.
+
+
+
+
+ The plimmax.
+
+
+
+
+ The unitmode.
+
+
+
+
+ The visretain.
+
+
+
+
+ The plinegen.
+
+
+
+
+ The psltscale.
+
+
+
+
+ The treedepth.
+
+
+
+
+ The cmlstyle.
+
+
+
+
+ The cmljust.
+
+
+
+
+ The cmlscale.
+
+
+
+
+ The proxygraphics.
+
+
+
+
+ The measurement.
+
+
+
+
+ The celweight.
+
+
+
+
+ The cepsnid.
+
+
+
+
+ The endcaps.
+
+
+
+
+ The joinstyle.
+
+
+
+
+ The lwdisplay.
+
+
+
+
+ The insunits.
+
+
+
+
+ The hyperlinkbase.
+
+
+
+
+ The stylesheet.
+
+
+
+
+ The xedit.
+
+
+
+
+ The cepsntype.
+
+
+
+
+ The pstylemode.
+
+
+
+
+ The fingerprintguid.
+
+
+
+
+ The versionguid.
+
+
+
+
+ The extnames.
+
+
+
+
+ The psvpscale.
+
+
+
+
+ The olestartup.
+
+
+
+
+ The sortents.
+
+
+
+
+ The indexctl.
+
+
+
+
+ The hidetext.
+
+
+
+
+ The xclipframe.
+
+
+
+
+ The halogap.
+
+
+
+
+ The obscolor.
+
+
+
+
+ The obsltype.
+
+
+
+
+ The intersectiondisplay.
+
+
+
+
+ The intersectioncolor.
+
+
+
+
+ The dimassoc.
+
+
+
+
+ The projectname.
+
+
+
+
+ The cameradisplay.
+
+
+
+
+ The lenslength.
+
+
+
+
+ The cameraheight.
+
+
+
+
+ The stepspersec.
+
+
+
+
+ The stepsize.
+
+
+
+
+ The _3 ddwfprec.
+
+
+
+
+ The psolwidth.
+
+
+
+
+ The psolheight.
+
+
+
+
+ The loftan g 1.
+
+
+
+
+ The loftan g 2.
+
+
+
+
+ The loftma g 1.
+
+
+
+
+ The loftma g 2.
+
+
+
+
+ The loftparam.
+
+
+
+
+ The loftnormals.
+
+
+
+
+ The latitude.
+
+
+
+
+ The longitude.
+
+
+
+
+ The northdirection.
+
+
+
+
+ The timezone.
+
+
+
+
+ The lightglyphdisplay.
+
+
+
+
+ The tilemodelightsynch.
+
+
+
+
+ The cmaterial.
+
+
+
+
+ The solidhist.
+
+
+
+
+ The showhist.
+
+
+
+
+ The dwfframe.
+
+
+
+
+ The dgnframe.
+
+
+
+
+ The realworldscale.
+
+
+
+
+ The interferecolor.
+
+
+
+
+ The interfereobjvs.
+
+
+
+
+ The interferevpvs.
+
+
+
+
+ The cshadow.
+
+
+
+
+ The shadowplanelocation.
+
+
+
+
+ The wfpre c 3 dd.
+
+
+
+
+ The fpre c 3 dd.
+
+
+
+
+ Dim unit value.
+
+
+
+
+ The VIEWCTR
+
+
+
+
+ The VIEWSIZE
+
+
+
+
+ The revisionnumber
+
+
+
+
+ The ISOLINES
+
+
+
+
+ The TEXTQLTY
+
+
+
+
+ The FACETRES
+
+
+
+
+ The PELLIPSE
+
+
+
+
+ The BLOCK_CONTROL_OBJECT
+
+
+
+
+ The LAYER_CONTROL_OBJECT
+
+
+
+
+ The STYLE_CONTROL_OBJECT
+
+
+
+
+ The LINETYPE_CONTROL_OBJECT
+
+
+
+
+ The VIEW_CONTROL_OBJECT
+
+
+
+
+ The UCS_CONTROL_OBJECT
+
+
+
+
+ The VPORT_CONTROL_OBJECT
+
+
+
+
+ The APPID_CONTROL_OBJECT
+
+
+
+
+ Snapmode
+
+
+
+
+ Snapunit
+
+
+
+
+ Snapbase
+
+
+
+
+ Snapangle
+
+
+
+
+ Snapstyle
+
+
+
+
+ Snap iso pair
+
+
+
+
+ Gridmode
+
+
+
+
+ grid unit
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The LTYPE_BLOCK_RECORD_PAPER_SPACE
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The DIMSTYLE_CONTROL_OBJECT
+
+
+
+
+ The MENUNAME
+
+
+
+
+ The DICTIONARY_LAYOUTS
+
+
+
+
+ The DICTIONARY_PLOTSETTINGS
+
+
+
+
+ The DICTIONARY_PLOTSTYLES
+
+
+
+
+ The DICTIONARY_MATERIALS
+
+
+
+
+ The DICTIONARY_COLORS
+
+
+
+
+ The DICTIONARY_VISUALSTYLE
+
+
+
+
+ The CURRENT_VIEWPORT
+
+
+
+
+ The VIEWPORT_ENTITY_HEADER_CONTROL_OBJECT
+
+
+
+
+ The DIMALTMZF
+
+
+
+
+ The DIMALTMZS
+
+
+
+
+ The DIMMZF
+
+
+
+
+ The DIMMZS
+
+
+
+
+ The Cad helix limitation.
+
+
+
+
+ The turn height.
+
+
+
+
+ The turn count.
+
+
+
+
+ The height.
+
+
+
+
+ The Cad horizontal direcrtion.
+
+
+
+
+ The left direction.
+
+
+
+
+ The right direction.
+
+
+
+
+ The Cad integral parameter type.
+
+
+
+
+ The unknown parameter.
+
+
+
+
+ The boolean parameter.
+
+
+
+
+ The double parameter.
+
+
+
+
+ The integer parameter.
+
+
+
+
+ The short parameter.
+
+
+
+
+ The string parameter.
+
+
+
+
+ The long parameter
+
+
+
+
+ The binary parameter
+
+
+
+
+ Flag to control.
+
+
+
+
+ Indicates the PSLTSCALE value for this layout when this layout is current
+
+
+
+
+ Indicates the LIMCHECK value for this layout when this layout is current
+
+
+
+
+ Orthographic type of UCS.
+
+
+
+
+ Is not orthographic
+
+
+
+
+ Orthographic is top
+
+
+
+
+ Orthographic is bottom
+
+
+
+
+ Orthographic is front
+
+
+
+
+ Orthographic is back
+
+
+
+
+ Orthographic is left
+
+
+
+
+ Orthographic is right
+
+
+
+
+ The Cad line spacing.
+
+
+
+
+ The at least.
+
+
+
+
+ The exact.
+
+
+
+
+ Cad Line spacing enum
+
+
+
+
+ At least (taller characters will override)
+
+
+
+
+ The exact (taller characters will not override)
+
+
+
+
+ The Cad LWPOLYLINE flags.
+
+
+
+
+ The none flags.
+
+
+
+
+ The close polyline.
+
+
+
+
+ The Plinegen.
+
+
+
+
+ The Cad MULTILINE flags.
+
+
+
+
+ The unlocked flag.
+
+
+
+
+ The closed flag.
+
+
+
+
+ The suppress start caps flag.
+
+
+
+
+ The suppress end caps flag.
+
+
+
+
+ Contains Object names
+
+
+
+
+ NONE - default type
+
+
+
+
+ The ACSH_HISTORY_CLASS object
+
+
+
+
+ The ACSH_PYRAMID_CLASS object
+
+
+
+
+ ACAD_PROXY_OBJECT object
+
+
+
+
+ ACDBNAVISWORKSMODELDEF object
+
+
+
+
+ The ACMDATAENTRYBLOCK object
+
+
+
+
+ The ACDB_BLOCKREPRESENTATION_DATA object
+
+
+
+
+ The ACDB_ALDIMOBJECTCONTEXTDATA_CLASS object
+
+
+
+
+ The ACDB_MTEXTOBJECTCONTEXTDATA_CLASS
+
+
+
+
+ The ACDB_MLEADEROBJECTCONTEXTDATA_CLASS
+
+
+
+
+ The ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION object
+
+
+
+
+ The acad evaluation graph
+
+
+
+
+ The BLOCKVISIBILITYGRIP object
+
+
+
+
+ The BLOCKFLIPGRIP object
+
+
+
+
+ The BLOCKLINEARGRIP object
+
+
+
+
+ The blockxygrip object
+
+
+
+
+ The blockalignmentgrip object
+
+
+
+
+ The BLOCKSTRETCHACTION object
+
+
+
+
+ The BLOCKSCALEACTION object
+
+
+
+
+ The BLOCKFLIPACTION object
+
+
+
+
+ The BLOCKMOVEACTION object
+
+
+
+
+ The BLOCKGRIPLOCATIONCOMPONENT object.
+
+
+
+
+ The BLOCKROTATIONGRIP object
+
+
+
+
+ The BLOCKPOINTPARAMETER object.
+
+
+
+
+ ACAMGFILTERDAT object
+
+
+
+
+ The ACDBASSOCPERSSUBENTMANAGER object
+
+
+
+
+ The ACDBPERSSUBENTMANAGER object
+
+
+
+
+ ACDBDICTIONARYWDFLT object
+
+
+
+
+ The acdbassocnetwork
+
+
+
+
+ ACDBPLACEHOLDER object
+
+
+
+
+ The breakdata object
+
+
+
+
+ The block visibility parameter object
+
+
+
+
+ The block basepoint parameter object
+
+
+
+
+ The block alignment parameter object
+
+
+
+
+ The block rotation parameter object
+
+
+
+
+ The BLOCKROTATEACTION parameter object
+
+
+
+
+ The block linear parameter object
+
+
+
+
+ The block flip parameter object
+
+
+
+
+ DATATABLE object
+
+
+
+
+ The DBCOLOR object
+
+
+
+
+ The DGNDEFINITION object
+
+
+
+
+ The DWFDEFINITION object
+
+
+
+
+ The PDFDEFINITION object
+
+
+
+
+ DICTIONARY object
+
+
+
+
+ The ACMDATADICTIONARY object
+
+
+
+
+ DICTIONARYVAR object
+
+
+
+
+ DIMASSOC object
+
+
+
+
+ FIELD object
+
+
+
+
+ The fieldlist object
+
+
+
+
+ GEODATA object
+
+
+
+
+ GROUP object
+
+
+
+
+ IDBUFFER object
+
+
+
+
+ IMAGEDEF object
+
+
+
+
+ IMAGEDEF_REACTOR object
+
+
+
+
+ LAYER_INDEX object
+
+
+
+
+ LAYER_FILTER object
+
+
+
+
+ LAYOUT object
+
+
+
+
+ LIGHTLIST object
+
+
+
+
+ MATERIAL object
+
+
+
+
+ MLINESTYLE object
+
+
+
+
+ OBJECT_PTR object
+
+
+
+
+ PLOTSETTINGS object
+
+
+
+
+ RASTERVARIABLES object
+
+
+
+
+ RENDERENVIRONMENT object
+
+
+
+
+ RENDERGLOBAL object
+
+
+
+
+ MENTALRAYRENDERSETTINGS object
+
+
+
+
+ The RAPIDRTRENDERENVIRONMENT object
+
+
+
+
+ The RAPIDRTRENDERSETTINGS object
+
+
+
+
+ SECTIONMANAGER object
+
+
+
+
+ The SECTIONSETTINGS object
+
+
+
+
+ SECTIONSETTINGS object
+
+
+
+
+ SPATIAL_INDEX object
+
+
+
+
+ SPATIAL_FILTER object
+
+
+
+
+ SORTENTSTABLE object
+
+
+
+
+ SKYLIGHT_BACKGROUND object
+
+
+
+
+ TABLESTYLE object
+
+
+
+
+ UNDERLAYDEFINITION object
+
+
+
+
+ VISUALSTYLE object
+
+
+
+
+ The detailviewstyle object
+
+
+
+
+ VBA_PROJECT object
+
+
+
+
+ WIPEOUTVARIABLES object
+
+
+
+
+ The sunstudy object
+
+
+
+
+ The tablecontent object
+
+
+
+
+ The tablegeometry object
+
+
+
+
+ The sun object
+
+
+
+
+ XRECORD object
+
+
+
+
+ CELLSTYLEMAP object
+
+
+
+
+ TABLEFORMAT object
+
+
+
+
+ CONTENTFORMAT object
+
+
+
+
+ MARGIN object
+
+
+
+
+ GRIDFORMAT object
+
+
+
+
+ CELLMARGIN object
+
+
+
+
+ CELLSTYLE object
+
+
+
+
+ MLEADERSTYLE object
+
+
+
+
+ The scale object
+
+
+
+
+ The acdbsectionviewstyle
+
+
+
+
+ Cad Ordinate position
+
+
+
+
+ The y ordinate
+
+
+
+
+ The x ordinate
+
+
+
+
+ Type of parsing parameters
+
+
+
+
+ The must have.
+
+
+
+
+ The optional.
+
+
+
+
+ Plot layout flag.
+
+
+
+
+ The plot viewport borders
+
+
+
+
+ The show plot styles
+
+
+
+
+ The plot centered
+
+
+
+
+ The plot hidden
+
+
+
+
+ The use standard scale
+
+
+
+
+ The plot plot styles
+
+
+
+
+ The scale line weights
+
+
+
+
+ The print line weights
+
+
+
+
+ The draw viewports first
+
+
+
+
+ The model type
+
+
+
+
+ The update paper
+
+
+
+
+ The zoom to paper on update
+
+
+
+
+ The initializing
+
+
+
+
+ The previous plot initialize
+
+
+
+
+ Plot paper units.
+
+
+
+
+ The plot in inches
+
+
+
+
+ The plot in millimeters
+
+
+
+
+ The plot in pixels
+
+
+
+
+ Plot rotation.
+
+
+
+
+ The no rotation
+
+
+
+
+ The counterclockwise90 degrees
+
+
+
+
+ The upside down
+
+
+
+
+ The clockwise90 degrees
+
+
+
+
+ Standard scale type.
+
+
+
+
+ The scaled To fit
+
+
+
+
+ Scale is 1/128"=1'
+
+
+
+
+ Scale is 1/64"=1'
+
+
+
+
+ Scale is 1/32"=1'
+
+
+
+
+ Scale is 1/16"=1'
+
+
+
+
+ Scale is 3/32"=1'
+
+
+
+
+ Scale is 1/8"=1'
+
+
+
+
+ Scale is 3/16"=1'
+
+
+
+
+ Scale is 1/4"=1'
+
+
+
+
+ Scale is 3/8"=1'
+
+
+
+
+ Scale is 1/2"=1'
+
+
+
+
+ Scale is 3/4"=1'
+
+
+
+
+ Scale is 1"=1'
+
+
+
+
+ Scale is 3"=1'
+
+
+
+
+ Scale is 6"=1'
+
+
+
+
+ Scale is 1'=1'
+
+
+
+
+ Scale is 1:1
+
+
+
+
+ Scale is 1:2
+
+
+
+
+ Scale is 1:4
+
+
+
+
+ Scale is 1:8
+
+
+
+
+ Scale is 1:10
+
+
+
+
+ Scale is 1:16
+
+
+
+
+ Scale is 1:20
+
+
+
+
+ Scale is 1:30
+
+
+
+
+ Scale is 1:40
+
+
+
+
+ Scale is 1:50
+
+
+
+
+ Scale is 1:100
+
+
+
+
+ Scale is 2:1
+
+
+
+
+ Scale is 4:1
+
+
+
+
+ Scale is 8:1
+
+
+
+
+ Scale is 10:1
+
+
+
+
+ Scale is 100:1
+
+
+
+
+ Scale is 1000:1
+
+
+
+
+ Plot type (portion of paper space to output to the media).
+
+
+
+
+ The no rotation
+
+
+
+
+ The counterclockwise90 degrees
+
+
+
+
+ The upside down
+
+
+
+
+ The clockwise90 degrees
+
+
+
+
+ The Cad POLYLINE flags.
+
+
+
+
+ The none flags.
+
+
+
+
+ The close d_ poly.
+
+
+
+
+ The curv e_ fit.
+
+
+
+
+ The splin e_ fit.
+
+
+
+
+ The pol y_3 d.
+
+
+
+
+ The polymes h_3 d.
+
+
+
+
+ The close d_ pol y_ mesh.
+
+
+
+
+ The polyfac e_ mesh.
+
+
+
+
+ The generate d_ pattern.
+
+
+
+
+ Contains Section type
+
+
+
+
+ Section is not set - default
+
+
+
+
+ Another section
+
+
+
+
+ Header string marker
+
+
+
+
+ Tables string marker
+
+
+
+
+ Blocks string marker
+
+
+
+
+ Entities string marker
+
+
+
+
+ Classes string marker
+
+
+
+
+ Objects string marker
+
+
+
+
+ Entities string marker
+
+
+
+
+ ACDS string marker
+
+
+
+
+ ShadePlot mode.
+
+
+
+
+ As displayed
+
+
+
+
+ The wireframe
+
+
+
+
+ The hidden
+
+
+
+
+ The rendered
+
+
+
+
+ ShadePlot resolution level.
+
+
+
+
+ Resolution is draft
+
+
+
+
+ Resolution is preview
+
+
+
+
+ Resolution is normal
+
+
+
+
+ Resolution is presentation
+
+
+
+
+ Resolution is maximum
+
+
+
+
+ Resolution is custom
+
+
+
+
+ Shadow enumeration
+
+
+
+
+ The cast and receive shadow.
+
+
+
+
+ The cast shadow.
+
+
+
+
+ The receive shadow.
+
+
+
+
+ The ignore shadow.
+
+
+
+
+ The Cad table names.
+
+
+
+
+ extended data application registry.
+
+
+
+
+ Cad name string.
+
+
+
+
+ Cad name string.
+
+
+
+
+ Cad name string.
+
+
+
+
+ block records.
+
+
+
+
+ blocks table name.
+
+
+
+
+ clases table name.
+
+
+
+
+ dictionary
+
+
+
+
+ dimension styles.
+
+
+
+
+ end table code.
+
+
+
+
+ end of file
+
+
+
+
+ end secction code.
+
+
+
+
+ end of an element sequence
+
+
+
+
+ end table code.
+
+
+
+
+ entities section.
+
+
+
+
+ header section.
+
+
+
+
+ layers section.
+
+
+
+
+ line types.
+
+
+
+
+ objects section.
+
+
+
+
+ Cad name string.
+
+
+
+
+ tables section name.
+
+
+
+
+ text styles table.
+
+
+
+
+ ucs table name.
+
+
+
+
+ not defined .
+
+
+
+
+ view ports table.
+
+
+
+
+ views table.
+
+
+
+
+ Contains TABLE Types
+
+
+
+
+ The application id.
+
+
+
+
+ The dimension style .
+
+
+
+
+ The layer table.
+
+
+
+
+ The line type.
+
+
+
+
+ The style table.
+
+
+
+
+ The ucs table.
+
+
+
+
+ The view table.
+
+
+
+
+ The view port.
+
+
+
+
+ The block record.
+
+
+
+
+ DXF file formats
+
+
+
+
+ ASCII DXF file format.
+
+
+
+
+ Binary DXF file format
+
+
+
+
+ The namespace contains Cad file format constants.
+
+
+
+
+ Dimension styles dictionary.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a to the dictionary.
+
+ The key.
+ The to add.
+
+
+
+ Determines whether contained within this dictionary.
+
+ The key.
+
+ True if the current dictionary contains an element with the key; otherwise, false.
+
+
+
+
+ Removes the with the specified key.
+
+ The key to remove.
+
+ True if the element is successfully removed; otherwise, false. This method also returns false if was not found in the dictionary.
+
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized.
+
+ True if the dictionary contains an element with the specified key; otherwise, false.
+
+
+
+
+ Clones the dictionary.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets the strongly typed collection of keys.
+
+
+ The strongly typed keys collection.
+
+
+
+
+ Gets the strongly typed values collection.
+
+
+ The strongly typed values collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key.
+ The for the specified key.
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ Entities enum
+
+
+
+
+ APP: entity name (changes each time a drawing is opened)
+
+
+
+
+ Entity type
+
+
+
+
+ Entity attribute value
+
+
+
+
+ The Cad two
+
+
+
+
+ The Cad 003.
+
+
+
+
+ Handle of the object
+
+
+
+
+ 102 Start or End of application-defined group “{application_name” (optional)
+
+
+
+
+ Soft-pointer ID/handle to.. depends on situation
+
+
+
+
+ The Cad 331.
+
+
+
+
+ Hard-owner ID/handle to owner dictionary (optional)
+
+
+
+
+ Subclass marker
+
+
+
+
+ The Cad 101
+
+
+
+
+ Absent or zero indicates entity is in model space. 1 indicates entity is in paper space (optional)
+
+
+
+
+ APP: layout tab name
+
+
+
+
+ Layer name
+
+
+
+
+ Linetype name (present if not BYLAYER). The special name BYBLOCK indicates a floating linetype (optional)
+
+
+
+
+ The Cad007
+
+
+
+
+ Hard-pointer ID/handle to material object (present if not BYLAYER)
+
+
+
+
+ The Cad350
+
+
+
+
+ Color number (present if not BYLAYER);
+
+
+
+
+ The cad105
+
+
+
+
+ The cad 160.
+
+
+
+
+ The cad 161.
+
+
+
+
+ The cad 160.
+
+
+
+
+ The Cad 064.
+
+
+
+
+ The Cad 065.
+
+
+
+
+ The Cad 068.
+
+
+
+
+ The Cad 069.
+
+
+
+
+ Lineweight enum value. Stored and moved around as a 16-bit integer
+
+
+
+
+ Linetype scale (optional)
+
+
+
+
+ The Cad049
+
+
+
+
+ Object visibility (optional): 0 = Visible; 1 = Invisible
+
+
+
+
+ Number of bytes in the proxy entity graphics represented in the subsequent 310 groups,
+ which are binary chunk records (optional)
+
+
+
+
+ Proxy entity graphics data (multiple lines; 256 characters max. per line)
+
+
+
+
+ A 24-bit color value that should be dealt with in terms of bytes with values
+ of 0 to 255. The lowest byte is the blue value, the middle byte is the
+ green value, and the third byte is the red value. The top byte is always 0
+
+
+
+
+ The Cad 421.
+
+
+
+
+ The Cad 422.
+
+
+
+
+ The Cad 423.
+
+
+
+
+ The Cad 424.
+
+
+
+
+ The Cad 425.
+
+
+
+
+ The Cad 426.
+
+
+
+
+ The Cad 427.
+
+
+
+
+ The Cad 428.
+
+
+
+
+ The Cad 429.
+
+
+
+
+ The Cad 430.
+
+
+
+
+ The Cad 431.
+
+
+
+
+ The Cad 432.
+
+
+
+
+ The Cad 433.
+
+
+
+
+ The Cad 434.
+
+
+
+
+ The Cad 435.
+
+
+
+
+ The Cad 436.
+
+
+
+
+ The Cad 437.
+
+
+
+
+ The Cad 438.
+
+
+
+
+ The Cad 439.
+
+
+
+
+ Transparency value.
+
+
+
+
+ The Cad 441.
+
+
+
+
+ 390 Hard-pointer ID/handle to the plot style object
+
+
+
+
+ Shadow mode
+
+
+
+
+ Points count
+
+
+
+
+ First point or corner X
+
+
+
+
+ First point or corner Y
+
+
+
+
+ First point or corner Z
+
+
+
+
+ End point or corner X
+
+
+
+
+ End point or corner Y
+
+
+
+
+ The Cad022
+
+
+
+
+ End point or corner Z
+
+
+
+
+ Start tangent X
+
+
+
+
+ Start tangent Z
+
+
+
+
+ End tangent X
+
+
+
+
+ The Cad 016.
+
+
+
+
+ End tangent Y
+
+
+
+
+ The Cad 026.
+
+
+
+
+ End tangent Z
+
+
+
+
+ The Cad 036.
+
+
+
+
+ Radius or width
+
+
+
+
+ First angle or Rotation angle or...
+
+
+
+
+ First angle or Rotation angle or...
+
+
+
+
+ The Cad fifty three
+
+
+
+
+ Extrusion Direction X Value
+
+
+
+
+ Extrusion Direction Y Value
+
+
+
+
+ Extrusion Direction Z Value
+
+
+
+
+ Extrusion Direction Y Value
+
+
+
+
+ The cad 221 attribute
+
+
+
+
+ The cad 222 attribute
+
+
+
+
+ Extrusion Direction Z Value
+
+
+
+
+ The cad 231 attribute
+
+
+
+
+ The cad 232 attribute
+
+
+
+
+ The annotation placement point offset x value
+
+
+
+
+ The annotation placement point offset y value
+
+
+
+
+ The annotation placement point offset z value
+
+
+
+
+ Thickness (optional; default = 0)
+
+
+
+
+ Obsolete; formerly an “entities follow flag” (optional; ignore if present)
+
+
+
+
+ Default end width (optional; default = 0)
+
+
+
+
+ Polygon mesh M vertex count (optional; default = 0)
+
+
+
+
+ Polygon mesh N vertex count (optional; default = 0)
+
+
+
+
+ Smooth surface M density (optional; default = 0)
+
+
+
+
+ Smooth surface N density (optional; default = 0)
+
+
+
+
+ Curves and smooth surface type (optional; default = 0); integer codes, not bit-coded:
+
+
+
+
+ The Cad 076.
+
+
+
+
+ The Cad 078.
+
+
+
+
+ The Cad 079.
+
+
+
+
+ Bulge (optional; default is 0). The bulge is the tangent of one fourth the included angle for an
+ arc segment, made negative if the arc goes clockwise from the start point to the endpoint. A
+ bulge of 0 indicates a straight segment, and a bulge of 1 is a semicircle
+
+
+
+
+ Control Point Tolerance
+
+
+
+
+ Vertex flags
+
+
+
+
+ Vertex identifier
+
+
+
+
+ Handendness of the helix
+
+
+
+
+ Constrain type
+
+
+
+
+ The Cad 281.
+
+
+
+
+ The Cad 282.
+
+
+
+
+ The Cad 283.
+
+
+
+
+ The Cad 289.
+
+
+
+
+ Leader Style Id
+
+
+
+
+ Leader Style Id
+
+
+
+
+ LeaderLine wight
+
+
+
+
+ Enable Dogleg
+
+
+
+
+ Content Type
+
+
+
+
+ Text Style ID
+
+
+
+
+ Text Left Attachment Type
+
+
+
+
+ Text attachment direction
+
+
+
+
+ Bottom text attachment direction
+
+
+
+
+ Top text attachment direction
+
+
+
+
+ The Cad 275.
+
+
+
+
+ The Cad 276.
+
+
+
+
+ The Cad 277.
+
+
+
+
+ The Cad 278.
+
+
+
+
+ The Cad 279.
+
+
+
+
+ Text Align in IPE
+
+
+
+
+ Text Attachment Point
+
+
+
+
+ Text Direction Negative
+
+
+
+
+ Block Attribute Text String
+
+
+
+
+ Block Attribute Width
+
+
+
+
+ Block Attribute Index
+
+
+
+
+ Arrowhead ID
+
+
+
+
+ Arrowhead Index
+
+
+
+
+ Enable Annotation Scale
+
+
+
+
+ Block Content Connection Type
+
+
+
+
+ Block Content Color
+
+
+
+
+ Enable Frame Text
+
+
+
+
+ Block Content ID
+
+
+
+
+ Text Angle Type
+
+
+
+
+ Text Alignment Type
+
+
+
+
+ Text Right Attachment Type
+
+
+
+
+ The Cad 096.
+
+
+
+
+ Arrowhead ID
+
+
+
+
+ Leader Line Type
+
+
+
+
+ Arrowhead Size
+
+
+
+
+ Landing Gap
+
+
+
+
+ The cad 303 attribute
+
+
+
+
+ Default Text Contents
+
+
+
+
+ The cad 305 attribute
+
+
+
+
+ The cad 306 attribute
+
+
+
+
+ The cad 307 attribute
+
+
+
+
+ The cad 308 attribute
+
+
+
+
+ Line Spacing Factor
+
+
+
+
+ Text Background Scale Factor
+
+
+
+
+ Text Column Width
+
+
+
+
+ Text Column Gutter Width
+
+
+
+
+ 144 Text Column Height
+
+
+
+
+ Text Use Word Break
+
+
+
+
+ 296 Enumeration
+
+
+
+
+ The cad 298
+
+
+
+
+ Block Content Normal Direction X
+
+
+
+
+ Block Content Normal Direction Y
+
+
+
+
+ Block Content Normal Direction Z
+
+
+
+
+ Block Content Position X
+
+
+
+
+ Block Content Position Y
+
+
+
+
+ Block Content Position Z
+
+
+
+
+ The Cad 038.
+
+
+
+
+ Block Content Scale
+
+
+
+
+ Block Content Rotation
+
+
+
+
+ Block Transformation Matrix
+
+
+
+
+ MLeader Plane Origin Point
+
+
+
+
+ MLeader Plane X-Axis Direction
+
+
+
+
+ MLeader Plane Y-Axis Direction
+
+
+
+
+ MLeader Plane Normal Reversed
+
+
+
+
+ Context data
+
+
+
+
+ The cad301
+
+
+
+
+ End context data
+
+
+
+
+ Indicator color
+
+
+
+
+ The Cad 411.
+
+
+
+
+ The Cad 017.
+
+
+
+
+ The Cad 037.
+
+
+
+
+ The Cad 027.
+
+
+
+
+ The Cad 120.
+
+
+
+
+ The Cad 130.
+
+
+
+
+ The Cad 121.
+
+
+
+
+ The Cad 131.
+
+
+
+
+ The Cad 132.
+
+
+
+
+ The Cad 122.
+
+
+
+
+ The Cad 346.
+
+
+
+
+ The Cad 146.
+
+
+
+
+ The Cad 061.
+
+
+
+
+ The Cad 311.
+
+
+
+
+ The Cad 332.
+
+
+
+
+ The Cad 333.
+
+
+
+
+ The Cad 334
+
+
+
+
+ The Cad 348.
+
+
+
+
+ The Cad 361.
+
+
+
+
+ The Cad 335.
+
+
+
+
+ The Cad 004.
+
+
+
+
+ The Cad 052.
+
+
+
+
+ The Cad 077.
+
+
+
+
+ The Cad 098.
+
+
+
+
+ The Cad 099.
+
+
+
+
+ The Cad 450.
+
+
+
+
+ The Cad 450.
+
+
+
+
+ The Cad 452.
+
+
+
+
+ The Cad 453.
+
+
+
+
+ The Cad 460.
+
+
+
+
+ The Cad 461.
+
+
+
+
+ The Cad 462.
+
+
+
+
+ The cad 463.
+
+
+
+
+ The cad 464.
+
+
+
+
+ The cad 465.
+
+
+
+
+ The cad 468.
+
+
+
+
+ The cad 469.
+
+
+
+
+ The cad 470.
+
+
+
+
+ The Cad 097.
+
+
+
+
+ The Cad 147.
+
+
+
+
+ The Cad 148.
+
+
+
+
+ The cad149
+
+
+
+
+ The Cad 270.
+
+
+
+
+ The Cad 274.
+
+
+
+
+ The Cad 285.
+
+
+
+
+ The Cad 286.
+
+
+
+
+ The Cad 287.
+
+
+
+
+ The Cad 288.
+
+
+
+
+ The Cad 371.
+
+
+
+
+ The Cad 372.
+
+
+
+
+ The Cad 380.
+
+
+
+
+ The Cad 1000.
+
+
+
+
+ The Cad 1001.
+
+
+
+
+ The Cad 1002.
+
+
+
+
+ The Cad 1003.
+
+
+
+
+ The Cad 1004.
+
+
+
+
+ The Cad 1005.
+
+
+
+
+ The Cad 1006.
+
+
+
+
+ The Cad 1007.
+
+
+
+
+ The Cad 1008.
+
+
+
+
+ The Cad 1009.
+
+
+
+
+ The Cad 1010.
+
+
+
+
+ The Cad 1011.
+
+
+
+
+ The Cad 1012.
+
+
+
+
+ The Cad 1013.
+
+
+
+
+ The Cad 1014.
+
+
+
+
+ The Cad 1015.
+
+
+
+
+ The Cad 1016.
+
+
+
+
+ The Cad 1017.
+
+
+
+
+ The Cad 1018.
+
+
+
+
+ The Cad 1019.
+
+
+
+
+ The Cad 1020.
+
+
+
+
+ The Cad 1021.
+
+
+
+
+ The Cad 1022.
+
+
+
+
+ The Cad 1023.
+
+
+
+
+ The Cad 1024.
+
+
+
+
+ The Cad 1025.
+
+
+
+
+ The Cad 1026.
+
+
+
+
+ The Cad 1027.
+
+
+
+
+ The Cad 1028.
+
+
+
+
+ The Cad 1029.
+
+
+
+
+ The Cad 1030.
+
+
+
+
+ The Cad 1031.
+
+
+
+
+ The Cad 1032.
+
+
+
+
+ The Cad 1033.
+
+
+
+
+ The Cad 1034.
+
+
+
+
+ The Cad 1035.
+
+
+
+
+ The Cad 1036.
+
+
+
+
+ The Cad 1037.
+
+
+
+
+ The Cad 1038.
+
+
+
+
+ The Cad 1039.
+
+
+
+
+ The Cad 1040.
+
+
+
+
+ The Cad 1041.
+
+
+
+
+ The Cad 1042.
+
+
+
+
+ The Cad 1043.
+
+
+
+
+ The Cad 1044.
+
+
+
+
+ The Cad 1045.
+
+
+
+
+ The Cad 1046.
+
+
+
+
+ The Cad 1047.
+
+
+
+
+ The Cad 1048.
+
+
+
+
+ The Cad 1049.
+
+
+
+
+ The Cad 1050.
+
+
+
+
+ The Cad 1051.
+
+
+
+
+ The Cad 1052.
+
+
+
+
+ The Cad 1053.
+
+
+
+
+ The Cad 1054.
+
+
+
+
+ The Cad 1055.
+
+
+
+
+ The Cad 1056.
+
+
+
+
+ The Cad 1057.
+
+
+
+
+ The Cad 1058.
+
+
+
+
+ The Cad 1059.
+
+
+
+
+ The Cad 1060.
+
+
+
+
+ The Cad 1061.
+
+
+
+
+ The Cad 1062.
+
+
+
+
+ The Cad 1063.
+
+
+
+
+ The Cad 1064.
+
+
+
+
+ The Cad 1065.
+
+
+
+
+ The Cad 1066.
+
+
+
+
+ The Cad 1067.
+
+
+
+
+ The Cad 1068.
+
+
+
+
+ The Cad 1069.
+
+
+
+
+ The Cad 1070.
+
+
+
+
+ The Cad 1071.
+
+
+
+
+ The Cad009
+
+
+
+
+ Layer tables list
+ Since the name is not unique, we use List as a container
+
+
+
+
+
+
+ The layers by name.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Gets list of layers by name.
+
+ The name parameter.
+ The list of
+
+
+
+ Gets the layers names.
+
+ The list of layers names
+
+
+
+ Gets or sets the application codes container.
+
+
+ The application codes container.
+
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ Collection of cad layouts
+
+
+
+
+ Mode layout
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a to the dictionary.
+
+ The key.
+ The to add.
+
+
+
+ Determines whether contained within this dictionary.
+
+ The key.
+
+ True if the current dictionary contains an element with the key; otherwise, false.
+
+
+
+
+ Removes the with the specified key.
+
+ The key to remove.
+
+ True if the element is successfully removed; otherwise, false. This method also returns false if was not found in the dictionary.
+
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized.
+
+ True if the dictionary contains an element with the specified key; otherwise, false.
+
+
+
+
+ Clones the dictionary.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets the strongly typed collection of keys.
+
+
+ The strongly typed keys collection.
+
+
+
+
+ Gets the strongly typed values collection.
+
+
+ The strongly typed values collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key.
+ The for the specified key.
+
+
+
+ Represents dictionary with types of lines.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a to the dictionary.
+
+ The key.
+ The to add.
+
+
+
+ Determines whether contained within this dictionary.
+
+ The key.
+
+ True if the current dictionary contains an element with the key; otherwise, false.
+
+
+
+
+ Removes the with the specified key.
+
+ The key to remove.
+
+ True if the element is successfully removed; otherwise, false. This method also returns false if was not found in the dictionary.
+
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized.
+
+ True if the dictionary contains an element with the specified key; otherwise, false.
+
+
+
+
+ Clones the dictionary.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ Gets the strongly typed collection of keys.
+
+
+ The strongly typed keys collection.
+
+
+
+
+ Gets the strongly typed values collection.
+
+
+ The strongly typed values collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key.
+ The for the specified key.
+
+
+
+ The TableStyleCell data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the color of the cell content.
+
+
+ The color of the cell content.
+
+
+
+
+ Gets or sets the color of the сell content background.
+
+
+ The color of the сell content background.
+
+
+
+
+ Gets or sets the color of the cell top border.
+
+
+ The color of the cell top border.
+
+
+
+
+ Gets or sets the color of the cell right border.
+
+
+ The color of the cell right border.
+
+
+
+
+ Gets or sets the color of the cell bottom border.
+
+
+ The color of the cell bottom border.
+
+
+
+
+ Gets or sets the color of the cell left border.
+
+
+ The color of the cell left border.
+
+
+
+
+ Gets or sets the cell top border lineweight.
+
+
+ The cell top border lineweight.
+
+
+
+
+ Gets or sets the cell right border lineweight.
+
+
+ The cell right border lineweight.
+
+
+
+
+ Gets or sets the cell bottom border lineweight.
+
+
+ The cell bottom border lineweight.
+
+
+
+
+ Gets or sets the сell left border lineweight.
+
+
+ The сell left border lineweight.
+
+
+
+
+ Gets or sets the fill color flag.
+
+
+ The fill color flag.
+
+
+
+
+ Gets or sets the top border visibility flag.
+
+
+ The top border visibility flag.
+
+
+
+
+ Gets or sets the right border visibility flag.
+
+
+ The right border visibility flag.
+
+
+
+
+ Gets or sets the bottom border visibility flag.
+
+
+ The bottom border visibility flag.
+
+
+
+
+ Gets or sets the left border visibility flag.
+
+
+ The left border visibility flag.
+
+
+
+
+ Gets or sets the name of the text style.
+
+
+ The name of the text style.
+
+
+
+
+ Gets or sets the attribute definition soft pointer.
+
+
+ The attribute definition soft pointer.
+
+
+
+
+ Gets or sets the attribute definitions count.
+
+
+ The attribute definitions count.
+
+
+
+
+ Gets or sets the hard pointer identifier.
+
+
+ The hard pointer identifier.
+
+
+
+
+ Gets or sets the block scale.
+
+
+ The block scale.
+
+
+
+
+ Gets or sets the cell alignment.
+
+
+ The cell alignment.
+
+
+
+
+ Gets or sets the type of the cell.
+
+
+ The type of the cell.
+
+
+
+
+ Gets or sets the cell flag value.
+
+
+ The cell flag value.
+
+
+
+
+ Gets or sets the cell merged value.
+
+
+ The cell merged value.
+
+
+
+
+ Gets or sets the boolean flag.
+
+
+ The boolean flag.
+
+
+
+
+ Gets or sets the width of the cell border.
+
+
+ The width of the cell border.
+
+
+
+
+ Gets or sets the height of the cell border.
+
+
+ The height of the cell border.
+
+
+
+
+ Gets or sets the cell override flag.
+
+
+ The cell override flag.
+
+
+
+
+ Gets or sets the virtual edge flag value.
+
+
+ The virtual edge flag value.
+
+
+
+
+ Gets or sets the rotation value.
+
+
+ The rotation value.
+
+
+
+
+ Gets or sets the hard pointer to field.
+
+
+ The hard pointer to field.
+
+
+
+
+ Gets or sets the text height value.
+
+
+ The text height value.
+
+
+
+
+ Gets or sets the extended cell flag.
+
+
+ The extended cell flag.
+
+
+
+
+ Gets or sets the cell value block begin.
+
+
+ The cell value block begin.
+
+
+
+
+ Gets or sets the attribute93.
+
+
+ The attribute93.
+
+
+
+
+ Gets or sets the attribute90.
+
+
+ The attribute90.
+
+
+
+
+ Gets or sets the text string.
+
+
+ The text string.
+
+
+
+
+ Gets or sets the additional string.
+
+
+ The additional string.
+
+
+
+
+ Gets or sets the attribute94.
+
+
+ The attribute94.
+
+
+
+
+ Gets or sets the attribute definition text string.
+
+
+ The attribute definition text string.
+
+
+
+
+ Gets or sets the text string in cell.
+
+
+ The text string in cell.
+
+
+
+
+ Gets or sets the attribute304.
+
+
+ The attribute304.
+
+
+
+
+ The Cad table entity.
+
+
+
+
+ The Cad base entity object.
+
+
+
+
+ The Cad base owned object.
+
+
+
+
+ Base class for Cad objects
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the embedded objects container.
+
+
+
+
+ Gets or sets the object handle.
+
+
+ The object handle.
+
+
+
+
+ Gets or sets the xdata container.
+
+
+ The xdata container.
+
+
+
+
+ Gets or sets the attributes.
+
+
+ The attributes.
+
+
+
+
+ Gets or sets the application defined codes container.
+
+
+ The application defined codes container.
+
+
+
+
+ Gets or sets the round trip table style.
+
+
+ The round trip table style.
+
+
+
+
+ Gets or sets the attribute102 values.
+
+
+ The attribute102 values.
+
+
+
+
+ Gets or sets the DXF data format.
+
+
+ The DXF data format.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the hard owner.
+
+
+
+
+ Gets or sets the soft owner.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 348.
+
+
+ The attribute 348.
+
+
+
+
+ Gets or sets the attribute160.
+
+
+ The attribute160.
+
+
+
+
+ Gets the name of the type.
+
+
+ The name of the type.
+
+
+
+
+ Gets or sets the child objects.
+
+
+
+
+ Gets or sets the color id.
+
+
+ The color id.
+
+
+
+
+ Gets a value indicating whether this instance is color identifier set.
+
+
+ true if this instance is color identifier set; otherwise, false.
+
+
+
+
+ Gets or sets the name of the layout tab.
+
+
+ The name of the layout tab.
+
+
+
+
+ Gets or sets the name of the color.
+
+
+ The name of the color.
+
+
+
+
+ Gets or sets the color value.
+
+
+ The color value.
+
+
+
+
+ Gets or sets the name of the layer.
+
+
+ The name of the layer.
+
+
+
+
+ Gets or sets the line scale.
+
+
+ The line scale.
+
+
+
+
+ Gets or sets the name of the line type.
+
+
+ The name of the line type.
+
+
+
+
+ Gets or sets the line weight.
+
+
+ The line weight.
+
+
+
+
+ Gets or sets the material.
+
+
+ The material.
+
+
+
+
+ Gets or sets the plot style.
+
+
+ The plot style.
+
+
+
+
+ Gets or sets the proxy bytes count.
+
+
+ The proxy bytes count.
+
+
+
+
+ Gets or sets the proxy data.
+
+
+ The proxy data.
+
+
+
+
+ Gets or sets the shadow mode.
+
+
+ The shadow mode.
+
+
+
+
+ Gets or sets the space mode.
+
+
+ The space mode.
+
+ Space mode is not valid
+
+
+
+ Gets or sets the transparency.
+
+
+ The transparency.
+
+
+
+
+ Gets or sets a value indicating whether this is visible.
+
+
+ true if visible; otherwise, false.
+
+
+
+
+ Gets or sets the hyperlink.
+
+
+ The hyperlink.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cad table cell list.
+
+
+ The cad table cell list.
+
+
+
+
+ Gets or sets the attribute 140 list.
+
+
+ The attribute 140 list.
+
+
+
+
+ Gets or sets the horizontal cell margin.
+
+
+ The horizontal cell margin.
+
+
+
+
+ Gets or sets the vertical cell margin.
+
+
+ The vertical cell margin.
+
+
+
+
+ Gets or sets the block name.
+
+
+
+
+ Gets or sets the flag for table value.
+
+
+
+
+ Gets or sets the flag override.
+
+
+
+
+ Gets or sets the flag override border color.
+
+
+
+
+ Gets or sets the flag override border line weight.
+
+
+
+
+ Gets or sets the flag override border visibility.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the number of columns.
+
+
+
+
+ Gets or sets the number of rows.
+
+
+
+
+ Gets or sets the pointer id to owner block.
+
+
+
+
+ Gets or sets the pointer id totablestyle.
+
+
+
+
+ Gets or sets the table data version number.
+
+
+
+
+ Gets or sets the text style name.
+
+
+
+
+ The namespace contains acad table objects.
+
+
+
+
+ Class describing Cad AttributeDefinitions
+
+
+
+
+ Class describing Xrecord object.
+
+
+
+
+
+ The Cad base extruded entity object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the extrusion direction.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the duplicate record cloning flag.
+
+
+ The duplicate record cloning flag.
+
+
+
+
+ Gets or sets the m text flag.
+
+
+ The m text flag.
+
+
+
+
+ Gets or sets the is really locked flag.
+
+
+ The is really locked flag.
+
+
+
+
+ Gets or sets the secondary attributes or attribute definitions number.
+
+
+ The secondary attributes or attribute definitions number.
+
+
+
+
+ Gets or sets the hard pointer ids.
+
+
+ The hard pointer ids.
+
+
+
+
+ Gets or sets the alignment point.
+
+
+ The alignment point.
+
+
+
+
+ Gets or sets the current annotation scale.
+
+
+ The current annotation scale.
+
+
+
+
+ Gets or sets the definition tag string.
+
+
+ The definition tag string.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Clones current object
+
+ Clone of current object
+
+
+
+ Gets or sets the multi text.
+
+
+ The multi text.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Gets or sets the lock position flag.
+
+
+ The lock position flag.
+
+
+
+
+ Gets or sets the default string.
+
+
+
+
+ Gets or sets the field length.
+
+
+
+
+ Gets or sets the first alignment.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the generation flag.
+
+
+
+
+ Gets or sets the horizontal alignment.
+
+
+
+
+ Gets or sets the id.
+
+
+
+
+ Gets or sets the oblique angle.
+
+
+
+
+ Gets or sets the prompt string.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+
+
+ Gets or sets the scale x.
+
+
+
+
+ Gets or sets the second alignment.
+
+
+
+
+ Gets or sets the style name.
+
+
+
+
+ Gets or sets the text height.
+
+
+
+
+ Gets or sets the thickness.
+
+
+
+
+ Gets or sets the vertical justification.
+
+
+
+
+ The Cad attrib.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the text sub class attribute51.
+
+
+ The text sub class attribute51.
+
+
+
+
+ Gets or sets a value indicating whether this is visible.
+
+
+ true if visible; otherwise, false.
+
+
+
+
+ Gets or sets the length of the field.
+
+
+ The length of the field.
+
+
+
+
+ Gets or sets the lock position flag.
+
+
+ The lock position flag.
+
+
+
+
+ Gets or sets the alignment point.
+
+
+ The alignment point.
+
+
+
+
+ Gets or sets the attribute string.
+
+
+
+
+ Gets or sets the attribute flags.
+
+
+
+
+ Gets or sets the attribute string.
+
+
+
+
+ Gets or sets the name of the attribute text style.
+
+
+ The name of the attribute text style.
+
+
+
+
+ Gets or sets the attribute text rotation.
+
+
+ The attribute text rotation.
+
+
+
+
+ Gets or sets the text rotation.
+
+
+
+
+ Gets or sets the default text.
+
+
+
+
+ Gets or sets the multi text.
+
+
+ The multi text.
+
+
+
+
+ Gets or sets the text height.
+
+
+
+
+ Gets or sets the text start point.
+
+
+ The text start point.
+
+
+
+
+ Gets or sets the thickness.
+
+
+
+
+ Gets or sets the obliqueAngle.
+
+
+
+
+ Gets or sets the relativeScale.
+
+
+
+
+ Gets or sets the attribute relative scale.
+
+
+ The attribute relative scale.
+
+
+
+
+ Gets or sets the textFlags.
+
+
+
+
+ Gets or sets the textJustH.
+
+
+
+
+ Gets or sets the textJustV.
+
+
+
+
+ Gets or sets the version.
+
+
+
+
+ The namespace contains att entities.
+
+
+
+
+ Class describing block parameters.
+
+
+
+
+
+ Class describing CadBlockVisibility object.
+
+
+
+
+
+ Class describing CadDbEvalExpr object.
+
+
+
+
+ Base class for Cad objects
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the name of the type.
+
+
+ The name of the type.
+
+
+
+
+ Gets or sets the child objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the database eval expr parameter list.
+
+
+ The database eval expr parameter list.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block parameter list.
+
+
+ The block parameter list.
+
+
+
+
+ Gets or sets the block1 pt parameter list.
+
+
+ The block1 pt parameter list.
+
+
+
+
+ Class describing BLOCK2PTPARAMETERS abstract object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 280.
+
+
+ The attribute 280.
+
+
+
+
+ Gets or sets the attribute 281.
+
+
+ The attribute 281.
+
+
+
+
+ Gets or sets the block2 pt parameter list.
+
+
+ The block2 pt parameter list.
+
+
+
+
+ Class describing BLOCKACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block action parameter list.
+
+
+ The block action parameter list.
+
+
+
+
+ Class describing BlockActionWithBasePt object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 92.
+
+
+ The attribute 92.
+
+
+
+
+ Gets or sets the attribute 301.
+
+
+ The attribute 301.
+
+
+
+
+ Gets or sets the attribute 93.
+
+
+ The attribute 93.
+
+
+
+
+ Gets or sets the attribute 302.
+
+
+ The attribute 302.
+
+
+
+
+ Gets or sets the attribute 280.
+
+
+ The attribute 280.
+
+
+
+
+ Class describing CadBlockAligmentGrip object.
+
+
+
+
+
+ Class describing CadBlockGrip object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block aligment grip parameter list.
+
+
+ The block aligment grip parameter list.
+
+
+
+
+ Class describing block aligment parameter.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block visibility parameter list.
+
+
+ The block visibility parameter list.
+
+
+
+
+ Class describing BlockBasePointParameter.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing BLOCKFLIPACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block flip action parameter list.
+
+
+ The block flip action parameter list.
+
+
+
+
+ Class describing CadBlockFlipGrip object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block flip grip parameter list.
+
+
+ The block flip grip parameter list.
+
+
+
+
+ Class describing BLOCKFLIPPARAMETER object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 96.
+
+
+ The attribute 96.
+
+
+
+
+ Gets or sets the attribute 309.
+
+
+ The attribute 309.
+
+
+
+
+ Gets or sets the attribute 308.
+
+
+ The attribute 308.
+
+
+
+
+ Gets or sets the attribute 307.
+
+
+ The attribute 307.
+
+
+
+
+ Gets or sets the attribute 306.
+
+
+ The attribute 306.
+
+
+
+
+ Gets or sets the attribute 305.
+
+
+ The attribute 305.
+
+
+
+
+ Class describing CadBlockGripLocationComponent object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadBlockLinearGrip object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 140.
+
+
+ The attribute 140.
+
+
+
+
+ Gets or sets the attribute 141.
+
+
+ The attribute 141.
+
+
+
+
+ Gets or sets the attribute 142.
+
+
+ The attribute 142.
+
+
+
+
+ Class describing BLOCKLINEARPARAMETER object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block linear parameter list.
+
+
+ The block linear parameter list.
+
+
+
+
+ Class describing BLOCKMOVEACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cad block move action elements.
+
+
+ The cad block move action elements.
+
+
+
+
+ Class describing Block Point Parameter.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block point parameter list.
+
+
+ The block point parameter list.
+
+
+
+
+ Class describing BLOCKROTATEACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cad block rotation action.
+
+
+ The cad block rotation action.
+
+
+
+
+ Class describing CadBlockRotationGrip object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class block rotation parameter.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block rotation parameter list.
+
+
+ The block rotation parameter list.
+
+
+
+
+ Gets or sets the attribute 305.
+
+
+ The attribute 305.
+
+
+
+
+ Gets or sets the attribute 306.
+
+
+ The attribute 306.
+
+
+
+
+ Class describing BLOCKSCALEACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block scale action list.
+
+
+ The block scale action list.
+
+
+
+
+ Class describing BLOCKSTRETCHACTION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cad block stretch action elements.
+
+
+ The cad block stretch action elements.
+
+
+
+
+ Gets or sets the attribute 92.
+
+
+ The attribute 92.
+
+
+
+
+ Gets or sets the attribute 301.
+
+
+ The attribute 301.
+
+
+
+
+ Gets or sets the attribute 93.
+
+
+ The attribute 93.
+
+
+
+
+ Gets or sets the attribute 302.
+
+
+ The attribute 302.
+
+
+
+
+ Gets or sets the attribute 72.
+
+
+ The attribute 72.
+
+
+
+
+ Gets or sets the attribute 73.
+
+
+ The attribute 73.
+
+
+
+
+ Gets or sets the attribute 141.
+
+
+ The attribute 141.
+
+
+
+
+ Gets or sets the attribute 140.
+
+
+ The attribute 140.
+
+
+
+
+ Gets or sets the attribute 280.
+
+
+ The attribute 280.
+
+
+
+
+ The Field data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the parameters list.
+
+
+ The parameters list.
+
+
+
+
+ Class describing CadBlockVisibilityGrip object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing Block Visibility Parameter.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block visibility parameter list.
+
+
+ The block visibility parameter list.
+
+
+
+
+ Class describing CadBlockXYGrip object.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains Cad blocks entities.
+
+
+
+
+ The Cad 2 d point.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The x ordinate.
+
+
+ The y ordinate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The attribute x.
+
+
+ The attribute y.
+
+
+
+
+ Distances the specified destination.
+
+
+ The destination.
+
+
+ Distance to point
+
+
+
+
+ Gets the aps point.
+
+
+
+
+
+ Gets or sets the x.
+
+
+
+
+ Gets or sets the y.
+
+
+
+
+ The Cad angle dimension.
+
+
+
+
+ The CadDimension class
+
+
+
+
+ Block translation vector
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Gets or sets the type of dimension.
+
+
+ The type of dimension.
+
+
+
+
+ Gets or sets the actual measurement.
+
+
+
+
+ Gets or sets the attachment type.
+
+
+
+
+ Gets or sets the block name.
+
+
+
+
+ Gets or sets the definition point.
+
+
+
+
+ Gets or sets the block translation vector.
+ It was gotten from the old version CadDimensionBaseR12,
+ because we have cases when block translation vector appears in
+ new version CadDimensionBase
+
+
+
+
+ Gets or sets the dimension text line spacing factor.
+
+
+
+
+ Gets or sets the dimension type.
+
+
+
+
+ Gets or sets the horizontal direction.
+
+
+
+
+ Gets a value indicating whether is single use.
+
+
+
+
+ Gets a value indicating whether this instance is user dimension.
+
+
+ true if this instance is user dimension; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is X ordinate.
+
+
+ true if this instance is X ordinate; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is yordinate.
+
+
+ true if this instance is yordinate; otherwise, false.
+
+
+
+
+ Gets or sets the middle text location.
+
+
+
+
+ Gets or sets the textRotationAngle angle.
+
+
+
+
+ Gets or sets the style name.
+
+
+
+
+ Gets or sets the text.
+
+
+
+
+ Gets or sets the text line spacing.
+
+
+
+
+ Gets whole object of dimension type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the angular arc definition point.
+
+
+ The angular arc definition point.
+
+
+
+
+ Gets or sets the definition point1.
+
+
+ The definition point1.
+
+
+
+
+ Gets or sets the definition point2.
+
+
+ The definition point2.
+
+
+
+
+ Gets or sets the radius definition point.
+
+
+ The radius definition point.
+
+
+
+
+ Class that describes 3DFACE entity
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ First corner.
+ Second corner.
+ Third corner.
+ Fourth corner.
+ Thrown when one of arguments is null
+
+
+
+ Gets or sets the visibility of edges.
+
+
+ The edges visible.
+ Invisible edge flags:
+ 1 = First edge is invisible
+ 2 = Second edge is invisible
+ 4 = Third edge is invisible
+ 8 = Fourth edge is invisible
+
+
+
+
+ Gets or sets the first corner.
+
+
+ The first corner.
+
+
+
+
+ Gets or sets the forth corner.
+
+
+ The forth corner.
+
+
+
+
+ Gets or sets the second corner.
+
+
+ The second corner.
+
+
+
+
+ Gets or sets the third corner.
+
+
+ The third corner.
+
+
+
+
+ The Cad point.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The x ordinate.
+
+
+ The y ordinate.
+
+
+ The z ordinate.
+
+
+
+
+ Initializes a new instance of the class, but only z attribute.
+
+
+ The attribute z.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The attribute x.
+
+
+ The attribute y.
+
+
+ The attribute z.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The pointX.
+ The point Y.
+
+
+
+ Angles the between3 points.
+
+
+ First Point
+
+
+ second point
+
+
+ third point
+
+
+ Angle between 3 points
+
+
+
+
+ Rotates one point arount another one
+
+
+ the point to rotate
+
+
+ the centre point of rotation
+
+
+ The angle In Radians.
+
+
+ Rotated point
+
+
+
+
+ The distance.
+
+
+ The destination.
+
+
+ The .
+
+
+
+
+ The length.
+
+
+ The .
+
+
+
+
+ The cross product of two vectors.
+
+
+ The first vector
+
+
+ The second vector
+
+
+ Result of cross
+
+
+
+
+ The dot product of two vectors.
+
+
+ The first vector
+
+
+ The second vector
+
+
+ Result of dot
+
+
+
+
+ The minimum of two points.
+
+
+ The first point
+
+
+ The second point
+
+
+ Result of Min
+
+
+
+
+ The maximum of two points.
+
+
+ The first point
+
+
+ The second point
+
+
+ Result of Max
+
+
+
+
+ Inverses this instance.
+
+ Result of Inverses
+
+
+
+ Sum of two points
+
+
+ The first point
+
+
+ The second point
+
+ Returns the sum
+
+
+
+ Diff of two points
+
+
+ The first point
+
+
+ The second point
+
+ Returns the diff
+
+
+
+ Multiplication of a point and a scalar
+
+
+ The point
+
+
+ The scalar
+
+ Returns the sum
+
+
+
+ Gets or sets the z.
+
+
+
+
+ Class describing Cad 3DSolid
+
+
+
+
+ Base class for CAD entity which contains ACIS data
+
+
+
+
+ Initializes a new instance of class
+
+
+
+
+ Initializes the proprietary data.
+
+ The cad string parameter.
+
+
+
+ Gets or sets the proprietary data parameter list.
+
+
+ The proprietary data list.
+
+
+
+
+ Gets or sets the Proprietary data
+
+
+ The Proprietary data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the Modeler format version number (currently = 1)
+
+
+ The Modeler format version number (currently = 1)
+
+
+
+
+ Gets or sets the handle to history object.
+
+
+ The handle to history object.
+
+
+
+
+ Class describing ACAD_EVALUATION_GRAPH object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the objects.
+
+
+ All ACAD_EVALUATION_GRAPH objects.
+
+
+
+
+ Class describing CadAcadProxyEntity
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the proxy entity class identifier.
+
+
+ The proxy entity class identifier.
+
+
+
+
+ Gets or sets the application entity class identifier.
+
+
+ The application entity class identifier.
+
+
+
+
+ Gets or sets the size of the graphics data.
+
+
+ The size of the graphics data.
+
+
+
+
+ Gets or sets the graphics data size attribute160.
+
+
+ The graphics data size attribute160.
+
+
+
+
+ Gets or sets the entity data size attribute93.
+
+
+ The entity data size attribute93.
+
+
+
+
+ Gets or sets the entity data size attribute161.
+
+
+ The entity data size attribute161.
+
+
+
+
+ Gets or sets the size of the binary data.
+
+
+ The size of the binary data.
+
+
+
+
+ Gets or sets the binary entity data.
+
+
+ The binary entity data.
+
+
+
+
+ Gets or sets the binary graphics data.
+
+
+ The binary graphics data.
+
+
+
+
+ Gets or sets the binary data attribute 311.
+
+
+ The binary data attribute 311.
+
+
+
+
+ Gets or sets the object id330.
+
+
+ The object id 330.
+
+
+
+
+ Gets or sets the object id 340.
+
+
+ The object id 340.
+
+
+
+
+ Gets or sets the object id 350.
+
+
+ The object id 350.
+
+
+
+
+ Gets or sets the object id 360.
+
+
+ The object id 360.
+
+
+
+
+ Gets or sets the object identifier section end.
+
+
+ The object identifier section end.
+
+
+
+
+ Gets or sets the object drawing format.
+
+
+ The object drawing format.
+
+
+
+
+ Gets or sets the custom object data format.
+
+
+ The custom object data format.
+
+
+
+
+ Class describing Ac Db Assoc Network.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the accos network list.
+
+
+ The accos network list.
+
+
+
+
+ Gets or sets the accos actions list.
+
+
+ The accos actions list.
+
+
+
+
+ Class describing ACDB_BLOCKREPRESENTATION_DATA object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute70.
+
+
+ The attribute70.
+
+
+
+
+ Class describing CadAcdsData
+
+
+
+
+ Base class for Cad objects
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the name of the type.
+
+
+ The name of the type.
+
+
+
+
+ Gets or sets the child objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadAcdsRecord
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadAcdsSchema
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadAcshHistoryClass object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the acsh history class parameter list.
+
+
+ The acsh history class parameter list.
+
+
+
+
+ Class describing CadAcshPyramidClass object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the sh history node parameter list.
+
+
+ The sh history node parameter list.
+
+
+
+
+ Gets or sets the sh pyramid parameter list.
+
+
+ The sh pyramid parameter list.
+
+
+
+
+ The Cad aligned dimension.
+
+
+
+
+ Definition point for linear and angular dimensions (in WCS) (13,23,33)
+ Cad: X value; APP: 3D point
+
+
+
+
+ Definition point for linear and angular dimensions (in WCS) (14,24,34)
+ Cad: X value; APP: 3D point
+
+
+
+
+ Insertion point for clones of a dimension—Baseline and Continue (in OCS) (12,22,32)
+ Cad: X value; APP: 3D point
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the definition point1.
+
+
+ The definition point1.
+
+
+
+
+ Gets or sets the definition point2.
+
+
+ The definition point2.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+ The insertion point.
+
+
+
+
+ The Cad angular dimension.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets right bottom point
+
+
+
+
+ Gets right top point
+
+
+
+
+ Gets left bottom point
+
+
+
+
+ Gets arc definition point
+
+
+
+
+ The Cad Application Defined Codes
+
+
+
+
+ Initializes a new instance of the class.
+ Initializes a new instance of the class.
+
+ Name of the application.
+
+
+
+ Gets or sets the data list.
+
+
+ The data list.
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ The CadApplicationCodes Container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the codes.
+
+ Name of the sub class.
+ Name of the application.
+
+ The Application Codes
+
+
+
+
+ Gets or sets the codes.
+
+
+ The codes.
+
+
+
+
+ Class describing Cad ARC
+
+
+
+
+ Class describing Cad circle
+
+
+
+
+ Initializes a new instance of the class.
+
+ Start point.
+ Radius.
+ Thrown when center point is null
+
+
+
+ Gets or sets the attribute62.
+
+
+ The attribute62.
+
+
+
+
+ Gets or sets the attribute6.
+
+
+ The attribute6.
+
+
+
+
+ Gets or sets the centerPoint.
+
+
+ The centerPoint.
+
+
+
+
+ Gets or sets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets or sets the thickness.
+
+
+ The thickness.
+
+
+
+
+ The End angle
+
+
+
+
+ The Start angle
+
+
+
+
+ Initializes a new instance of the class.
+
+ Start point.
+ Radius.
+ Start angle.
+ End angle.
+ Thrown when center point is null
+
+
+
+ Gets or sets the arc extrusion direction.
+
+
+ The arc extrusion direction.
+
+
+
+
+ Gets or sets the End angle.
+
+
+ End angle.
+
+
+
+
+ Gets or sets Start angle.
+
+
+ The Start angle
+
+
+
+
+ Gets or sets the counter clockwize.
+
+
+ The counter clockwize.
+
+
+
+
+ Class describing CadBaseInfinityEntity
+
+
+
+
+ The First Point
+
+
+
+
+ The unit Direction Vector
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the entity.
+ Name of the sub class.
+
+
+
+ Gets or sets the first point .
+
+
+ The First Point .
+
+
+
+
+ Gets or sets the unit direction vector.
+
+
+ The unit direction vector.
+
+
+
+
+ The Cad block entity.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the entity.
+
+ The entity object.
+
+
+
+ Gets or sets the end block attribute 370.
+
+
+ The end block attribute 370.
+
+
+
+
+ Gets or sets the block attribute 370.
+
+
+ The block attribute 370.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the block attribute48.
+
+
+ The block attribute48.
+
+
+
+
+ Gets or sets the end block attribute 48.
+
+
+ The end block attribute 48.
+
+
+
+
+ Gets or sets the block attribute 62.
+
+
+ The block attribute 62.
+
+
+
+
+ Gets or sets the end block attribute 62.
+
+
+ The end block attribute 62.
+
+
+
+
+ Gets or sets the base point.
+
+
+
+
+ Gets or sets the entities.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the attribute 71.
+
+
+ The attribute 71.
+
+
+
+
+ Gets or sets the handle.
+
+
+
+
+ Gets or sets a value indicating whether [end block model segregated].
+
+
+ true if [end block model segregated]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [model segregated].
+
+
+ true if [model segregated]; otherwise, false.
+
+
+
+
+ Gets or sets the handle2.
+
+
+ The handle2.
+
+
+
+
+ Gets or sets the name.
+
+
+
+
+ Gets or sets the XRef path.
+
+
+ The XRef path.
+
+
+
+
+ Gets or sets the soft owner.
+
+
+ The soft owner (the same for Block and EndBlock)
+
+
+
+
+ Gets or sets the layer.
+
+
+ The layer.
+
+
+
+
+ Gets or sets the end name of the block layer.
+
+
+ The end name of the block layer.
+
+
+
+
+ Gets or sets the attribute6.
+
+
+ The attribute6.
+
+
+
+
+ Gets or sets the end block attribute 6.
+
+
+ The end block attribute 6.
+
+
+
+
+ Gets or sets the xdata container.
+
+
+ The xdata container.
+
+
+
+
+ Gets the attribute definitions
+
+
+
+
+ The Cad body.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the modeler format number.
+
+
+ The modeler format number.
+
+
+
+
+ Class describing CadBreakData object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the break point reference list.
+
+
+ The break point reference list.
+
+
+
+
+ Class describing CadCellMargin
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cell margin values.
+
+
+ The cell margin values.
+
+
+
+
+ Class describing CadCellStyle
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the table format.
+
+
+ The table format.
+
+
+
+
+ Class describing CadCellStyleMap
+
+ NOTE: we have no CellStyleMap object in documantation
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attrib text strings.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ The Cad class entity.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the class type.
+
+
+ The class type.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the name of the CPP.
+
+
+ The name of the CPP.
+
+
+
+
+ Gets or sets the name of the application.
+
+
+ The name of the application.
+
+
+
+
+ Gets or sets the proxy capabilities flag.
+
+
+ The proxy capabilities flag.
+
+
+
+
+ Gets or sets the count for custom class.
+
+
+ The count for custom class.
+
+
+
+
+ Was-a-proxy flag
+
+
+
+
+ Is-an-entity flag.
+
+
+
+
+ Class describing CadContentFormat
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing Coordination Model
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the soft pointer to ac database navisworks model definition.
+
+
+ The soft pointer to ac database navisworks model definition.
+
+
+
+
+ Gets or sets the model transform coordinates.
+
+
+ The model transform coordinates.
+
+
+
+
+ Gets or sets the insertion unit factor.
+
+
+ The insertion unit factor.
+
+
+
+
+ Class describing DBCOLOR object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad diameter dimension.
+ NOTE: This class is an exact copy of CadRadialDimension except sublcass name
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the leader length.
+
+
+
+
+ Gets or sets the radius definition point.
+
+
+
+
+ Class describing DICTIONARYVAR object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the object schema number.
+
+
+ The object schema number.
+
+
+
+
+ Gets or sets value of variable.
+
+
+
+
+ Represents dimension in old R12 format which stores all points in one place
+
+
+
+
+ Initializes a new instance of CadDimensionBaseR12 class
+
+
+
+
+ Converts current old dimension type to new format
+
+ CadBaseEntity as correct dimension
+
+
+
+ The Cad dimension ordinate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the definition13.
+
+
+ The definition13.
+
+
+
+
+ Gets or sets the definition14.
+
+
+ The definition14.
+
+
+
+
+ Class describing Cad ellipse
+
+
+
+
+ Initializes a new instance of the class.
+
+ Start point.
+ Endpoint of major axis.
+ Ratio of minor axis to major axis.
+ Thrown when one of arguments is null
+
+
+
+ Gets or sets the counterclockwise flag.
+
+
+ The counterclockwise flag.
+
+
+
+
+ Gets or sets the axis ratio.
+
+
+ The axis ratio.
+
+
+
+
+ Gets or sets the majour end point.
+
+
+ The majour end point.
+
+
+
+
+ Gets the minor end point.
+
+
+ The minor end point.
+
+
+
+
+ The Cad embedded object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Get first occurrence of an attribute from object.
+
+ Attribute code
+
+ Representation of a value
+
+
+
+ Gets or sets the data list.
+
+
+
+
+ The embedded object Container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the embedded objects.
+
+
+
+
+ The Cad revolved surface.
+
+
+
+
+ The Cad surface base.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the count isolines u.
+
+
+
+
+ Gets or sets the count isolines v.
+
+
+
+
+ Gets or sets the modeler format version.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the sweep alignment option.
+
+
+ The sweep alignment option.
+
+
+
+
+ Gets or sets the attribute 71.
+
+
+ The attribute 71.
+
+
+
+
+ Gets or sets the align start flag.
+
+
+ The align start flag.
+
+
+
+
+ Gets or sets the bank flag.
+
+
+ The bank flag.
+
+
+
+
+ Gets or sets the base point set flag.
+
+
+ The base point set flag.
+
+
+
+
+ Gets or sets the sweep entity transform computed flag.
+
+
+ The sweep entity transform computed flag.
+
+
+
+
+ Gets or sets the path entity transform computed flag.
+
+
+ The path entity transform computed flag.
+
+
+
+
+ Gets or sets the align angle.
+
+
+ The align angle.
+
+
+
+
+ Gets or sets the scale factor.
+
+
+ The scale factor.
+
+
+
+
+ Gets or sets the extruded surface binary data.
+
+
+ The extruded surface binary data.
+
+
+
+
+ Gets or sets the size of the binary data.
+
+
+ The size of the binary data.
+
+
+
+
+ Gets or sets the class identifier.
+
+
+ The class identifier.
+
+
+
+
+ Gets or sets sweep vector.
+
+
+
+
+ Gets or sets reference vector.
+
+
+
+
+ Gets or sets the draft angle.
+
+
+
+
+ Gets or sets the end draft distance.
+
+
+
+
+ Gets or sets a value indicating whether solid flag.
+
+
+
+
+ Gets or sets the start draft distance.
+
+
+
+
+ Gets or sets the transform matrix.
+
+
+
+
+ Gets or sets sweep of transform matrix.
+
+
+
+
+ Gets or sets path of transform matrix.
+
+
+
+
+ Gets or sets the twist angle.
+
+
+
+
+ Class describing CadFieldList object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute330 list.
+
+
+ The attribute330 list.
+
+
+
+
+ Gets or sets the attribute90 list.
+
+
+ The attribute90 list.
+
+
+
+
+ Class describing GeoData object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the object version.
+
+
+ The object version.
+
+
+
+
+ Gets or sets the type of the design coordinates.
+
+
+ The type of the design coordinates.
+
+
+
+
+ Gets or sets the host block table record.
+
+
+ The host block table record.
+
+
+
+
+ Gets or sets the design point.
+
+
+ The design point.
+
+
+
+
+ Gets or sets the coordinate system coordinates reference point.
+
+
+ The coordinate system coordinates reference point.
+
+
+
+
+ Gets or sets the north direction vector.
+
+
+ The north direction vector.
+
+
+
+
+ Gets or sets the horizontal unit scale.
+
+
+ The horizontal unit scale.
+
+
+
+
+ Gets or sets the vertical unit scale.
+
+
+ The vertical unit scale.
+
+
+
+
+ Gets or sets the horizontal units per units value enumeration.
+
+
+ The horizontal units per units value enumeration.
+
+
+
+
+ Gets or sets the vertical units per units value enumeration.
+
+
+ The vertical units per units value enumeration.
+
+
+
+
+ Gets or sets up direction.
+
+
+ Up direction.
+
+
+
+
+ Gets or sets the scale estimation method.
+
+
+ The scale estimation method.
+
+
+
+
+ Gets or sets the bool flag specifying.
+
+
+ The bool flag specifying.
+
+
+
+
+ Gets or sets the user specified scale factor.
+
+
+ The user specified scale factor.
+
+
+
+
+ Gets or sets the sea level elevation.
+
+
+ The sea level elevation.
+
+
+
+
+ Gets or sets the coordinate projection radius.
+
+
+ The coordinate projection radius.
+
+
+
+
+ Gets or sets the coordinate system definition string.
+
+
+ The coordinate system definition string.
+
+
+
+
+ Gets or sets the geo RSS tag.
+
+
+ The geo RSS tag.
+
+
+
+
+ Gets or sets the observation from tag.
+
+
+ The observation from tag.
+
+
+
+
+ Gets or sets the observation to tag.
+
+
+ The observation to tag.
+
+
+
+
+ Gets or sets the observation coverage tag.
+
+
+ The observation coverage tag.
+
+
+
+
+ Gets or sets the geo mesh points number.
+
+
+ The geo mesh points number.
+
+
+
+
+ Gets or sets the source mesh points.
+
+
+ The source mesh points.
+
+
+
+
+ Gets or sets the destination mesh points.
+
+
+ The destination mesh points.
+
+
+
+
+ Gets or sets the faces number.
+
+
+ The faces number.
+
+
+
+
+ Gets or sets the face point indexes1.
+
+
+ The face point indexes1.
+
+
+
+
+ Gets or sets the face point indexes2.
+
+
+ The face point indexes2.
+
+
+
+
+ Gets or sets the face point indexes3.
+
+
+ The face point indexes3.
+
+
+
+
+ Class describing CadGraphicsDataContainer,
+ pseudo entity to read objects from .dwg which has a graphic data
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadGridFormat
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Values
+
+
+
+
+ Class describing CadGroup object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the unnamed flag.
+
+
+ The unnamed flag.
+
+
+
+
+ Gets or sets the selectability flag.
+
+
+ The selectability flag.
+
+
+
+
+ Gets or sets the hard pointer handles.
+
+
+ The hard pointer handles.
+
+
+
+
+ Class describing Cad header
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the header properties.
+
+
+ The header properties.
+
+
+
+
+ Gets the custom properties.
+
+
+ The custom properties.
+
+
+
+
+ Gets the acad version.
+
+
+ The acad version.
+
+
+
+
+ Gets the (DWG) summary information.
+
+
+ The summary information.
+
+
+
+
+ Gets the summary information wrapper for .
+
+
+ The summary information wrapper for .
+
+
+
+
+ The summary info wrapper for Cad (Dxf and Dwg) header.
+
+
+
+
+ The Cad SummaryInfo interface.
+
+
+
+
+ Gets or sets the title.
+
+
+ The title.
+
+
+
+
+ Gets or sets the subject.
+
+
+ The subject.
+
+
+
+
+ Gets or sets the author.
+
+
+ The author.
+
+
+
+
+ Gets or sets the keywords.
+
+
+ The keywords.
+
+
+
+
+ Gets or sets the comments.
+
+
+ The comments.
+
+
+
+
+ Gets or sets the last saved by.
+
+
+ The last saved by.
+
+
+
+
+ Gets or sets the revision number.
+
+
+ The revision number.
+
+
+
+
+ Gets or sets the hyperlink base.
+
+
+ The hyperlink base.
+
+
+
+
+ The cumulative editing time for this drawing.
+
+
+
+
+ The date/time of drawing creation.
+
+
+
+
+ The date/time of the last update/save.
+
+
+
+
+ Gets or sets the title.
+
+
+ The title.
+
+
+
+
+ Gets or sets the subject.
+
+
+ The subject.
+
+
+
+
+ Gets or sets the author.
+
+
+ The author.
+
+
+
+
+ Gets or sets the keywords.
+
+
+ The keywords.
+
+
+
+
+ Gets or sets the comments.
+
+
+ The comments.
+
+
+
+
+ Gets or sets the last saved by.
+
+
+ The last saved by.
+
+
+
+
+ Gets or sets the revision number.
+
+
+ The revision number.
+
+
+
+
+ Gets or sets the hyperlink base.
+
+
+ The hyperlink base.
+
+
+
+
+ Gets or sets the cumulative editing time for this drawing.
+
+
+ The cumulative editing time for this drawing.
+
+
+
+
+ The or sets local date/time of drawing creation
+
+
+
+
+ The or sets local date/time of last drawing update.
+
+
+
+
+ Gets or sets the universal date/time the drawing was created.
+
+
+ The universal date/time the drawing was created
+
+
+
+
+ Gets or sets the universal date/time of the last update/save.
+
+
+ The universal date/time of the last update/save.
+
+
+
+
+ Class describing CadHelix
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the axis points.
+
+
+ The axis points.
+
+
+
+
+ Gets or sets the axis vector.
+
+
+ The axis vector.
+
+
+
+
+ Gets or sets the type of the constrain.
+
+
+ The type of the constrain.
+
+
+
+
+ Gets or sets a value indicating whether this is left or right handed.
+
+
+ true if left handed; otherwise, false.
+
+
+
+
+ Gets or sets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets or sets the spline object.
+
+
+
+
+ Gets or sets the start point.
+
+
+ The start point.
+
+
+
+
+ Gets or sets the turn length.
+
+
+
+
+ Gets or sets the turns number.
+
+
+ The turns number.
+
+
+
+
+ Gets or sets the maintainance release number.
+
+
+ The maintainance release number.
+
+
+
+
+ Gets or sets the major release number.
+
+
+ The major release number.
+
+
+
+
+ Gets or sets the axis base point.
+
+
+ The axis base point.
+
+
+
+
+ The Cad insert object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the column count.
+
+
+
+
+ Gets or sets the column spacing.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the name.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+
+
+ Gets or sets the row count.
+
+
+
+
+ Gets or sets the row spacing.
+
+
+
+
+ Gets or sets the scale x.
+
+
+
+
+ Gets or sets the scale y.
+
+
+
+
+ Gets or sets the scale z.
+
+
+
+
+ Class describing LAYER_FILTER object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the layer names.
+
+
+ The layer names.
+
+
+
+
+ The Cad layout object.
+
+
+
+
+ The Cad Plot Settings object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the shade plot handle.
+
+
+ The shade plot handle.
+
+
+
+
+ Gets or sets the paper image origin.
+
+
+ The paper image origin.
+
+
+
+
+ Gets or sets the standard scale type factor.
+
+
+ The standard scale type factor.
+
+
+
+
+ Gets or sets the shade plot custom dpi.
+
+
+ The shade plot custom dpi.
+
+
+
+
+ Gets or sets the shade plot resolution level.
+
+
+ The shade plot resolution level.
+
+
+
+
+ Gets or sets the shade plot mode.
+
+
+ The shade plot mode.
+
+
+
+
+ Gets or sets the type of the standard scale.
+
+
+ The type of the standard scale.
+
+
+
+
+ Gets or sets the current style sheet.
+
+
+ The current style sheet.
+
+
+
+
+ Gets or sets the type of the plot.
+
+
+ The type of the plot.
+
+
+
+
+ Gets or sets the plot rotation.
+
+
+ The plot rotation.
+
+
+
+
+ Gets or sets the plot paper units.
+
+
+ The plot paper units.
+
+
+
+
+ Gets or sets the plot layout flag.
+
+
+ The plot layout flag.
+
+
+
+
+ Gets or sets the custom print scale denominator.
+
+
+ The custom print scale denominator.
+
+
+
+
+ Gets or sets the custom print scale numerator.
+
+
+ The custom print scale numerator.
+
+
+
+
+ Gets or sets the plot window area2.
+
+
+ The plot window area2.
+
+
+
+
+ Gets or sets the plot window area1.
+
+
+ The plot window area1.
+
+
+
+
+ Gets or sets the plot origin.
+
+
+ The plot origin.
+
+
+
+
+ Gets or sets the size of the plot paper.
+
+
+ The size of the plot paper.
+
+
+
+
+ Gets or sets the size of the top.
+
+
+ The size of the top.
+
+
+
+
+ Gets or sets the size of the right side.
+
+
+ The size of the right side.
+
+
+
+
+ Gets or sets the size of the bottom.
+
+
+ The size of the bottom.
+
+
+
+
+ Gets or sets the size of the left side.
+
+
+ The size of the left side.
+
+
+
+
+ Gets or sets the name of the plot view.
+
+
+ The name of the plot view.
+
+
+
+
+ Gets or sets the size of the paper.
+
+
+ The size of the paper.
+
+
+
+
+ Gets or sets the name of the printer or configuration file.
+
+
+ The name of the printer or configuration file.
+
+
+
+
+ Gets or sets the name of the page setup.
+
+
+ The name of the page setup.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name of the layout.
+
+
+ The name of the layout.
+
+
+
+
+ Gets or sets the control flag.
+
+
+ The control flag.
+
+
+
+
+ Gets or sets the tab order.
+
+
+ The tab order.
+
+
+
+
+ Gets or sets the minimum limits.
+
+
+ The minimum limits.
+
+
+
+
+ Gets or sets the maximum limits.
+
+
+ The maximum limits.
+
+
+
+
+ Gets or sets the insertion base point.
+
+
+ The insertion base point.
+
+
+
+
+ Gets or sets the minimum extents.
+
+
+ The minimum extents.
+
+
+
+
+ Gets or sets the maximum extents.
+
+
+ The maximum extents.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the UCS origin.
+
+
+ The UCS origin.
+
+
+
+
+ Gets or sets the UCS x axis.
+
+
+ The UCS x axis.
+
+
+
+
+ Gets or sets the UCS y axis.
+
+
+ The UCS y axis.
+
+
+
+
+ Gets or sets the type of the UCS orthographic.
+
+
+ The type of the UCS orthographic.
+
+
+
+
+ Gets or sets the handle block table record.
+
+
+ The handle block table record.
+
+
+
+
+ Gets or sets the handle last active viewport.
+
+
+ The handle last active viewport.
+
+
+
+
+ Gets or sets the handle ac database UCS table record UCS named.
+
+
+ The handle ac database UCS table record UCS named.
+
+
+
+
+ Gets or sets the handle ac database UCS table record UCS.
+
+
+ The handle ac database UCS table record orthographic UCS.
+
+
+
+
+ Gets or sets the shade plot identifier.
+
+
+ The shade plot identifier.
+
+
+
+
+ Class describing Cad leader
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the last leader vertex.
+
+
+ The last leader vertex.
+
+
+
+
+ Gets or sets the horizontal direction.
+
+
+ The horizontal direction.
+
+
+
+
+ Gets or sets the color of the leader.
+
+
+ The color of the leader.
+
+
+
+
+ Gets or sets the style type.
+
+
+
+
+ Gets or sets reference to associated annotation object.
+
+
+
+
+ Gets or sets normal vector
+
+
+
+
+ Gets or sets offset of last leader vertex from annotation placement point
+
+
+
+
+ Gets or sets the arrowhead flag.
+
+
+
+
+ Gets or sets the type of path.
+
+
+
+
+ Gets or sets the type of path.
+
+
+
+
+ Gets or sets the hook line creation flag.
+
+
+
+
+ Gets or sets the hook line flag.
+
+
+
+
+ Gets or sets the text height.
+
+
+
+
+ Gets or sets the scale x.
+
+
+
+
+ Gets or sets the count of vertices.
+
+
+
+
+ Gets or sets the coordinates.
+
+
+ The coordinates.
+
+
+
+
+ Gets or sets the annot type.
+
+
+
+
+ Class describing CadLight
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 63.
+
+
+ The attribute 63.
+
+
+
+
+ Gets or sets the attribute 421.
+
+
+ The attribute 421.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Gets or sets the name of the light.
+
+
+ The name of the light.
+
+
+
+
+ Gets or sets the type of the light.
+
+
+ The type of the light.
+
+
+
+
+ Gets or sets a value indicating whether this is status.
+
+
+ true if status; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [plot glyph].
+
+
+ true if [plot glyph]; otherwise, false.
+
+
+
+
+ Gets or sets the inten sity.
+
+
+ The inten sity.
+
+
+
+
+ Gets or sets the light position.
+
+
+ The light position.
+
+
+
+
+ Gets or sets the target location.
+
+
+ The target location.
+
+
+
+
+ Gets or sets the type of the attenuation.
+
+
+ The type of the attenuation.
+
+
+
+
+ Gets or sets a value indicating whether [attenuation limits].
+
+
+ true if [attenuation limits]; otherwise, false.
+
+
+
+
+ Gets or sets the attenuation start limit.
+
+
+ The attenuation start limit.
+
+
+
+
+ Gets or sets the attenuation end limit.
+
+
+ The attenuation end limit.
+
+
+
+
+ Gets or sets the hotspot angle.
+
+
+ The hotspot angle.
+
+
+
+
+ Gets or sets the falloff angle.
+
+
+ The falloff angle.
+
+
+
+
+ Gets or sets a value indicating whether [cast shadows].
+
+
+ true if [cast shadows]; otherwise, false.
+
+
+
+
+ Gets or sets the type of the shadow.
+
+
+ The type of the shadow.
+
+
+
+
+ Gets or sets the size of the shadow map.
+
+
+ The size of the shadow map.
+
+
+
+
+ Gets or sets the shadow map softness.
+
+
+ The shadow map softness.
+
+
+
+
+ Class describing LIGHTLIST object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Gets or sets the lights number.
+
+
+ The lights number.
+
+
+
+
+ Gets or sets the light handles.
+
+
+ The light handles.
+
+
+
+
+ Gets or sets the light names.
+
+
+ The light names.
+
+
+
+
+ Class describing Cad line
+
+
+
+
+ Initializes a new instance of the class.
+
+ Start point.
+ End point.
+ Thrown when one of arguments is null
+
+
+
+ Gets or sets the attribute62.
+
+
+ The attribute62.
+
+
+
+
+ Gets or sets the attribute6.
+
+
+ The attribute6.
+
+
+
+
+ Gets or sets the first Point.
+
+
+ The First Point.
+
+
+
+
+ Gets or sets the second Point.
+
+
+ The Second Point.
+
+
+
+
+ Gets or sets the thickness.
+
+
+ The thickness.
+
+
+
+
+ The Cad lofted surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a value indicating whether align direction flag.
+
+
+
+
+ Gets or sets a value indicating whether arc length parameter flag.
+
+
+
+
+ Gets or sets a value indicating whether closed surface flag.
+
+
+
+
+ Gets or sets the end draft angle.
+
+
+
+
+ Gets or sets the end draft magnitude.
+
+
+
+
+ Gets or sets a value indicating whether twist flag.
+
+
+
+
+ Gets or sets the plane normal type.
+
+
+
+
+ Gets or sets a value indicating whether ruled surface flag.
+
+
+
+
+ Gets or sets a value indicating whether simple surface flag.
+
+
+
+
+ Gets or sets a value indicating whether solid flag.
+
+
+
+
+ Gets or sets the start draft angle.
+
+
+
+
+ Gets or sets the start draft magnitude.
+
+
+
+
+ Gets or sets the transform matrix.
+
+
+
+
+ Gets or sets a value indicating whether virtual guide flag.
+
+
+
+
+ Class describing Cad lwPoliline
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute62.
+
+
+ The attribute62.
+
+
+
+
+ Gets or sets the attribute6.
+
+
+ The attribute6.
+
+
+
+
+ Gets or sets the coordinates.
+
+
+ The coordinates.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the Constant Width.
+
+
+ The Constant Width.
+
+
+
+
+ Gets or sets the end width.
+
+
+ The end width.
+
+
+
+
+ Gets or sets the bugle.
+
+
+ The bugle.
+
+
+
+
+ Gets or sets the flag.
+
+
+ The flag.
+
+
+
+
+ Gets or sets the start width.
+
+
+ The start width.
+
+
+
+
+ Gets or sets the Thickness
+
+
+ The Thickness.
+
+
+
+
+ Gets or sets the PointCount
+
+
+ The count of points.
+
+
+
+
+ Class describing CadMargin
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadMaterial
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name of the material.
+
+
+ The name of the material.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the ambient color method.
+
+
+ The ambient color method.
+
+
+
+
+ Gets or sets the ambient color factor.
+
+
+ The ambient color factor.
+
+
+
+
+ Gets or sets the ambient color value.
+
+
+ The ambient color value.
+
+
+
+
+ Gets or sets the diffuse color method.
+
+
+ The diffuse color method.
+
+
+
+
+ Gets or sets the diffuse color factor.
+
+
+ The diffuse color factor.
+
+
+
+
+ Gets or sets the diffuse color value.
+
+
+ The diffuse color value.
+
+
+
+
+ Gets or sets the diffuse map blend factor.
+
+
+ The diffuse map blend factor.
+
+
+
+
+ Gets or sets the diffuse map source.
+
+
+ The diffuse map source.
+
+
+
+
+ Gets or sets the name of the diffuse map file.
+
+
+ The name of the diffuse map file.
+
+
+
+
+ Gets or sets the diffuse map mapper projection method.
+
+
+ The diffuse map mapper projection method.
+
+
+
+
+ Gets or sets the tiling method.
+
+
+ The tiling method.
+
+
+
+
+ Gets or sets the automatic transform method.
+
+
+ The automatic transform method.
+
+
+
+
+ Gets or sets the diffuse transform matrix.
+
+
+ The diffuse transform matrix.
+
+
+
+
+ Gets or sets the specular gloss factor.
+
+
+ The specular gloss factor.
+
+
+
+
+ Gets or sets the specular color method.
+
+
+ The specular color method.
+
+
+
+
+ Gets or sets the specular color factor.
+
+
+ The specular color factor.
+
+
+
+
+ Gets or sets the specular color value.
+
+
+ The specular color value.
+
+
+
+
+ Gets or sets the specular map blend factor.
+
+
+ The specular map blend factor.
+
+
+
+
+ Gets or sets the specular map source.
+
+
+ The specular map source.
+
+
+
+
+ Gets or sets the name of the specular map file.
+
+
+ The name of the specular map file.
+
+
+
+
+ Gets or sets the specular map mapper projection method.
+
+
+ The specular map mapper projection method.
+
+
+
+
+ Gets or sets the specular map mapper tiling method.
+
+
+ The specular map mapper tiling method.
+
+
+
+
+ Gets or sets the specular map mapper automatic transform method.
+
+
+ The specular map mapper automatic transform method.
+
+
+
+
+ Gets or sets the specular map mapper transform matrix.
+
+
+ The specular map mapper transform matrix.
+
+
+
+
+ Gets or sets the reflection map blend factor.
+
+
+ The reflection map blend factor.
+
+
+
+
+ Gets or sets the reflection map source.
+
+
+ The reflection map source.
+
+
+
+
+ Gets or sets the name of the reflection map file.
+
+
+ The name of the reflection map file.
+
+
+
+
+ Gets or sets the reflection map mapper projection method.
+
+
+ The reflection map mapper projection method.
+
+
+
+
+ Gets or sets the reflection map mapper tiling method.
+
+
+ The reflection map mapper tiling method.
+
+
+
+
+ Gets or sets the reflection map mapper automatic transform method.
+
+
+ The reflection map mapper automatic transform method.
+
+
+
+
+ Gets or sets the reflection map mapper transform matrix.
+
+
+ The reflection map mapper transform matrix.
+
+
+
+
+ Gets or sets the opacity percent.
+
+
+ The opacity percent.
+
+
+
+
+ Gets or sets the opacity map blend factor.
+
+
+ The opacity map blend factor.
+
+
+
+
+ Gets or sets the opacity map source.
+
+
+ The opacity map source.
+
+
+
+
+ Gets or sets the name of the opacity map file.
+
+
+ The name of the opacity map file.
+
+
+
+
+ Gets or sets the opacity map mapper projection method.
+
+
+ The opacity map mapper projection method.
+
+
+
+
+ Gets or sets the opacity map mapper tiling method.
+
+
+ The opacity map mapper tiling method.
+
+
+
+
+ Gets or sets the opacity map mapper automatic transform method.
+
+
+ The opacity map mapper automatic transform method.
+
+
+
+
+ Gets or sets the opacity map mapper transform matrix.
+
+
+ The opacity map mapper transform matrix.
+
+
+
+
+ Gets or sets the bump map blend factor.
+
+
+ The bump map blend factor.
+
+
+
+
+ Gets or sets the bump map source.
+
+
+ The bump map source.
+
+
+
+
+ Gets or sets the name of the bump map file.
+
+
+ The name of the bump map file.
+
+
+
+
+ Gets or sets the bump map mapper projection method.
+
+
+ The bump map mapper projection method.
+
+
+
+
+ Gets or sets the bump map mapper tiling method.
+
+
+ The bump map mapper tiling method.
+
+
+
+
+ Gets or sets the bump map mapper automatic transform method.
+
+
+ The bump map mapper automatic transform method.
+
+
+
+
+ Gets or sets the bump map mapper transform matrix.
+
+
+ The bump map mapper transform matrix.
+
+
+
+
+ Gets or sets the index of the refraction.
+
+
+ The index of the refraction.
+
+
+
+
+ Gets or sets the refraction map blend factor.
+
+
+ The refraction map blend factor.
+
+
+
+
+ Gets or sets the refraction map source.
+
+
+ The refraction map source.
+
+
+
+
+ Gets or sets the name of the refraction map file.
+
+
+ The name of the refraction map file.
+
+
+
+
+ Gets or sets the refraction map mapper projection method.
+
+
+ The refraction map mapper projection method.
+
+
+
+
+ Gets or sets the refraction map mapper tiling method.
+
+
+ The refraction map mapper tiling method.
+
+
+
+
+ Gets or sets the refraction map mapper automatic transform method.
+
+
+ The refraction map mapper automatic transform method.
+
+
+
+
+ Gets or sets the refraction map mapper transform matrix.
+
+
+ The refraction map mapper transform matrix.
+
+
+
+
+ Gets or sets the color bleed scale.
+
+
+ The color bleed scale.
+
+
+
+
+ Gets or sets the indirect dump scale.
+
+
+ The indirect dump scale.
+
+
+
+
+ Gets or sets the reflectance scale.
+
+
+ The reflectance scale.
+
+
+
+
+ Gets or sets the transmittance scale.
+
+
+ The transmittance scale.
+
+
+
+
+ Gets or sets the two sided material.
+
+
+ The two sided material.
+
+
+
+
+ Gets or sets the luminance.
+
+
+ The luminance.
+
+
+
+
+ Gets or sets the luminance mode.
+
+
+ The luminance mode.
+
+
+
+
+ Gets or sets the normal map method.
+
+
+ The normal map method.
+
+
+
+
+ Gets or sets the normal map strength.
+
+
+ The normal map strength.
+
+
+
+
+ Gets or sets the normal map blend factor.
+
+
+ The normal map blend factor.
+
+
+
+
+ Gets or sets the normal map source.
+
+
+ The normal map source.
+
+
+
+
+ Gets or sets the name of the normal map source file.
+
+
+ The name of the normal map source file.
+
+
+
+
+ Gets or sets the normal mapper projection.
+
+
+ The normal mapper projection.
+
+
+
+
+ Gets or sets the normal mapper tiling.
+
+
+ The normal mapper tiling.
+
+
+
+
+ Gets or sets the normal mapper automatic transform.
+
+
+ The normal mapper automatic transform.
+
+
+
+
+ Gets or sets the normal mapper transform.
+
+
+ The normal mapper transform.
+
+
+
+
+ Gets or sets the materials anonymous.
+
+
+ The materials anonymous.
+
+
+
+
+ Gets or sets the global illumination mode.
+
+
+ The global illumination mode.
+
+
+
+
+ Gets or sets the final gather mode.
+
+
+ The final gather mode.
+
+
+
+
+ Gets or sets the name of the gen proc.
+
+
+ The name of the gen proc.
+
+
+
+
+ Gets or sets the gen proc value bool.
+
+
+ The gen proc value bool.
+
+
+
+
+ Gets or sets the gen proc value int.
+
+
+ The gen proc value int.
+
+
+
+
+ Gets or sets the gen proc value real.
+
+
+ The gen proc value real.
+
+
+
+
+ Gets or sets the gen proc value text.
+
+
+ The gen proc value text.
+
+
+
+
+ Gets or sets the gen proc table end.
+
+
+ The gen proc table end.
+
+
+
+
+ Gets or sets the index of the gen proc value color.
+
+
+ The index of the gen proc value color.
+
+
+
+
+ Gets or sets the gen proc value color RGB.
+
+
+ The gen proc value color RGB.
+
+
+
+
+ Gets or sets the name of the gen proc value color.
+
+
+ The name of the gen proc value color.
+
+
+
+
+ Gets or sets the map u tile.
+
+
+ The map u tile.
+
+
+
+
+ Gets or sets the translucence.
+
+
+ The translucence.
+
+
+
+
+ Gets or sets the self illuminaton.
+
+
+ The self illuminaton.
+
+
+
+
+ Gets or sets the reflectivity.
+
+
+ The reflectivity.
+
+
+
+
+ Gets or sets the illumination model.
+
+
+ The illumination model.
+
+
+
+
+ Gets or sets the channel flags.
+
+
+ The channel flags.
+
+
+
+
+ Gets or sets the 282 attribute.
+
+
+ The 282 attribute.
+
+
+
+
+ Class describing CadMesh
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the property types.
+
+
+ The property types.
+
+
+
+
+ Gets or sets the overridden property count.
+
+
+ The overridden property count.
+
+
+
+
+ Gets or sets vertices
+
+
+
+
+ Gets or sets face list
+
+
+
+
+ Gets or sets vertex indices
+
+
+
+
+ Gets or sets version number
+
+
+
+
+ Gets or sets the subdivision level number.
+
+
+ The subdivision level number.
+
+
+
+
+ Gets or sets size of face list
+
+
+
+
+ Gets or sets blend case
+
+
+
+
+ Gets or sets vertex count
+
+
+
+
+ Gets or sets edge count
+
+
+
+
+ Gets or sets the edge crease count.
+
+
+ The edge crease count.
+
+
+
+
+ Gets or sets the edge create values.
+
+
+ The edge create values.
+
+
+
+
+ Gets or sets the sub entity count.
+
+
+ The sub entity count.
+
+
+
+
+ Gets or sets the sub entity markers.
+
+
+ The sub entity markers.
+
+
+
+
+ Class describing Cad multileader
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the blocks.
+
+
+ The blocks.
+
+
+
+
+ Gets or sets the attribute270.
+
+
+ The attribute270.
+
+
+
+
+ Gets or sets the block content scale.
+
+
+ The block content scale.
+
+
+
+
+ Gets or sets a value indicating whether [text direction negative].
+
+
+ true if [text direction negative]; otherwise, false.
+
+
+
+
+ Gets or sets the text align in ipe.
+
+
+ The text align in ipe.
+
+
+
+
+ Gets or sets the text attachment point.
+
+
+ The text attachment point.
+
+
+
+
+ Gets or sets the text attachment direction.
+
+
+ The text attachment direction.
+
+
+
+
+ Gets or sets the bottom text attachment direction.
+
+
+ The bottom text attachment direction.
+
+
+
+
+ Gets or sets the top text attachment direction.
+
+
+ The top text attachment direction.
+
+
+
+
+ Gets or sets the block content rotation.
+
+
+ The block content rotation.
+
+
+
+
+ Gets or sets the type of the block content connection.
+
+
+ The type of the block content connection.
+
+
+
+
+ Gets or sets a value indicating whether [enable annotation scale].
+
+
+ true if [enable annotation scale]; otherwise, false.
+
+
+
+
+ Gets or sets the index of the arrowhead.
+
+
+ The index of the arrowhead.
+
+
+
+
+ Gets or sets the arrow head id2.
+
+
+ The arrow head id2.
+
+
+
+
+ Gets or sets the type of the content.
+
+
+ The type of the content.
+
+
+
+
+ Gets or sets the text style identifier.
+
+
+ The text style identifier.
+
+
+
+
+ Gets or sets the type of the text left attachment.
+
+
+ The type of the text left attachment.
+
+
+
+
+ Gets or sets the type of the text right attachment.
+
+
+ The type of the text right attachment.
+
+
+
+
+ Gets or sets the type of the text angle.
+
+
+ The type of the text angle.
+
+
+
+
+ Gets or sets the type of the text alignment.
+
+
+ The type of the text alignment.
+
+
+
+
+ Gets or sets the color of the text.
+
+
+ The color of the text.
+
+
+
+
+ Gets or sets a value indicating whether [enable frame text].
+
+
+ true if [enable frame text]; otherwise, false.
+
+
+
+
+ Gets or sets the block content identifier.
+
+
+ The block content identifier.
+
+
+
+
+ Gets or sets the property override flag.
+
+
+ The property override flag.
+
+
+
+
+ Gets or sets the leader line type identifier.
+
+
+ The leader line type identifier.
+
+
+
+
+ Gets or sets the leader line weight.
+
+
+ The leader line weight.
+
+
+
+
+ Gets or sets a value indicating whether [enable landing].
+
+
+ true if [enable landing]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [enable dogleg].
+
+
+ true if [enable dogleg]; otherwise, false.
+
+
+
+
+ Gets or sets the length of the dogleg.
+
+
+ The length of the dogleg.
+
+
+
+
+ Gets or sets the size of the arrowhead.
+
+
+ The size of the arrowhead.
+
+
+
+
+ Gets or sets the style type.
+
+
+
+
+ Gets or sets leader style Id
+
+
+
+
+ Gets or sets the context data
+
+
+
+
+ Gets or sets arrow head ID.
+
+
+
+
+ Gets or sets the type.
+
+
+
+
+ Gets or sets the color of text.
+
+
+
+
+ Gets or sets the color of text.
+
+
+
+
+ Gets or sets height of text.
+
+
+
+
+ Class describing MLeader block
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block attributer identifier.
+
+
+ The block attributer identifier.
+
+
+
+
+ Gets or sets the index of the block attribute.
+
+
+ The index of the block attribute.
+
+
+
+
+ Gets or sets the block attribute text string.
+
+
+ The block attribute text string.
+
+
+
+
+ Gets or sets the width of the block attribute.
+
+
+ The width of the block attribute.
+
+
+
+
+ Class describing context data for multileader
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute273.
+
+
+ The attribute273.
+
+
+
+
+ Gets or sets the attribute 272.
+
+
+ The attribute 272.
+
+
+
+
+ Gets or sets the block content identifier.
+
+
+ The block content identifier.
+
+
+
+
+ Gets or sets the block content normal direction.
+
+
+ The block content normal direction.
+
+
+
+
+ Gets or sets the block content position.
+
+
+ The block content position.
+
+
+
+
+ Gets or sets the block content scale.
+
+
+ The block content scale.
+
+
+
+
+ Gets or sets the block content rotation.
+
+
+ The block content rotation.
+
+
+
+
+ Gets or sets the color of the block content.
+
+
+ The color of the block content.
+
+
+
+
+ Gets or sets the block transformation matrix list.
+
+
+ The block transformation matrix list.
+
+
+
+
+ Gets or sets a value indicating whether [plane normal reversed].
+
+
+ true if [plane normal reversed]; otherwise, false.
+
+
+
+
+ Gets or sets the plane y axis direction.
+
+
+ The plane y axis direction.
+
+
+
+
+ Gets or sets the plane x axis direction.
+
+
+ The plane x axis direction.
+
+
+
+
+ Gets or sets a value indicating whether [plane origin point].
+
+
+ true if [plane origin point]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [text column flow reversed].
+
+
+ true if [text column flow reversed]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [text use word break].
+
+
+ true if [text use word break]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance has block.
+
+
+ true if this instance has block; otherwise, false.
+
+
+
+
+ Gets or sets the attribute44 value.
+
+
+ The attribute44 value.
+
+
+
+
+ Gets or sets the attribute177 value.
+
+
+ The attribute177 value.
+
+
+
+
+ Gets or sets the attribute176 value.
+
+
+ The attribute176 value.
+
+
+
+
+ Gets or sets whether context data has MText.
+
+
+ If context data has MText
+
+
+
+
+ Gets or sets text flow direction
+
+
+ Text flow direction
+
+
+
+
+ Gets or sets text column type
+
+
+ Text column type
+
+
+
+
+ Gets or sets text background color on
+
+
+ Text background color on
+
+
+
+
+ Gets or sets text background fill on
+
+
+ Text background color on
+
+
+
+
+ Gets or sets default text.
+
+
+ Default text.
+
+
+
+
+ Gets or sets text line spacing style.
+
+
+ Text line spacing style
+
+
+
+
+ Gets or sets text style.
+
+
+ Text style.
+
+
+
+
+ Gets or sets width of text.
+
+
+ The width of text.
+
+
+
+
+ Gets or sets width of text column gutter.
+
+
+ The width of text column gutter.
+
+
+
+
+ Gets or sets text column height.
+
+
+ The height of text column
+
+
+
+
+ Gets or sets text background scale factor.
+
+
+ Text background scale factor.
+
+
+
+
+ Gets or sets text background transparency.
+
+
+ Text background transparency.
+
+
+
+
+ Gets or sets text landing gap.
+
+
+
+
+ Gets or sets using of text auto height.
+
+
+
+
+ Gets or sets width of column.
+
+
+ The width of column.
+
+
+
+
+ Gets or sets line spacing factor.
+
+
+ Line spacing factor.
+
+
+
+
+ Gets or sets the content scale.
+
+
+ The scale of content.
+
+
+
+
+ Gets or sets the rotation of the text.
+
+
+ The rotation of the text.
+
+
+
+
+ Gets or sets the height of text.
+
+
+ The height of text.
+
+
+
+
+ Gets or sets size of an arrow.
+
+
+ The arrow size.
+
+
+
+
+ Gets or sets basepoint.
+
+
+ The base point of context data.
+
+
+
+
+ Gets or sets text normal direction.
+
+
+ The text normal direction point of context data.
+
+
+
+
+ Gets or sets text location point.
+
+
+ The text location point of context data.
+
+
+
+
+ Gets or sets text direction point.
+
+
+ The text direction point of context data.
+
+
+
+
+ Gets or sets text location point.
+
+
+ The text location point of context data.
+
+
+
+
+ Gets or sets text color.
+
+
+ Color of text.
+
+
+
+
+ Gets or sets text background color.
+
+
+ Background color of text.
+
+
+
+
+ Gets or sets text attachment style.
+
+
+
+
+ Gets or sets text left attachment style.
+
+
+
+
+ Gets or sets right attachment type.
+
+
+
+
+ Class describing Cad multileader line
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the parameters list.
+
+
+ The parameters list.
+
+
+
+
+ Gets or sets the break end point.
+
+
+ The break end point.
+
+
+
+
+ Gets or sets the index of the break point.
+
+
+ The index of the break point.
+
+
+
+
+ Gets or sets the break start point.
+
+
+ The break start point.
+
+
+
+
+ Gets or sets the index of the leader line.
+
+
+ The index of the leader line.
+
+
+
+
+ Gets or sets the leaderPoints.
+
+
+ The leaderPoints.
+
+
+
+
+ Class describing Cad multileader node
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 271.
+
+
+ The attribute 271.
+
+
+
+
+ Gets or sets a value indicating whether this instance has set dogleg vector.
+
+
+ true if this instance has set dogleg vector; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance has set last leader line point.
+
+
+ true if this instance has set last leader line point; otherwise, false.
+
+
+
+
+ Gets or sets the break end point.
+
+
+ The break end point.
+
+
+
+
+ Gets or sets the break start point.
+
+
+ The break start point.
+
+
+
+
+ Gets or sets the dogleg vector.
+
+
+ The dogleg vector.
+
+
+
+
+ Gets or sets last leader line point.
+
+
+ The last leader line point.
+
+
+
+
+ Gets or sets last leader line point.
+
+
+ The last leader line point.
+
+
+
+
+ Gets or sets branch index.
+
+
+
+
+ Gets or sets dogleg length
+
+
+
+
+ Class describing CadMLeaderStyle
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the type of the content.
+
+
+ The type of the content.
+
+
+
+
+ Gets or sets the type of the draw m leader order.
+
+
+ The type of the draw m leader order.
+
+
+
+
+ Gets or sets the type of the draw leader order.
+
+
+ The type of the draw leader order.
+
+
+
+
+ Gets or sets the maximum leader segments points.
+
+
+ The maximum leader segments points.
+
+
+
+
+ Gets or sets the first segment angle constraint.
+
+
+ The first segment angle constraint.
+
+
+
+
+ Gets or sets the second segment angle constraint.
+
+
+ The second segment angle constraint.
+
+
+
+
+ Gets or sets the type of the leader line.
+
+
+ The type of the leader line.
+
+
+
+
+ Gets or sets the color of the leader line.
+
+
+ The color of the leader line.
+
+
+
+
+ Gets or sets the leader line type identifier.
+
+
+ The leader line type identifier.
+
+
+
+
+ Gets or sets the leader line weight.
+
+
+ The leader line weight.
+
+
+
+
+ Gets or sets the enable landing.
+
+
+ The enable landing.
+
+
+
+
+ Gets or sets the landing gap.
+
+
+ The landing gap.
+
+
+
+
+ Gets or sets the enable dogleg.
+
+
+ The enable dogleg.
+
+
+
+
+ Gets or sets the length of the dogleg.
+
+
+ The length of the dogleg.
+
+
+
+
+ Gets or sets the mleader style description.
+
+
+ The mleader style description.
+
+
+
+
+ Gets or sets the arrowhead identifier.
+
+
+ The arrowhead identifier.
+
+
+
+
+ Gets or sets the size of the arrowhead.
+
+
+ The size of the arrowhead.
+
+
+
+
+ Gets or sets the default m text contents.
+
+
+ The default m text contents.
+
+
+
+
+ Gets or sets the m text style identifier.
+
+
+ The m text style identifier.
+
+
+
+
+ Gets or sets the type of the text left attachment.
+
+
+ The type of the text left attachment.
+
+
+
+
+ Gets or sets the type of the text angle.
+
+
+ The type of the text angle.
+
+
+
+
+ Gets or sets the type of the text alignment.
+
+
+ The type of the text alignment.
+
+
+
+
+ Gets or sets the type of the text right attachment.
+
+
+ The type of the text right attachment.
+
+
+
+
+ Gets or sets the color of the text.
+
+
+ The color of the text.
+
+
+
+
+ Gets or sets the height of the text.
+
+
+ The height of the text.
+
+
+
+
+ Gets or sets the enable frame text.
+
+
+ The enable frame text.
+
+
+
+
+ Gets or sets the text align always left.
+
+
+ The text align always left.
+
+
+
+
+ Gets or sets the align space.
+
+
+ The align space.
+
+
+
+
+ Gets or sets the block content identifier.
+
+
+ The block content identifier.
+
+
+
+
+ Gets or sets the color of the block content.
+
+
+ The color of the block content.
+
+
+
+
+ Gets or sets the block content scale x.
+
+
+ The block content scale x.
+
+
+
+
+ Gets or sets the block content scale y.
+
+
+ The block content scale y.
+
+
+
+
+ Gets or sets the block content scale z.
+
+
+ The block content scale z.
+
+
+
+
+ Gets or sets the enable block content scale.
+
+
+ The enable block content scale.
+
+
+
+
+ Gets or sets the block content rotation.
+
+
+ The block content rotation.
+
+
+
+
+ Gets or sets the enable block content rotation.
+
+
+ The enable block content rotation.
+
+
+
+
+ Gets or sets the type of the block content connection.
+
+
+ The type of the block content connection.
+
+
+
+
+ Gets or sets the scale.
+
+
+ The scale.
+
+
+
+
+ Gets or sets the overwrite property value.
+
+
+ The overwrite property value.
+
+
+
+
+ Gets or sets the is annotative.
+
+
+ The is annotative.
+
+
+
+
+ Gets or sets the size of the break gap.
+
+
+ The size of the break gap.
+
+
+
+
+ Gets or sets the text attachment direction.
+
+
+ The text attachment direction.
+
+
+
+
+ Gets or sets the bottom text attachment direction.
+
+
+ The bottom text attachment direction.
+
+
+
+
+ Gets or sets the top text attachment direction.
+
+
+ The top text attachment direction.
+
+
+
+
+ Class describing Cad Mtext
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the background color RGB 420.
+
+
+ The background color RGB 420.
+
+
+
+
+ Gets or sets the background color RGB 421.
+
+
+ The background color RGB 421.
+
+
+
+
+ Gets or sets the background color RGB 422.
+
+
+ The background color RGB 422.
+
+
+
+
+ Gets or sets the background color RGB 423.
+
+
+ The background color RGB 423.
+
+
+
+
+ Gets or sets the background color RGB 424.
+
+
+ The background color RGB 424.
+
+
+
+
+ Gets or sets the background color RGB 425.
+
+
+ The background color RGB 425.
+
+
+
+
+ Gets or sets the background color RGB 426.
+
+
+ The background color RGB 426.
+
+
+
+
+ Gets or sets the background color RGB 427.
+
+
+ The background color RGB 427.
+
+
+
+
+ Gets or sets the background color RGB 428.
+
+
+ The background color RGB 428.
+
+
+
+
+ Gets or sets the background color RGB 429.
+
+
+ The background color RGB 429.
+
+
+
+
+ Gets or sets the background color name 430.
+
+
+ The background color name 430.
+
+
+
+
+ Gets or sets the background color name 431.
+
+
+ The background color name 431.
+
+
+
+
+ Gets or sets the background color name 432.
+
+
+ The background color name 432.
+
+
+
+
+ Gets or sets the background color name 433.
+
+
+ The background color name 433.
+
+
+
+
+ Gets or sets the background color name 434.
+
+
+ The background color name 434.
+
+
+
+
+ Gets or sets the background color name 435.
+
+
+ The background color name 435.
+
+
+
+
+ Gets or sets the background color name 436.
+
+
+ The background color name 436.
+
+
+
+
+ Gets or sets the background color name 437.
+
+
+ The background color name 437.
+
+
+
+
+ Gets or sets the background color name 438.
+
+
+ The background color name 438.
+
+
+
+
+ Gets or sets the background color name439.
+
+
+ The background color name 439.
+
+
+
+
+ Gets or sets the height of the defined annotation.
+
+
+ The height of the defined annotation.
+
+
+
+
+ Gets or sets the additional text.
+
+
+
+
+ Gets or sets the additional text list.
+
+
+ The additional text list.
+
+
+
+
+ Gets or sets the attachment point.
+
+
+ The attachment point.
+
+
+
+
+ Gets or sets the background fill setting.
+
+
+
+
+ Gets or sets the background transparency.
+
+
+
+
+ Gets or sets fill Color
+
+
+
+
+ Gets or sets the column auto height.
+
+
+
+
+ Gets or sets the column count.
+
+
+
+
+ Gets or sets the column flow.
+
+
+
+
+ Gets or sets the column gutter.
+
+
+
+
+ Gets or sets the column type.
+
+
+
+
+ Gets or sets the column width.
+
+
+
+
+ Gets or sets the direction vector.
+
+
+
+
+ Gets or sets the drawing direction.
+
+
+
+
+ Gets or sets the fill box scale.
+
+
+
+
+ Gets or sets the horizontal width.
+
+
+
+
+ Gets or sets the initial text height.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the line spacing style.
+
+
+
+
+ Gets or sets the line spacing style parameter.
+
+
+ The line spacing style parameter.
+
+
+
+
+ Gets or sets the reference rectangle width.
+
+
+
+
+ Gets or sets the rotation angle rad.
+
+
+
+
+ Gets or sets the spacing factor.
+
+
+
+
+ Gets or sets the text.
+
+
+
+
+ Gets the full text (AdditionalText + Text).
+
+
+
+
+ Gets the full clear text.
+
+
+ The full clear text.
+
+
+
+
+ Gets or sets the text style name.
+
+
+
+
+ Gets or sets the vertical height.
+
+
+
+
+ The Cad multi line.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the number of style elements.
+
+
+ The number of style elements.
+
+
+
+
+ Gets or sets the vector blocks.
+
+
+ The vector blocks.
+
+
+
+
+ Gets the start point.
+
+
+
+
+ Gets or sets the style name.
+
+
+
+
+ Gets or sets flags
+
+
+
+
+ Gets or sets scale
+
+
+
+
+ Gets or sets the number of vertices.
+
+
+
+
+ Gets or sets the justification: 0 = Top; 1 = Zero; 2 = Bottom
+
+
+
+
+ Cad mline vector block
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the area parameters.
+
+
+
+
+ Gets or sets the area parameters count.
+
+
+
+
+ Gets or sets the element parameters.
+
+
+
+
+ Gets or sets the element parameters count.
+
+
+
+
+ Gets or sets the milter vector.
+
+
+
+
+ Gets or sets the segment direction.
+
+
+
+
+ Gets or sets the vertex.
+
+
+
+
+ CadObjectAttribute
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the attribute values.
+
+
+ The attribute values.
+
+
+
+
+ Class describing OBJECT_PTR object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad OLE2FRAME.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the OLE data end.
+
+
+ The OLE data end.
+
+
+
+
+ Gets or sets the binary data.
+
+
+ The binary data.
+
+
+
+
+ Gets or sets the binary data length2.
+
+
+ The binary data length2.
+
+
+
+
+ Gets or sets the tile mode descriptor.
+
+
+ The tile mode descriptor.
+
+
+
+
+ Gets or sets the OLE object typet.
+
+
+ The OLE object type.
+
+
+
+
+ Gets or sets the lower right corner.
+
+
+ The lower right corner.
+
+
+
+
+ Gets or sets the upper left corner.
+
+
+ The upper left corner.
+
+
+
+
+ Gets or sets the binary data length1.
+
+
+ The binary data length1.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ The Cad OleFrame.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the OLE data end.
+
+
+ The OLE data end.
+
+
+
+
+ Gets or sets the binary data.
+
+
+ The binary data.
+
+
+
+
+ Gets or sets the binary data length.
+
+
+ The binary data length.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Class describing Cad Point
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the point location.
+
+
+ The Point location.
+
+
+
+
+ Gets or sets angle XAxis.
+
+
+ The angle X axis
+
+
+
+
+ The Cad radial dimension.
+ NOTE: This class is an exact copy of CadDiametricDimension except sublcass name
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the leader length.
+
+
+
+
+ Gets or sets the radius definition point.
+
+
+
+
+ Class describing Cad raster image
+
+
+
+
+ Initializes a new instance of the class.
+
+ Image def.
+ Insertion point.
+ U-vector.
+ V-vector.
+ Thrown when one of arguments is null
+ Thrown when CadRasterImageDef.ObjectHandle is null or empty
+
+
+
+ Gets or sets a value indicating whether [clip mode].
+
+
+ true if [clip mode]; otherwise, false.
+
+
+
+
+ Gets or sets the clip boundary vertex.
+
+
+ The clip boundary vertex.
+
+
+
+
+ Gets or sets the number of clip boundary vertices.
+
+
+ The number of clip boundary vertices.
+
+
+
+
+ Gets or sets the type of the clipping boundary.
+
+
+ The type of the clipping boundary.
+
+
+
+
+ Gets or sets the class version.
+
+
+ The class version.
+
+
+
+
+ Gets or sets brigthness value.
+
+
+
+
+ Gets or sets contrast value.
+
+
+
+
+ Gets or sets fade value.
+
+
+
+
+ Gets or sets display flags value.
+
+
+
+
+ Gets or sets clipping state value.
+
+
+
+
+ Gets or sets the image definition reactor reference.
+
+
+ The image definition reactor reference.
+
+
+
+
+ Gets or sets ImageDefReference value.
+
+
+
+
+ Gets or sets insertion point value.
+
+
+
+
+ Gets or sets image size U value.
+
+
+
+
+ Gets or sets image size V value.
+
+
+
+
+ Gets or sets U vector.
+
+
+
+
+ Gets or sets V vector.
+
+
+
+
+ The Cad aster image definition object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ File name of image.
+ Image size in pixels. DXF: U value.
+ Image size in pixels. DXF: V value.
+ Thrown when fileNameOfImage is null or empty
+ Thrown when imageSizeU or imageSizeV is less or equal than 0
+
+
+
+ Gets or sets the image is loaded flag.
+
+
+ The image is loaded flag.
+
+
+
+
+ Gets or sets name of a file.
+
+
+
+
+ Gets or sets the class version.
+
+
+ The class version.
+
+
+
+
+ Gets or sets resolution units.
+
+
+
+
+ Gets or sets image size U.
+
+
+
+
+ Gets or sets image size V.
+
+
+
+
+ Gets or sets default size on one pixel U.
+
+
+
+
+ Gets or sets default size on one pixel V.
+
+
+
+
+ The Cad raster image definition reactor object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the associated object identifier.
+
+
+ The associated object identifier.
+
+
+
+
+ Gets or sets the class version2.
+
+
+ The class version2.
+
+
+
+
+ Class describing CadRay
+
+
+
+
+ Initializes a new instance of the class.
+
+ First point.
+ Unit direction vector.
+ Thrown when one of arguments is null
+
+
+
+ The region entity
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the modeler format version number.
+
+
+ The modeler format version number.
+
+
+
+
+ The Cad revolved surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the size of the binary data.
+
+
+ The size of the binary data.
+
+
+
+
+ Gets or sets the axis point.
+
+
+
+
+ Gets or sets the axis vector.
+
+
+
+
+ Gets or sets the revolved surface binary data.
+
+
+ The revolved surface binary data.
+
+
+
+
+ Gets or sets a value indicating whether close to axis flag.
+
+
+
+
+ Gets or sets the draft angle.
+
+
+
+
+ Gets or sets the end draft distance.
+
+
+
+
+ Gets or sets the id of revolve entity.
+
+
+
+
+ Gets or sets the revolve angle.
+
+
+
+
+ Gets or sets a value indicating whether solid flag.
+
+
+
+
+ Gets or sets the start angle.
+
+
+
+
+ Gets or sets the start draft distance.
+
+
+
+
+ Gets or sets the transform matrix.
+
+
+
+
+ Gets or sets the twist angle.
+
+
+
+
+ The Cad rotated dimension.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+
+
+ Gets or sets the extension line angle.
+
+
+ The extension line angle.
+
+
+
+
+ Class describing CadSection
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the state of the section.
+
+
+ The state of the section.
+
+
+
+
+ Gets or sets the section flags.
+
+
+ The section flags.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the vertical direction.
+
+
+ The vertical direction.
+
+
+
+
+ Gets or sets the height of the top.
+
+
+ The height of the top.
+
+
+
+
+ Gets or sets the height of the bottom.
+
+
+ The height of the bottom.
+
+
+
+
+ Gets or sets the indicator transparency.
+
+
+ The indicator transparency.
+
+
+
+
+ Gets or sets the indicator color63.
+
+
+ The indicator color63.
+
+
+
+
+ Gets or sets the indicator color411.
+
+
+ The indicator color411.
+
+
+
+
+ Gets or sets the vertices number.
+
+
+ The vertices number.
+
+
+
+
+ Gets or sets the vertices.
+
+
+ The vertices.
+
+
+
+
+ Gets or sets the back line vertices number.
+
+
+ The back line vertices number.
+
+
+
+
+ Gets or sets the back line vertices.
+
+
+ The back line vertices.
+
+
+
+
+ Gets or sets the geometry settings object handle.
+
+
+ The geometry settings object handle.
+
+
+
+
+ Class describing CadSectionViewStyle
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the section view style parameters.
+
+
+ The section view style parameters.
+
+
+
+
+ Class describing Cad SEQEND. For CadConsts.CadSubClassName.SEQEND type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the name.
+
+
+
+
+ Gets or sets the oblique angle.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+
+
+ Gets or sets the size.
+
+
+
+
+ Gets or sets the thickness.
+
+
+
+
+ Gets or sets the x scale.
+
+
+
+
+ The Cad size
+
+
+
+
+ Initializes a new instance of the class.
+
+ Width of the value.
+ Height of the value.
+
+
+
+ Initializes a new instance of the class.
+
+ Width of the attribute.
+ Height of the attribute.
+
+
+
+ Gets the point.
+
+
+ The .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets or sets the Width.
+
+
+
+
+ Gets or sets the height.
+
+
+
+
+ Class describing CadSkyLightBackGround object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the sky light back ground parameter list.
+
+
+ The sky light back ground parameter list.
+
+
+
+
+ Class describing CadSolid
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the extrusion direction.
+
+
+ The extrusion direction.
+
+
+
+
+ Gets or sets the first corner.
+
+
+ The first corner.
+
+
+
+
+ Gets or sets the fourth corner.
+
+
+ The fourth corner.
+
+
+
+
+ Gets or sets the second corner.
+
+
+ The second corner.
+
+
+
+
+ Gets or sets the thickness.
+
+
+ The thickness.
+
+
+
+
+ Gets or sets the third corner.
+
+
+ The third corner.
+
+
+
+
+ Class describing SPATIAL_FILTER object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the extrusion direction.
+
+
+ The extrusion direction.
+
+
+
+
+ Gets or sets the points number.
+
+
+ The points number.
+
+
+
+
+ Gets or sets the point definitions.
+
+
+ The point definitions.
+
+
+
+
+ Gets or sets the local coordinate system.
+
+
+ The local coordinate system.
+
+
+
+
+ Gets or sets the display enabled flag.
+
+
+ The display enabled flag.
+
+
+
+
+ Gets or sets the front clipping plane flag.
+
+
+ The front clipping plane flag.
+
+
+
+
+ Gets or sets the front clipping plane distance.
+
+
+ The front clipping plane distance.
+
+
+
+
+ Gets or sets the back clipping plane flag.
+
+
+ The back clipping plane flag.
+
+
+
+
+ Gets or sets the back clipping plane distance.
+
+
+ The back clipping plane distance.
+
+
+
+
+ Gets or sets the transformation matrices.
+
+
+ The transformation matrices.
+
+
+
+
+ Class describing SPATIAL_INDEX object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the timestamp.
+
+
+ The timestamp.
+
+
+
+
+ Class describing Cad SPLINE
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute62.
+
+
+ The attribute62.
+
+
+
+
+ Gets or sets the attribute6.
+
+
+ The attribute6.
+
+
+
+
+ Gets or sets the knot tolerance.
+
+
+ The knot tolerance.
+
+
+
+
+ Gets or sets the control point tolerance.
+
+
+ The control point tolerance.
+
+
+
+
+ Gets or sets the control points.
+
+
+ The control points.
+
+
+
+
+ Gets or sets the curve degree.
+
+
+ The curve degree.
+
+
+
+
+ Gets or sets the degree.
+
+
+
+
+ Gets or sets the end tangent.
+
+
+ The end tangent.
+
+
+
+
+ Gets or sets the fit points.
+
+
+ The fit points.
+
+
+
+
+ Gets or sets the fit points number.
+
+
+ The fit points number.
+
+
+
+
+ Gets or sets the fit tolerance.
+
+
+ The fit tolerance.
+
+
+
+
+ Gets or sets the knot values.
+
+
+ The knot values.
+
+
+
+
+ Gets or sets the knot weight.
+
+
+
+
+ Gets or sets the periodic
+
+
+
+
+ Gets or sets the rational
+
+
+
+
+ Gets or sets the spline flag.
+
+
+ The spline flag.
+
+
+
+
+ Gets or sets the start tangent.
+
+
+ The start tangent.
+
+
+
+
+ Gets or sets the weight parameter
+
+
+ The weight parameter
+
+
+
+
+ Gets or sets the normal vector
+
+
+ The normal vector
+
+
+
+
+ The Cad sun.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the color.
+
+
+
+
+ Gets or sets a value indicating whether daylight savings.
+
+
+
+
+ Gets or sets the intensity.
+
+
+
+
+ Gets or sets the julian day.
+
+
+
+
+ Gets or sets the shadow map size.
+
+
+
+
+ Gets or sets the shadow softness.
+
+
+
+
+ Gets or sets the shadow type.
+
+
+
+
+ Gets or sets a value indicating whether shadows.
+
+
+
+
+ Gets or sets a value indicating whether status.
+
+
+
+
+ Gets or sets the time.
+
+
+
+
+ Gets or sets the version number.
+
+
+
+
+ The Cad sun object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute421.
+
+
+ The attribute421.
+
+
+
+
+ Gets or sets the color.
+
+
+
+
+ Gets or sets a value indicating whether daylight savings.
+
+
+
+
+ Gets or sets the intensity.
+
+
+
+
+ Gets or sets the julian day.
+
+
+
+
+ Gets or sets the shadow map size.
+
+
+
+
+ Gets or sets the shadow softness.
+
+
+
+
+ Gets or sets the shadow type.
+
+
+
+
+ Gets or sets a value indicating whether shadows.
+
+
+
+
+ Gets or sets a value indicating whether status.
+
+
+
+
+ Gets or sets the time.
+
+
+
+
+ Gets or sets the version number.
+
+
+
+
+ The Cad swept surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the align angle.
+
+
+
+
+ Gets or sets a value indicating whether align start flag.
+
+
+
+
+ Gets or sets a value indicating whether bank flag.
+
+
+
+
+ Gets or sets a value indicating whether base point set flag.
+
+
+
+
+ Gets or sets the draft angle.
+
+
+
+
+ Gets or sets the draft end distance.
+
+
+
+
+ Gets or sets the draft start distance.
+
+
+
+
+ Gets or sets the id of path entity.
+
+
+
+
+ Gets or sets the id of swept entity.
+
+
+
+
+ Gets or sets the path binary data.
+
+
+
+
+ Gets or sets the path binary data size.
+
+
+
+
+ Gets or sets a value indicating whether path entity transform commuted flag.
+
+
+
+
+ Gets or sets the path transform matrix.
+
+
+
+
+ Gets or sets the path transform matrix 2.
+
+
+
+
+ Gets or sets the scale factor.
+
+
+
+
+ Gets or sets a value indicating whether solid flag.
+
+
+
+
+ Gets or sets a value indicating whether sweep alignment.
+
+
+
+
+ Gets or sets the attribute 71.
+
+
+ The attribute 71.
+
+
+
+
+ Gets or sets the sweep binary data.
+
+
+
+
+ Gets or sets the sweep binary data size.
+
+
+
+
+ Gets or sets a value indicating whether sweep entity transform commuted flag.
+
+
+
+
+ Gets or sets the sweep transform matrix.
+
+
+
+
+ Gets or sets the sweep transform matrix 2.
+
+
+
+
+ Gets or sets the twist angle.
+
+
+
+
+ Gets or sets the twist control vector.
+
+
+
+
+ Class describing TABLECONTENT object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the table content parameters.
+
+
+ The table content parameters.
+
+
+
+
+ Gets or sets the formated table data parameters.
+
+
+ The formated table data parameters.
+
+
+
+
+ Gets or sets the linked table data parameters.
+
+
+ The linked table data parameters.
+
+
+
+
+ Gets or sets the linked data parameters.
+
+
+ The linked data parameters.
+
+
+
+
+ Class describing CadTableFormat
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the content format.
+
+
+ The content format.
+
+
+
+
+ Gets or sets the cell margin.
+
+
+ The cell margin.
+
+
+
+
+ Gets or sets the grid formats.
+
+
+ The grid formats.
+
+
+
+
+ Class describing Cad text
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the default value.
+
+
+
+
+ Gets or sets the first alignment.
+
+
+ The first alignment.
+
+
+
+
+ Gets or sets the generation flag.
+
+
+
+
+ Gets or sets the horizontal justification.
+
+
+
+
+ Gets or sets the oblique angle.
+
+
+
+
+ Gets or sets the scale x.
+
+
+
+
+ Gets or sets the second alignment point.
+
+
+
+
+ Gets or sets the style type.
+
+
+
+
+ Gets or sets the text height.
+
+
+
+
+ Gets or sets the text rotation.
+
+
+
+
+ Gets the text width.
+
+
+
+
+ Gets or sets the thickness.
+
+
+
+
+ Gets or sets the vertical justification.
+
+
+
+
+ The Cad ThumbnailImage entity.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the bytes number.
+
+
+ The bytes number.
+
+
+
+
+ Gets or sets the preview image data.
+
+
+ The preview image data.
+
+
+
+
+ The Cad tolerance.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the dimension style name.
+
+
+
+
+ Gets or sets the direction vector.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the tolerance string.
+
+
+
+
+ TRACE class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the first point.
+
+
+
+
+ Gets or sets the fourth point.
+
+
+
+
+ Gets or sets the second point.
+
+
+
+
+ Gets or sets the thickness.
+
+
+
+
+ Gets or sets the third point.
+
+
+
+
+ Underlay Flags
+
+
+
+
+ Clipping is on.
+
+
+
+
+ Underlay is on.
+
+
+
+
+ Underlay is monochrome.
+
+
+
+
+ Adjust background.
+
+
+
+
+ Clip is inside.
+
+
+
+
+ Class describing CadUnderlay
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the ac database underlay definition object identifier.
+
+
+ The ac database underlay definition object identifier.
+
+
+
+
+ Gets or sets the contrast.
+
+
+ The contrast.
+
+
+
+
+ Gets or sets the fade.
+
+
+ The fade.
+
+
+
+
+ Gets or sets the points2d.
+
+
+ The points2d.
+
+
+
+
+ Gets or sets the insertion point .
+
+
+ The insertion point.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+ The rotation angle.
+
+
+
+
+ Gets or sets the underlay path.
+
+
+ The underlay path.
+
+
+
+
+ Gets or sets the name of the underlay.
+
+
+ The name of the underlay.
+
+
+
+
+ Gets or sets the scale x.
+
+
+
+
+ Gets or sets the scale y.
+
+
+
+
+ Gets or sets the scale z.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Class describing CadDgnUnderlay
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadDwfUnderlay
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadPdfUnderlay
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents CadUnused object.
+
+
+
+
+ Class describing VBA_PROJECT object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the bytes number.
+
+
+ The bytes number.
+
+
+
+
+ Gets or sets the binary object data.
+
+
+ The binary object data.
+
+
+
+
+ The Cad view port.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the ambient element 1.
+
+
+
+
+ Gets or sets the ambient element 2.
+
+
+
+
+ Gets or sets the ambient element 3.
+
+
+
+
+ Gets or sets the axis x of UCS.
+
+
+
+
+ Gets or sets the axis y of UCS.
+
+
+
+
+ Gets or sets the back clip z value.
+
+
+
+
+ Gets or sets the background handle.
+
+
+
+
+ Gets or sets the center point.
+
+
+
+
+ Gets or sets the circle zoom present.
+
+
+
+
+ Gets or sets a value indicating whether default ligting flag.
+
+
+
+
+ Gets or sets the default ligting type.
+
+
+
+
+ Gets or sets the display UCS.
+
+
+
+
+ Gets or sets the elevation.
+
+
+
+
+ Gets or sets the front clip z value.
+
+
+
+
+ Gets or sets the frozen layer object identifier list.
+
+
+ The frozen layer object identifier list.
+
+
+
+
+ Gets or sets the grid frequency.
+
+
+
+
+ Gets or sets the grid spacing.
+
+
+
+
+ Gets or sets the height.
+
+
+
+
+ Gets or sets the origin UCS.
+
+
+
+
+ Gets or sets the orthographic.
+
+
+
+
+ Gets or sets the perspective lens length.
+
+
+
+
+ Gets or sets the plot style sheet name.
+
+
+
+
+ Gets or sets the reference to table record.
+
+
+
+
+ Gets or sets the reference to table record ortho graphic.
+
+
+
+
+ Gets or sets the render mode.
+
+
+
+
+ Gets or sets the shade handle.
+
+
+
+
+ Gets or sets the shade plot mode.
+
+
+
+
+ Gets or sets the snap angle.
+
+
+
+
+ Gets or sets the snap base point.
+
+
+
+
+ Gets or sets the snap spacing.
+
+
+
+
+ Gets or sets the status. (DXF 68 status)
+
+
+
+
+ Gets or sets the sun handle.
+
+
+
+
+ Gets or sets the twist angle.
+
+
+
+
+ Gets or sets the UCS per view port.
+
+
+
+
+ Gets or sets the view height.
+
+
+
+
+ Gets or sets the view brigtness.
+
+
+
+
+ Gets or sets the view center point.
+
+
+
+
+ Gets or sets the view contrast.
+
+
+
+
+ Gets or sets the view direction vector.
+
+
+
+
+ Gets or sets the view point ref 1.
+
+
+
+
+ Gets or sets the view point ref 2.
+
+
+
+
+ Gets or sets the view point ref 3.
+
+
+
+
+ Gets or sets the view point ref 4.
+
+
+
+
+ Gets or sets the view port id.
+
+
+
+
+ Gets or sets the view port status. (DXF 90)
+
+
+
+
+ Wether entity has new viewport status field (DXF 90)
+
+
+
+
+ Gets or sets the view target vector.
+
+
+
+
+ Gets or sets the viewport clipping object id.
+
+
+
+
+ Gets or sets the visual style handle.
+
+
+
+
+ Gets or sets the width.
+
+
+
+
+ Class describing CadVisualStyle
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the visual style parameters.
+
+
+ The visual style parameters.
+
+
+
+
+ Gets or sets the internal use only flag.
+
+
+ The internal use only flag.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the type.
+
+
+ The type.
+
+
+
+
+ Gets or sets the face lighting model.
+
+
+ The face lighting model.
+
+
+
+
+ Gets or sets the face lighting quality.
+
+
+ The face lighting quality.
+
+
+
+
+ Gets or sets the face color mode.
+
+
+ The face color mode.
+
+
+
+
+ Gets or sets the face modifiers.
+
+
+ The face modifiers.
+
+
+
+
+ Gets or sets the face opacity level.
+
+
+ The face opacity level.
+
+
+
+
+ Gets or sets the face specular level.
+
+
+ The face specular level.
+
+
+
+
+ Gets or sets the color1.
+
+
+ The color1.
+
+
+
+
+ Gets or sets the color2.
+
+
+ The color2.
+
+
+
+
+ Gets or sets the color of the face style mono.
+
+
+ The color of the face style mono.
+
+
+
+
+ Gets or sets the edge style model.
+
+
+ The edge style model.
+
+
+
+
+ Gets or sets the edge style.
+
+
+ The edge style.
+
+
+
+
+ Gets or sets the color of the edge intersection.
+
+
+ The color of the edge intersection.
+
+
+
+
+ Gets or sets the color of the edge obscured.
+
+
+ The color of the edge obscured.
+
+
+
+
+ Gets or sets the edge obscured linetype.
+
+
+ The edge obscured linetype.
+
+
+
+
+ Gets or sets the edge intersection linetype.
+
+
+ The edge intersection linetype.
+
+
+
+
+ Gets or sets the edge crease angle.
+
+
+ The edge crease angle.
+
+
+
+
+ Gets or sets the edge modifiers.
+
+
+ The edge modifiers.
+
+
+
+
+ Gets or sets the color of the edge.
+
+
+ The color of the edge.
+
+
+
+
+ Gets or sets the edge opacity level.
+
+
+ The edge opacity level.
+
+
+
+
+ Gets or sets the width of the edge.
+
+
+ The width of the edge.
+
+
+
+
+ Gets or sets the edge overhang.
+
+
+ The edge overhang.
+
+
+
+
+ Gets or sets the edge jitter.
+
+
+ The edge jitter.
+
+
+
+
+ Gets or sets the color of the edge silhouette.
+
+
+ The color of the edge silhouette.
+
+
+
+
+ Gets or sets the width of the edge silhouette.
+
+
+ The width of the edge silhouette.
+
+
+
+
+ Gets or sets the edge halo gap.
+
+
+ The edge halo gap.
+
+
+
+
+ Gets or sets the edge isolines number.
+
+
+ The edge isolines number.
+
+
+
+
+ Gets or sets the edge hide precision flag.
+
+
+ The edge hide precision flag.
+
+
+
+
+ Gets or sets the edge style apply flag.
+
+
+ The edge style apply flag.
+
+
+
+
+ Gets or sets the display style display settings.
+
+
+ The display style display settings.
+
+
+
+
+ Gets or sets the visual style brightness.
+
+
+ The visual style brightness.
+
+
+
+
+ Gets or sets the type of the shadow.
+
+
+ The type of the shadow.
+
+
+
+
+ Class describing WIPEOUTVARIABLES object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the class version.
+
+
+ The class version.
+
+
+
+
+ Gets or sets the display image frame flag.
+
+
+ The display image frame flag.
+
+
+
+
+ The Cad xdata.
+
+
+
+
+ Initializes a new instance of the class.
+ Initializes a new instance of the class.
+
+
+
+
+ Get first occurrence of an attribute from XData
+
+ Xdata array
+ Attribute code
+
+ representation of a value
+
+
+
+ Gets or sets the data list.
+
+
+ The data list.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ The Xdata Container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the data.
+
+ Name of the application.
+
+ The xdata.
+
+
+
+
+ Gets the ACAD data.
+
+ The xdata.
+
+
+
+ Gets or sets the xdatas.
+
+
+ The xdatas.
+
+
+
+
+ Class describing CadXLine
+
+
+
+
+ Initializes a new instance of the class.
+
+ First point.
+ Unit direction vector.
+ Thrown when one of arguments is null
+
+
+
+ Class describing CadXRecord
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the objects.
+ Xrecord objects are used to store and manage arbitrary data. They are composed
+ of DXF group codes with “normal object” groups(that is, non-xdata group
+ codes), ranging from 1 through 369 for supported ranges.This object is similar
+ in concept to xdata but is not limited by size or order.
+
+
+ The objects.
+
+
+
+
+ Gets or sets the duplicate cloning flag.
+
+
+ The duplicate cloning flag.
+
+
+
+
+ Gets or sets the binary data 310.
+
+
+ The binary data 310.
+
+
+
+
+ Gets or sets the binary data 311.
+
+
+ The binary data 311.
+
+
+
+
+ Class describing DATATABLE object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the data table columns.
+
+
+ The data table columns.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets the columns number.
+
+
+ The columns number.
+
+
+
+
+ Gets or sets the valid rows number.
+
+
+ The valid rows number.
+
+
+
+
+ Gets or sets the name of the table.
+
+
+ The name of the table.
+
+
+
+
+ Gets or sets the soft pointer ids handle to object values.
+
+
+ The soft pointer ids handle to object values.
+
+
+
+
+ Gets or sets the hard pointer ownerships.
+
+
+ The hard pointer ownerships.
+
+
+
+
+ Gets or sets the soft pointer ownserships.
+
+
+ The soft pointer ownserships.
+
+
+
+
+ Gets or sets the hard pointer ids.
+
+
+ The hard pointer ids.
+
+
+
+
+ Gets or sets the soft pointer ids handle.
+
+
+ The soft pointer ids handle.
+
+
+
+
+ The DataTableColumn data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the type of the column.
+
+
+ The type of the column.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the boolean value.
+
+
+ The boolean value.
+
+
+
+
+ Gets or sets the int value.
+
+
+ The int value.
+
+
+
+
+ Gets or sets the double value.
+
+
+ The double value.
+
+
+
+
+ Gets or sets the string value.
+
+
+ The string value.
+
+
+
+
+ Gets or sets the point 2d.
+
+
+ The point 2d.
+
+
+
+
+ Gets or sets the point 3d.
+
+
+ The point 3d.
+
+
+
+
+ The namespace contains data table objects.
+
+
+
+
+ Class describing DICTIONARY base object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the entry soft owner by key.
+
+ The key.
+ The parameter.
+ true if dictionary contains the key otherwise false
+
+
+
+ Removes the entry soft owner and entry name by value.
+
+ The value.
+
+
+
+ Gets or sets hard owner flag.
+
+
+
+
+ Gets or sets cloning flag.
+
+
+
+
+ Gets or sets names of entries.
+
+
+
+
+ Gets or sets the entry soft owners.
+
+
+ The entry soft owners.
+
+
+
+
+ Gets or sets the entry soft owner by key.
+
+
+ The entry soft owners.
+
+
+
+
+ Class describing Dictionary With default object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the hard pointer.
+
+
+ The hard pointer.
+
+
+
+
+ The namespace contains dictionaries.
+
+
+
+
+ Class describing Cad DimAssoc
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the cad osnap point refs.
+
+
+ The cad osnap point refs.
+
+
+
+
+ Gets or sets the dimension object identifier.
+
+
+ The dimension object identifier.
+
+
+
+
+ Gets or sets the associativity flag.
+
+
+ The associativity flag.
+
+
+
+
+ Gets or sets the trans space flag.
+
+
+ The trans space flag.
+
+
+
+
+ Gets or sets the type of the rotated dimension.
+
+
+ The type of the rotated dimension.
+
+
+
+
+ Cad hatch pattern class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name of the class.
+
+
+ The name of the class.
+
+
+
+
+ Gets or sets the type of the object osnap.
+
+
+ The type of the object osnap.
+
+
+
+
+ Gets or sets the main object ids.
+
+
+ The main object ids.
+
+
+
+
+ Gets or sets the type of the main object subent.
+
+
+ The type of the main object subent.
+
+
+
+
+ Gets or sets the main object gs marker.
+
+
+ The main object gs marker.
+
+
+
+
+ Gets or sets the handle xref object.
+
+
+ The handle xref object.
+
+
+
+
+ Gets or sets the geometry parameter.
+
+
+ The geometry parameter.
+
+
+
+
+ Gets or sets the osnap point.
+
+
+ The osnap point.
+
+
+
+
+ Gets or sets the intersection object ids.
+
+
+ The intersection object ids.
+
+
+
+
+ Gets or sets the type of the intersction object subent.
+
+
+ The type of the intersction object subent.
+
+
+
+
+ Gets or sets the intersction object gs marker.
+
+
+ The intersction object gs marker.
+
+
+
+
+ Gets or sets the handle intersection xref object.
+
+
+ The handle intersection xref object.
+
+
+
+
+ Gets or sets the has last point reference.
+
+
+ The has last point reference.
+
+
+
+
+ The namespace contains Cad DimAssoc entities.
+
+
+
+
+ Class describing FIELD object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 300.
+
+
+ The attribute 300.
+
+
+
+
+ Gets or sets the attribute 96.
+
+
+ The attribute 96.
+
+
+
+
+ Gets or sets the attribute 95.
+
+
+ The attribute 95.
+
+
+
+
+ Gets or sets the attribute 94.
+
+
+ The attribute 94.
+
+
+
+
+ Gets or sets the attribute 92.
+
+
+ The attribute 92.
+
+
+
+
+ Gets or sets the attribute 91.
+
+
+ The attribute 91.
+
+
+
+
+ Gets or sets the cad field data.
+
+
+ The cad field data.
+
+
+
+
+ Gets or sets the length of the format string.
+
+
+ The length of the format string.
+
+
+
+
+ Gets or sets the format string overflow.
+
+
+ The format string overflow.
+
+
+
+
+ Gets or sets the format string.
+
+
+ The format string.
+
+
+
+
+ Gets or sets the data set in the field.
+
+
+ The data set in the field.
+
+
+
+
+ Gets or sets the object ids.
+
+
+ The object ids.
+
+
+
+
+ Gets or sets the object i ds number.
+
+
+ The object i ds number.
+
+
+
+
+ Gets or sets the child field ids.
+
+
+ The child field ids.
+
+
+
+
+ Gets or sets the evaluator identifier.
+
+
+ The evaluator identifier.
+
+
+
+
+ Gets or sets the field code string.
+
+
+ The field code string.
+
+
+
+
+ Gets or sets the field code string overflow.
+
+
+ The field code string overflow.
+
+
+
+
+ Gets or sets the child fields number.
+
+
+ The child fields number.
+
+
+
+
+ The Field data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 1.
+
+
+ The attribute 1.
+
+
+
+
+ Gets or sets the attribute 300.
+
+
+ The attribute 300.
+
+
+
+
+ Gets or sets the attribute 302.
+
+
+ The attribute 302.
+
+
+
+
+ Gets or sets the attribute304.
+
+
+ The attribute304.
+
+
+
+
+ Gets the evaluated cache key string.
+
+
+ The evaluated cache key string.
+
+
+
+
+ Gets or sets the binary data.
+
+
+ The binary data.
+
+
+
+
+ Gets or sets the size of the binary data buffer.
+
+
+ The size of the binary data buffer.
+
+
+
+
+ Gets or sets the value identifier.
+
+
+ The value identifier.
+
+
+
+
+ Gets or sets the double value.
+
+
+ The double value.
+
+
+
+
+ Gets or sets the long value.
+
+
+ The long value.
+
+
+
+
+ Gets or sets the type of the field value data.
+
+
+ The type of the field value data.
+
+
+
+
+ Gets or sets the attribute 93.
+
+
+ The attribute 93.
+
+
+
+
+ Gets or sets the attribute94.
+
+
+ The attribute94.
+
+
+
+
+ Gets or sets the area parameters.
+
+
+
+
+ The namespace contains Cad Field entities and their elements.
+
+
+
+
+ The Cad boundary path.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the objects.
+
+
+ The objects.
+
+
+
+
+ The Cad edge boundary path.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the number of edges.
+
+
+ The number of edges.
+
+
+
+
+ Gets or sets the edge types.
+
+
+ The edge types.
+
+
+
+
+ The Cad hatch.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the reserved for future.
+
+
+ The reserved for future.
+
+
+
+
+ Gets or sets the hatch string.
+
+
+ The hatch string.
+
+
+
+
+ Gets or sets the zero is reserved.
+
+
+ The zero is reserved.
+
+
+
+
+ Gets or sets the associative flag.
+
+
+
+
+ Gets or sets the boundary annotation.
+
+
+
+
+ Gets or sets the boundary paths.
+
+
+ The boundary paths.
+
+
+
+
+ Gets or sets the elevation.
+
+
+
+
+ Gets or sets the gradient color tint.
+
+
+ The gradient color tint.
+
+
+
+
+ Gets or sets the gradient colors type.
+
+
+
+
+ Gets or sets the gradient definition.
+
+
+
+
+ Gets or sets the gradient rotation angle.
+
+
+
+
+ Gets or sets the gradient type.
+
+
+
+
+ Gets or sets the hatch angle.
+
+
+
+
+ Gets or sets the hatch pattern double flag.
+
+
+
+
+ Gets or sets the hatch pattern type.
+
+
+
+
+ Gets or sets the hatch scale or spacing.
+
+
+
+
+ Gets or sets the hatch style.
+
+
+
+
+ Gets or sets the ignored boundaries.
+
+
+
+
+ Gets or sets the number of boundaries.
+
+
+
+
+ Gets or sets the number of pattern definitions.
+
+
+
+
+ Gets or sets the number of seed points.
+
+
+
+
+ Gets or sets the offset vector.
+
+
+
+
+ Gets or sets the pattern fill color.
+
+
+
+
+ Gets or sets the pattern name.
+
+
+
+
+ Gets or sets the pixel size.
+
+
+
+
+ Gets or sets the seed points.
+
+
+
+
+ Gets or sets the solid fill flag.
+
+
+
+
+ Gets or sets the solid or gradient.
+
+
+
+
+ Gets or sets the pattern definitions.
+
+
+
+
+ Boundary for hatch
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the object list.
+
+
+ The object list.
+
+
+
+
+ Gets or sets the boundary path.
+
+
+
+
+ Gets or sets the boundary object count.
+
+
+
+
+ Gets or sets the source boundary objects.
+
+
+ The source boundary objects.
+
+
+
+
+ Gets or sets the number of edges.
+
+
+
+
+ Gets or sets the path type.
+
+
+
+
+ Cad hatch pattern class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the dash length count.
+
+
+ The dash length count.
+
+
+
+
+ Gets or sets the dash lengths.
+
+
+ The dash lengths.
+
+
+
+
+ Gets or sets the line angle.
+
+
+ The line angle.
+
+
+
+
+ Gets or sets the line base point.
+
+
+ The line base point.
+
+
+
+
+ Gets or sets the line offset.
+
+
+ The line offset.
+
+
+
+
+ The Cad polyline boundary path.
+
+
+
+
+ Gets or sets a value indicating whether has bugle.
+
+
+
+
+ Gets or sets a value indicating whether is closed.
+
+
+
+
+ Gets or sets the max array len.
+
+
+
+
+ The reserved for future values
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 463.
+
+
+ The attribute 463.
+
+
+
+
+ Gets or sets the attribute63.
+
+
+ The attribute63.
+
+
+
+
+ Gets or sets the attribute421.
+
+
+ The attribute421.
+
+
+
+
+ The namespace contains Cad Hatch entities and their elements.
+
+
+
+
+ The CadMLineStyleElement data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the element linetype.
+
+
+ The element linetype.
+
+
+
+
+ Gets or sets the color of the element.
+
+
+ The color of the element.
+
+
+
+
+ Gets or sets the element offset.
+
+
+ The element offset.
+
+
+
+
+ Class describing MLine Style object.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name of the style.
+
+
+ The name of the style.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the style description.
+
+
+ The style description.
+
+
+
+
+ Gets or sets the color of the fill.
+
+
+ The color of the fill.
+
+
+
+
+ Gets or sets the start angle.
+
+
+ The start angle.
+
+
+
+
+ Gets or sets the end angle.
+
+
+ The end angle.
+
+
+
+
+ Gets or sets the elements number.
+
+
+ The elements number.
+
+
+
+
+ Gets or sets the m line style elements.
+
+
+ The m line style elements.
+
+
+
+
+ The namespace contains Cad MLineStyle objects and their elements.
+
+
+
+
+ The namespace contains Cad file format base entities.
+
+
+
+
+ Class describing ACDB_ALDIMOBJECTCONTEXTDATA_CLASS object.
+
+ NOTE: We have no ACDB_ALDIMOBJECTCONTEXTDATA_CLASS object in documentation
+
+
+
+ Class describing CadAcDbObjectContextData object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing ACDB_MLEADEROBJECTCONTEXTDATA_CLASS object.
+
+ NOTE: We have no ACDB_MLEADEROBJECTCONTEXTDATA_CLASS object in documentation
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the annotate scale parameter list.
+
+
+ The annotate scale parameter list.
+
+
+
+
+ Class describing ACDB_MTEXTOBJECTCONTEXTDATA_CLASS object.
+
+ NOTE: We have no ACDB_MTEXTOBJECTCONTEXTDATA_CLASS object in documentation
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains Cad ObjectContextDataClasses objects.
+
+
+
+
+ Class describing CadAcDbAssocPersSubentManager object.
+
+
+
+
+ Class describing CadAcDbPersSubentManager object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute90 list.
+
+
+ The attribute90 list.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute290.
+
+
+ The attribute290.
+
+
+
+
+ The namespace contains Cad PersSubentManager entities.
+
+
+
+
+ The Cad poly face mesh.
+
+
+
+
+ Class describing Cad POLYLINE
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the end width.
+
+
+ The end width.
+
+
+
+
+ Gets or sets the flag.
+
+
+ The flag.
+
+
+
+
+ Gets or sets the mesh M vertex count.
+
+
+ The mesh M vertex count.
+
+
+
+
+ Gets or sets the mesh N vertex count.
+
+
+ The mesh N vertex count.
+
+
+
+
+ Gets or sets the start width.
+
+
+ The start width.
+
+
+
+
+ Gets or sets the surface M density.
+
+
+ The surface M density.
+
+
+
+
+ Gets or sets the surface N density.
+
+
+ The surface N density.
+
+
+
+
+ Gets or sets the type of the surface.
+
+
+ The type of the surface.
+
+
+
+
+ Gets or sets the Thickness
+
+
+ The Thickness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad polygon mesh.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing Cad POLYLINE
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad polyline 3 d.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains Polylines entities.
+
+
+
+
+ The SectionGeometrySettings data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the type of the section.
+
+
+ The type of the section.
+
+
+
+
+ Gets or sets the geometry count.
+
+
+ The geometry count.
+
+
+
+
+ Gets or sets the bitflags.
+
+
+ The bitflags.
+
+
+
+
+ Gets or sets the color data.
+
+
+ The color data.
+
+
+
+
+ Gets or sets the name of the layer.
+
+
+ The name of the layer.
+
+
+
+
+ Gets or sets the name of the linetype.
+
+
+ The name of the linetype.
+
+
+
+
+ Gets or sets the linetype scale.
+
+
+ The linetype scale.
+
+
+
+
+ Gets or sets the name of the plotstyle.
+
+
+ The name of the plotstyle.
+
+
+
+
+ Gets or sets the line weight.
+
+
+ The line weight.
+
+
+
+
+ Gets or sets the face transparency.
+
+
+ The face transparency.
+
+
+
+
+ Gets or sets the edge transparency.
+
+
+ The edge transparency.
+
+
+
+
+ Gets or sets the type of the hatch pattern.
+
+
+ The type of the hatch pattern.
+
+
+
+
+ Gets or sets the name of the hatch pattern.
+
+
+ The name of the hatch pattern.
+
+
+
+
+ Gets or sets the hatch angle.
+
+
+ The hatch angle.
+
+
+
+
+ Gets or sets the hatch scale.
+
+
+ The hatch scale.
+
+
+
+
+ Gets or sets the hatch spacing.
+
+
+ The hatch spacing.
+
+
+
+
+ Gets or sets the section geometry settings end data marker.
+
+
+ The section geometry settings end data marker.
+
+
+
+
+ Class describing SectionManager object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the soft pointer ids.
+
+
+ The soft pointer ids.
+
+
+
+
+ Gets or sets the sections number.
+
+
+ The sections number.
+
+
+
+
+ Gets or sets the requires full update flag.
+
+
+ The requires full update flag.
+
+
+
+
+ Class describing SectionSettings object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the section type settings.
+
+
+ The section type settings.
+
+
+
+
+ Gets or sets the type of the section.
+
+
+ The type of the section.
+
+
+
+
+ Gets or sets the generation settings number.
+
+
+ The generation settings number.
+
+
+
+
+ The SectionTypeSettings data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the section geometry settings.
+
+
+ The section geometry settings.
+
+
+
+
+ Gets or sets the section type settings marker.
+
+
+ The section type settings marker.
+
+
+
+
+ Gets or sets the type of the section.
+
+
+ The type of the section.
+
+
+
+
+ Gets or sets the generation option flag.
+
+
+ The generation option flag.
+
+
+
+
+ Gets or sets the source objects number.
+
+
+ The source objects number.
+
+
+
+
+ Gets or sets the soft pointer ids.
+
+
+ The soft pointer ids.
+
+
+
+
+ Gets or sets the destination block object handle.
+
+
+ The destination block object handle.
+
+
+
+
+ Gets or sets the name of the destination file.
+
+
+ The name of the destination file.
+
+
+
+
+ Gets or sets the generation settings number.
+
+
+ The generation settings number.
+
+
+
+
+ Gets or sets the section geometry settings data marker.
+
+
+ The section geometry settings data marker.
+
+
+
+
+ Gets or sets the section type settings end marker.
+
+
+ The section type settings end marker.
+
+
+
+
+ The namespace contains section objects.
+
+
+
+
+ Class describing SUNSTUDY object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the sun study dates.
+
+
+ The sun study dates.
+
+
+
+
+ Gets or sets the name of the sun setup.
+
+
+ The name of the sun setup.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the type of the output.
+
+
+ The type of the output.
+
+
+
+
+ Gets or sets the name of the sheet set.
+
+
+ The name of the sheet set.
+
+
+
+
+ Gets or sets the use subset flag.
+
+
+ The use subset flag.
+
+
+
+
+ Gets or sets the name of the sheet subset.
+
+
+ The name of the sheet subset.
+
+
+
+
+ Gets or sets the select dates.
+
+
+ The select dates.
+
+
+
+
+ Gets or sets the size of the date input array.
+
+
+ The size of the date input array.
+
+
+
+
+ Gets or sets the dates flag select range.
+
+
+ The dates flag select range.
+
+
+
+
+ Gets or sets the start time.
+
+
+ The start time.
+
+
+
+
+ Gets or sets the end time.
+
+
+ The end time.
+
+
+
+
+ Gets or sets the interval in seconds.
+
+
+ The interval in seconds.
+
+
+
+
+ Gets or sets the hours number.
+
+
+ The hours number.
+
+
+
+
+ Gets or sets the hours list.
+
+
+ The hours list.
+
+
+
+
+ Gets or sets the page setup wizard hard pointer identifier.
+
+
+ The page setup wizard hard pointer identifier.
+
+
+
+
+ Gets or sets the view hard pointer identifier.
+
+
+ The view hard pointer identifier.
+
+
+
+
+ Gets or sets the visual style identifier.
+
+
+ The visual style identifier.
+
+
+
+
+ Gets or sets the type of the shade plot.
+
+
+ The type of the shade plot.
+
+
+
+
+ Gets or sets the viewports per page.
+
+
+ The viewports per page.
+
+
+
+
+ Gets or sets the viewport distribution rows number.
+
+
+ The viewport distribution rows number.
+
+
+
+
+ Gets or sets the viewport distribution columns number.
+
+
+ The viewport distribution columns number.
+
+
+
+
+ Gets or sets the spacing.
+
+
+ The spacing.
+
+
+
+
+ Gets or sets the lock viewports flag.
+
+
+ The lock viewports flag.
+
+
+
+
+ Gets or sets the label viewports flag.
+
+
+ The label viewports flag.
+
+
+
+
+ Gets or sets the text style identifier.
+
+
+ The text style identifier.
+
+
+
+
+ Gets or sets the class version.
+
+
+ The class version.
+
+
+
+
+ The Field data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the julian day.
+
+
+ The julian day.
+
+
+
+
+ Gets or sets the seconds past midnight.
+
+
+ The seconds past midnight.
+
+
+
+
+ The namespace contains sun study objects.
+
+
+
+
+ Class describing TABLEGEOMETRY object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the table geometry parameters.
+
+
+ The table geometry parameters.
+
+
+
+
+ The namespace contains table geometry objects.
+
+
+
+
+ Class describing CadTableStyle
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the table style cell list.
+
+
+ The table style cell list.
+
+
+
+
+ Gets or sets the version number.
+
+
+ The version number.
+
+
+
+
+ Gets or sets the description.
+
+
+ The description.
+
+
+
+
+ Gets or sets the flow direction.
+
+
+ The flow direction.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the horizontal cell margin.
+
+
+ The horizontal cell margin.
+
+
+
+
+ Gets or sets the vertical cell margin.
+
+
+ The vertical cell margin.
+
+
+
+
+ Gets or sets the flag for whether title is suppressed.
+
+
+ The flag for whether title is suppressed.
+
+
+
+
+ Gets or sets the flag for whether column heading is suppressed.
+
+
+ The flag for whether column heading is suppressed.
+
+
+
+
+ The TableStyleCell data
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute1.
+
+
+ The attribute1.
+
+
+
+
+ Gets or sets the name of the text style.
+
+
+ The name of the text style.
+
+
+
+
+ Gets or sets the height of the text.
+
+
+ The height of the text.
+
+
+
+
+ Gets or sets the cell alignment.
+
+
+ The cell alignment.
+
+
+
+
+ Gets or sets the color of the text.
+
+
+ The color of the text.
+
+
+
+
+ Gets or sets the color of the cell fill.
+
+
+ The color of the cell fill.
+
+
+
+
+ Gets or sets the flag for whether background color is enabled.
+
+
+ The flag for whether background color is enabled.
+
+
+
+
+ Gets or sets the type of the cell data.
+
+
+ The type of the cell data.
+
+
+
+
+ Gets or sets the type of the cell unit.
+
+
+ The type of the cell unit.
+
+
+
+
+ Gets or sets the line weight1.
+
+
+ The line weight1.
+
+
+
+
+ Gets or sets the visibility flag1.
+
+
+ The visibility flag1.
+
+
+
+
+ Gets or sets the color value1.
+
+
+ The color value1.
+
+
+
+
+ Gets or sets the line weight2.
+
+
+ The line weight2.
+
+
+
+
+ Gets or sets the visibility flag2.
+
+
+ The visibility flag2.
+
+
+
+
+ Gets or sets the color value2.
+
+
+ The color value2.
+
+
+
+
+ Gets or sets the line weight3.
+
+
+ The line weight3.
+
+
+
+
+ Gets or sets the visibility flag3.
+
+
+ The visibility flag3.
+
+
+
+
+ Gets or sets the color value3.
+
+
+ The color value3.
+
+
+
+
+ Gets or sets the line weight4.
+
+
+ The line weight4.
+
+
+
+
+ Gets or sets the visibility flag4.
+
+
+ The visibility flag4.
+
+
+
+
+ Gets or sets the color value4.
+
+
+ The color value4.
+
+
+
+
+ Gets or sets the line weight5.
+
+
+ The line weight5.
+
+
+
+
+ Gets or sets the visibility flag5.
+
+
+ The visibility flag5.
+
+
+
+
+ Gets or sets the сolor value5.
+
+
+ The сolor value5.
+
+
+
+
+ Gets or sets the line weight6.
+
+
+ The line weight6.
+
+
+
+
+ Gets or sets the visibility flag6.
+
+
+ The visibility flag6.
+
+
+
+
+ Gets or sets the color value6.
+
+
+ The color value6.
+
+
+
+
+ The namespace contains table style objects.
+
+
+
+
+ Class describing CadDgnDefinition
+
+
+
+
+
+ Class describing UNDERLAYDEFINITION object.
+
+
+
+
+ The underlay path and file name
+
+
+
+
+ The underlay name
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name of the underlay path and file.
+
+
+ The name of the underlay path and file.
+
+
+
+
+ Gets or sets the name of the underlay.
+
+
+ The name of the underlay.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadDwfDefinition
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Class describing CadPdfDefinition
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains underlay definition objects.
+
+
+
+
+ The Cad 2 d vertex.
+
+
+
+
+ Class describing Cad VERTEX
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the location point.
+
+
+ The location point.
+
+
+
+
+ Gets or sets the bugle.
+
+
+
+
+ Gets or sets the curve fit tangent direction.
+
+
+
+
+ Gets or sets the ending width.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the mesh vertex index 1.
+
+
+
+
+ Gets or sets the mesh vertex index 2.
+
+
+
+
+ Gets or sets the mesh vertex index 3.
+
+
+
+
+ Gets or sets the mesh vertex index 4.
+
+
+
+
+ Gets or sets the starting width.
+
+
+
+
+ Gets or sets the vertex id.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad 3 d vertex.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad face record.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad polygon mesh vertex
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad Vertex Poly Face Mesh.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains vertices entities.
+
+
+
+
+ The Cad wipeout.
+
+
+
+
+ The Cad wipeout.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute 290.
+
+
+ The attribute 290.
+
+
+
+
+ Gets or sets the type of the clipping boundary.
+
+
+ The type of the clipping boundary.
+
+
+
+
+ Gets or sets the wipeout brightness.
+
+
+ The wipeout brightness.
+
+
+
+
+ Gets or sets the class version.
+
+
+
+
+ Gets or sets the clip boundaries.
+
+
+
+
+ Gets or sets the clip boundaries count.
+
+
+
+
+ Gets or sets the clipping state.
+
+
+
+
+ Gets or sets the contrast.
+
+
+
+
+ Gets or sets the fade.
+
+
+
+
+ Gets or sets the image def reactor reference.
+
+
+
+
+ Gets or sets the image def reference.
+
+
+
+
+ Gets or sets the image display prop.
+
+
+
+
+ Gets or sets the image size in pixels.
+
+
+
+
+ Gets or sets the insertion point.
+
+
+
+
+ Gets or sets the vector u.
+
+
+
+
+ Gets or sets the vector v.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Cad Wipeout RasterImage.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains Wipeout objects.
+
+
+
+
+ The Cad binary parameter.
+
+
+
+
+ Parameter base class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional flag.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional flag.
+
+
+ The default value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional flag.
+
+
+ The default value.
+
+
+ The bonded object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The bonding object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initialize the specified type.
+
+
+ The type of the parameter.
+
+
+ The value of the parameter.
+
+
+
+
+ Initialize the specified type.
+
+
+ The type of the parameter.
+
+
+ The value of the parameter.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ The prepare function.
+
+
+ The type of the parameter.
+
+
+
+
+ Gets or sets the default value.
+
+
+ The default value.
+
+
+
+
+ Gets or sets the type of the integral parameter.
+
+
+ The type of the integral parameter.
+
+
+
+
+ Gets or sets a value indicating whether this instance is optional.
+
+
+ true if this instance is optional; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is set.
+
+
+ true if this instance is set; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is required.
+
+
+ true if this instance is required; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance has a default value.
+
+
+ true if this instance has a default value; otherwise, false.
+
+
+
+
+ Gets or sets the name of the sub class.
+
+
+ The name of the sub class.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter to create.
+
+
+ The optional flag.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value to assign.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value of the parameter.
+
+
+
+
+ The Cad boolean parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ Optional flag.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional.
+
+
+ The default value.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets a value indicating whether this is value.
+
+
+ true if value; otherwise, false.
+
+
+
+
+ Class for Double values
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The attribute.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional flag.
+
+
+ The default value.
+
+
+
+
+ Initialize the specified value.
+
+ The string value will be converted to Double.
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value of the parameter.
+
+
+
+
+ The Cad integer parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter to create.
+
+
+ The optional flag.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional.
+
+
+ The default value.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value to assign.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value of the parameter.
+
+
+
+
+ The Cad long parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The Cad entity attribute.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value oft he parameter.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ The Cad short parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The attribute.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The type of the parameter.
+
+
+ The optional flag.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the parameter.
+ The optional flag.
+ The default value.
+
+
+
+ Initialize the specified value.
+
+
+ The value to assign.
+
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value of the parameter.
+
+
+
+
+ The Cad string parameter.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the parameter.
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the parameter.
+ The optional flag.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the parameter.
+ The optional flag.
+ The default value.
+
+
+
+ Initialize the specified value.
+
+ The value of the parameter.
+
+
+
+ Initialize the specified value.
+
+
+ The value of the parameter.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value of the parameter.
+
+
+
+
+ The namespace contains specific Cad file format variables.
+
+
+
+
+ List of Cad styles
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Clones the list.
+
+
+ A new object that is a shallow copy of this instance.
+
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ Gets or sets the application codes container.
+
+
+ The application codes container.
+
+
+
+
+ The Cad app id table.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the app name.
+
+
+
+
+ Gets a value indicating whether app name is set.
+
+
+
+
+ Gets or sets the application flag.
+
+
+
+
+ The Cad block table object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the block insertion units.
+
+
+ The block insertion units.
+
+
+
+
+ Gets or sets the bitmap preview data.
+
+
+ The bitmap preview data.
+
+
+
+
+ Gets the block scalability.
+
+
+ The block scalability.
+
+
+
+
+ Gets the block explodability.
+
+
+ The block explodability.
+
+
+
+
+ Gets or sets the name of the block.
+
+
+ The name of the block.
+
+
+
+
+ Gets or sets the hard pointer to layout.
+
+
+ The hard pointer to layout.
+
+
+
+
+ The Cad dimension style table.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the handle dimstyle.
+
+
+ The handle dimstyle.
+
+
+
+
+ Gets or sets the DimTxtDirection.
+
+
+ The DimTxtDirection.
+
+
+
+
+ Gets or sets the DIMFXLON.
+
+
+ The DIMFXLON.
+
+
+
+
+ Gets or sets the dimblk.
+
+
+ The dimblk.
+
+
+
+
+ Gets or sets the dimblk1.
+
+
+ The dimblk1.
+
+
+
+
+ Gets or sets the dimblk2.
+
+
+ The dimblk2.
+
+
+
+
+ Gets or sets the attribute 90.
+
+
+ The attribute 90.
+
+
+
+
+ Gets or sets The dimadec - 179
+
+
+
+
+ Gets or sets The dimalt - 170
+
+
+
+
+ Gets or sets The dimaltd - 171
+
+
+
+
+ Gets or sets The dimaltf -143
+
+
+
+
+ Gets or sets The dimaltrnd - 148
+
+
+
+
+ Gets or sets The dimalttd - 274
+
+
+
+
+ Gets or sets The dimalttz - 286
+
+
+
+
+ Gets or sets The dimaltu - 273
+
+
+
+
+ Gets or sets The dimaltz - 285
+
+
+
+
+ Gets or sets The dimapost - 004
+
+
+
+
+ Gets or sets The dimasz - 041
+
+
+
+
+ Gets or sets The dimatfit - 289
+
+
+
+
+ Gets or sets The dimaunit -275
+
+
+
+
+ Gets or sets The dimazin 079
+
+
+
+
+ Gets or sets The dimblk - 342
+
+
+
+
+ Gets or sets The dimblk1 - 343
+
+
+
+
+ Gets or sets The dimblk2
+
+
+
+
+ Gets or sets The dimcen - 141
+
+
+
+
+ Gets or sets The dimclrd - 176
+
+
+
+
+ Gets or sets The dimclre - 177
+
+
+
+
+ Gets or sets The dimclrt - 178
+
+
+
+
+ Gets or sets The dimdec 271
+
+
+
+
+ Gets or sets The dimdle - 046
+
+
+
+
+ Gets or sets The dimdli - 043
+
+
+
+
+ Gets or sets The dimdsep - 278
+
+
+
+
+ Gets or sets The dimexe - 044
+
+
+
+
+ Gets or sets The dimexo - 042
+
+
+
+
+ Gets or sets The dimfit - 287
+
+
+
+
+ Gets or sets The dimfrac - 276
+
+
+
+
+ Gets or sets The dimgap - 147
+
+
+
+
+ Gets or sets The dimjust - 280
+
+
+
+
+ Gets or sets The dimldrblk - 341
+
+
+
+
+ Gets or sets The dimlfac - 144
+
+
+
+
+ Gets or sets The dimlim - 072
+
+
+
+
+ Gets or sets The dimlunit - 277
+
+
+
+
+ Gets or sets The dimlwd - 371
+
+
+
+
+ Gets or sets The dimlwe - 372
+
+
+
+
+ Gets or sets The dimpost - 003
+
+
+
+
+ Gets or sets The dimrnd - 045
+
+
+
+
+ Gets or sets The dimsah - 173
+
+
+
+
+ Gets or sets The dimscale - 040
+
+
+
+
+ Gets or sets The dimsd1 - 281
+
+
+
+
+ Gets or sets The dimsd2 - 282
+
+
+
+
+ Gets or sets The dimse1 - 075
+
+
+
+
+ Gets or sets The dimse2 - 076
+
+
+
+
+ Gets or sets The dimsoxd - 175
+
+
+
+
+ Gets or sets The dimtad - 077
+
+
+
+
+ Gets or sets The dimtdec - 272
+
+
+
+
+ Gets or sets The dimtfac - 146
+
+
+
+
+ Gets or sets The dimtih - 073
+
+
+
+
+ Gets or sets The dimtix - 174
+
+
+
+
+ Gets or sets The dimtm - 048
+
+
+
+
+ Gets or sets the dimfxl - 049
+
+
+
+
+ Gets or sets the dimtm - 050
+
+
+
+
+ Gets or sets the dimtfill.
+
+
+ The dimtfill.
+
+
+
+
+ Gets or sets The dimtmove - 279
+
+
+
+
+ Gets or sets The dimtofl - 172
+
+
+
+
+ Gets or sets The dimtoh - 074
+
+
+
+
+ Gets or sets The dimtol - 071
+
+
+
+
+ Gets or sets The dimtolj - 283
+
+
+
+
+ Gets or sets The dimtp - 047
+
+
+
+
+ Gets or sets The dimtsz -142
+
+
+
+
+ Gets or sets The dimtvp - 145
+
+
+
+
+ Gets or sets The DIMTXSTY - 340
+
+
+
+
+ Gets or sets The dimtxt - 140
+
+
+
+
+ Gets or sets The dimtzin - 284
+
+
+
+
+ Gets or sets The dimunit 270
+
+
+
+
+ Gets or sets The dimupt - 288
+
+
+
+
+ Gets or sets The dimzin - 078
+
+
+
+
+ Gets or sets The standard flag - 070
+
+
+
+
+ Gets or sets The style name - 002
+
+
+
+
+ The Cad layer table.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute420.
+
+
+ The attribute 420.
+
+
+
+
+ Gets or sets the color id.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the line type name.
+
+
+
+
+ Gets or sets the line weight.
+
+
+
+
+ Gets or sets the attribute348.
+
+
+ The attribute348.
+
+
+
+
+ Gets or sets the material hanlde.
+
+
+
+
+ Gets or sets the name.
+
+
+
+
+ Gets or sets the plot flag.
+
+
+
+
+ Gets or sets the plot style handle.
+
+
+
+
+ The Cad line type table object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the index of the offset y element.
+
+
+ The index of the offset y element.
+
+
+
+
+ Gets or sets the index of the offset x element.
+
+
+ The index of the offset x element.
+
+
+
+
+ Gets or sets the index of the scale linetype element.
+
+
+ The index of the scale linetype element.
+
+
+
+
+ Gets or sets the alignment code.
+
+
+
+
+ Gets or sets the dash dot length.
+
+
+
+
+ Gets or sets the description.
+
+
+
+
+ Gets or sets the flags.
+
+
+
+
+ Gets or sets the line type element.
+
+
+
+
+ Gets or sets the name.
+
+
+
+
+ Gets or sets the number of linetype elements.
+
+
+
+
+ Gets or sets the offset x.
+
+
+
+
+ Gets or sets the offset y.
+
+
+
+
+ Gets or sets the pattern length.
+
+
+
+
+ Gets or sets the rotation angle.
+
+
+
+
+ Gets or sets the scale.
+
+
+
+
+ Gets or sets the shape number.
+
+
+
+
+ Gets or sets the style reference.
+
+
+ The style reference.
+
+
+
+
+ Gets or sets the text strings.
+
+
+
+
+ The Cad style table object.
+
+
+
+
+ Initializes a new instance of the class.
+ Prevents a default instance of the class from being created.
+
+
+
+
+ Gets or sets the big font name.
+
+
+
+
+ Gets or sets the fixed height.
+
+
+
+
+ Gets or sets the last height.
+
+
+
+
+ Gets or sets the oblique angle.
+
+
+
+
+ Gets or sets the primary font name.
+
+
+
+
+ Gets or sets the style flag.
+
+
+
+
+ Gets or sets the style name.
+
+
+
+
+ Gets or sets the text generation flag.
+
+
+
+
+ Gets or sets the width factor.
+
+
+
+
+ Group codes that apply to all symbol tables.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes this instance.
+
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Gets or sets a value indicating whether this instance is initialize.
+
+
+ true if this instance is initialize; otherwise, false.
+
+
+
+
+ Gets or sets the maximum table entries count.
+
+
+ The maximum table entries count.
+
+
+
+
+ Gets or sets the symbol table parameters.
+
+
+ The symbol table parameters.
+
+
+
+
+ Gets or sets the sub class parameter.
+
+
+ The sub class parameter.
+
+
+
+
+ ucsPorts table class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the standard flag values.
+
+
+ The standard flag values.
+
+
+
+
+ Gets or sets the origin.
+
+
+ The origin.
+
+
+
+
+ Gets or sets the direction x.
+
+
+ The direction x.
+
+
+
+
+ Gets or sets the direction y.
+
+
+ The direction y.
+
+
+
+
+ Gets or sets the attribute79.
+
+
+ The attribute79.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the base ucs handle.
+
+
+ The base ucs handle.
+
+
+
+
+ Gets or sets the type of the orthographic.
+
+
+ The type of the orthographic.
+
+
+
+
+ Gets or sets the orthographic type origin.
+
+
+ The orthographic type origin.
+
+
+
+
+ viewPorts table class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the flag.
+
+
+ The flag.
+
+
+
+
+ Gets or sets the height of the view.
+
+
+ The height of the view.
+
+
+
+
+ Gets or sets the center point.
+
+
+ The center point.
+
+
+
+
+ Gets or sets the width of the view.
+
+
+ The width of the view.
+
+
+
+
+ Gets or sets the view direction.
+
+
+ The view direction.
+
+
+
+
+ Gets or sets the target point.
+
+
+ The target point.
+
+
+
+
+ Gets or sets the length of the lens.
+
+
+ The length of the lens.
+
+
+
+
+ Gets or sets the front clipping.
+
+
+ The front clipping.
+
+
+
+
+ Gets or sets the back clipping.
+
+
+ The back clipping.
+
+
+
+
+ Gets or sets the twist angle.
+
+
+ The twist angle.
+
+
+
+
+ Gets or sets the view mode.
+
+
+ The view mode.
+
+
+
+
+ Gets or sets the associated ucs.
+
+
+ The associated ucs.
+
+
+
+
+ Gets or sets the camera plottable.
+
+
+ The camera plottable.
+
+
+
+
+ Gets or sets the render mode.
+
+
+ The render mode.
+
+
+
+
+ Gets or sets the background handle.
+
+
+ The background handle.
+
+
+
+
+ Gets or sets the live section handle.
+
+
+ The live section handle.
+
+
+
+
+ Gets or sets the visual style handle.
+
+
+ The visual style handle.
+
+
+
+
+ Gets or sets the sun hard ownership.
+
+
+ The sun hard ownership.
+
+
+
+
+ Gets or sets the ucs origin.
+
+
+ The ucs origin.
+
+
+
+
+ Gets or sets the ucs xaxis.
+
+
+ The ucs xaxis.
+
+
+
+
+ Gets or sets the ucs yaxis.
+
+
+ The ucs yaxis.
+
+
+
+
+ Gets or sets the type of the ucs.
+
+
+ The type of the ucs.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the ucs handle.
+
+
+ The ucs handle.
+
+
+
+
+ Gets or sets the ucs base handle.
+
+
+ The ucs base handle.
+
+
+
+
+ viewPorts table class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the attribute361.
+
+
+ The attribute361.
+
+
+
+
+ Gets or sets the attribute 65.
+
+
+ The attribute 65.
+
+
+
+
+ Gets or sets the attribute60.
+
+
+ The attribute60.
+
+
+
+
+ Gets or sets the soft frozen layer object.
+
+
+ The soft frozen layer object.
+
+
+
+
+ Gets or sets the hard frozen layer object.
+
+
+ The hard frozen layer object.
+
+
+
+
+ Gets or sets the attribute 45.
+
+
+ The attribute 45.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the lower left.
+
+
+ The lower left.
+
+
+
+
+ Gets or sets the upper right.
+
+
+ The upper right.
+
+
+
+
+ Gets or sets the center point.
+
+
+ The center point.
+
+
+
+
+ Gets or sets the snap point.
+
+
+ The snap point.
+
+
+
+
+ Gets or sets the snap spacing.
+
+
+ The snap spacing.
+
+
+
+
+ Gets or sets the grid spacing.
+
+
+ The grid spacing.
+
+
+
+
+ Gets or sets the view direction.
+
+
+ The view direction.
+
+
+
+
+ Gets or sets the view target point.
+
+
+ The view target point.
+
+
+
+
+ Gets or sets the length of the lens.
+
+
+ The length of the lens.
+
+
+
+
+ Gets or sets view aspect ratio.
+
+
+
+
+ Gets or sets a value indicating whether [use aspect ratio].
+
+
+ true if [use aspect ratio]; otherwise, false.
+
+
+
+
+ Gets or sets the front clipping.
+
+
+ The front clipping.
+
+
+
+
+ Gets or sets the back clipping.
+
+
+ The back clipping.
+
+
+
+
+ Gets or sets the height of the view.
+
+
+ The height of the view.
+
+
+
+
+ Gets or sets the snap rotation angle.
+
+
+ The snap rotation angle.
+
+
+
+
+ Gets or sets the view twist angle.
+
+
+ The view twist angle.
+
+
+
+
+ Gets or sets the circle sides.
+
+
+ The circle sides.
+
+
+
+
+ Gets or sets the fast zoom.
+
+
+ The fast zoom.
+
+
+
+
+ Gets or sets the grid on/off.
+
+
+ The grid on/off.
+
+
+
+
+ Gets or sets the bit flags.
+
+
+ The bit flags.
+
+
+
+
+ Gets or sets the style sheet.
+
+
+ The style sheet.
+
+
+
+
+ Gets or sets the render mode.
+
+
+ The render mode.
+
+
+
+
+ Gets or sets the view mode.
+
+
+ The view mode.
+
+
+
+
+ Gets or sets the ucs icon.
+
+
+ The ucs icon.
+
+
+
+
+ Gets or sets the snap on off.
+
+
+ The snap on off.
+
+
+
+
+ Gets or sets the snap style.
+
+
+ The snap style.
+
+
+
+
+ Gets or sets the snap isopair.
+
+
+ The snap isopair.
+
+
+
+
+ Gets or sets the ucs origin.
+
+
+ The ucs origin.
+
+
+
+
+ Gets or sets the ucs xaxis.
+
+
+ The ucs xaxis.
+
+
+
+
+ Gets or sets the ucs yaxis.
+
+
+ The ucs yaxis.
+
+
+
+
+ Gets or sets the ucs handle.
+
+
+ The ucs handle.
+
+
+
+
+ Gets or sets the ucs base handle.
+
+
+ The ucs base handle.
+
+
+
+
+ Gets or sets the type of the ucs.
+
+
+ The type of the ucs.
+
+
+
+
+ Gets or sets the elevation.
+
+
+ The elevation.
+
+
+
+
+ Gets or sets the shade plot setting.
+
+
+ The shade plot setting.
+
+
+
+
+ Gets or sets the major grid lines.
+
+
+ The major grid lines.
+
+
+
+
+ Gets or sets the background handle.
+
+
+ The background handle.
+
+
+
+
+ Gets or sets the shade handle.
+
+
+ The shade handle.
+
+
+
+
+ Gets or sets the visual style handle.
+
+
+ The visual style handle.
+
+
+
+
+ Gets or sets the default lights.
+
+
+ The default lights.
+
+
+
+
+ Gets or sets the default type of the light.
+
+
+ The default type of the light.
+
+
+
+
+ Gets or sets the contrast.
+
+
+ The contrast.
+
+
+
+
+ Gets or sets the brightness.
+
+
+ The brightness.
+
+
+
+
+ Gets or sets the ambient color1.
+
+
+ The ambient color1.
+
+
+
+
+ Gets or sets the ambient color2.
+
+
+ The ambient color2.
+
+
+
+
+ Gets or sets the ambient color3.
+
+
+ The ambient color3.
+
+
+
+
+ The namespace contains Cad file format table objects.
+
+
+
+
+ The cad view dictionary
+ The following group codes apply to VPORT symbol table entries. The VPORT
+ table is unique: it may contain several entries with the same name (indicating
+ a multiple-viewport configuration). The entries corresponding to the active
+ viewport configuration all have the name *ACTIVE. The first such entry
+ describes the current viewport.
+ Since the name is not unique, we use List as a container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ The cad view dictionary
+ The following group codes apply to VPORT symbol table entries. The VPORT
+ table is unique: it may contain several entries with the same name (indicating
+ a multiple-viewport configuration). The entries corresponding to the active
+ viewport configuration all have the name *ACTIVE. The first such entry
+ describes the current viewport.
+ Since the name is not unique, we use List as a container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ The cad viewport dictionary
+ The following group codes apply to VPORT symbol table entries. The VPORT
+ table is unique: it may contain several entries with the same name (indicating
+ a multiple-viewport configuration). The entries corresponding to the active
+ viewport configuration all have the name *ACTIVE. The first such entry
+ describes the current viewport.
+ Since the name is not unique, we use List as a container
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The clone.
+
+
+ The .
+
+
+
+
+ Adds the range of the objects to container.
+
+ The objects array.
+
+
+
+ Gets or sets the cad symbol table group codes.
+
+
+ The cad symbol table group codes.
+
+
+
+
+ SummaryInfoData class
+
+
+
+
+ Gets or sets the title.
+
+
+ The title.
+
+
+
+
+ Gets or sets the subject.
+
+
+ The subject.
+
+
+
+
+ Gets or sets the author.
+
+
+ The author.
+
+
+
+
+ Gets or sets the keywords.
+
+
+ The keywords.
+
+
+
+
+ Gets or sets the comments.
+
+
+ The comments.
+
+
+
+
+ Gets or sets the last saved by.
+
+
+ The last saved by.
+
+
+
+
+ Gets or sets the revision number.
+
+
+ The revision number.
+
+
+
+
+ Gets or sets the hyperlink base.
+
+
+ The hyperlink base.
+
+
+
+
+ Gets the editing time.
+
+
+ The editing time.
+
+
+
+
+ Gets the create date time.
+
+
+ The create date time.
+
+
+
+
+ Gets the modified date time.
+
+
+ The modified date time.
+
+
+
+
+ Dxf writing module
+
+
+
+
+ ICadWriter
+
+
+
+
+ Start Writer
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+ The cad image.
+ The specified encoding.
+
+
+
+ Writes this instance.
+
+
+
+
+ Write ACDS Section
+
+
+
+
+
+
+ Layer tables list
+ Since the name is not unique, we use List as a container
+
+
+
+
+
+ Gets list of layers by name.
+
+ The name parameter.
+ The list of
+
+
+
+ The namespace handles Cad related file formats processing.
+
+
+
+
+
+
+
+
+
+ Get instance writer
+
+ The stream
+ The baseStream
+ THe cadImage
+ The specifiedEncoding
+ the filePath
+
+
+
+
+ Registers the writer.
+
+ The writer.
+ The format.
+
+
+
+ Provides methods to set metered key.
+
+
+ In this example, an attempt will be made to set metered public and private key
+
+
+ [C#]
+
+ Metered.SetMeteredKey("PublicKey", "PrivateKey");
+
+
+ [Visual Basic]
+
+ Metered.SetMeteredKey("PublicKey", "PrivateKey")
+
+ the component jar file:
+
+ Metered.setMeteredKey("PublicKey", "PrivateKey");
+
+
+
+
+ Sets metered public and private key
+
+ public key
+ private key
+
+
+
+ Gets consumption file size
+
+ consumption quantity
+
+
+
+ Removes previously setup license
+
+
+
+
+ Gets consumption credit
+
+ consumption quantity
+
+
+
+ Provides methods to license the component.
+
+
+ In this example, an attempt will be made to find a license file named MyLicense.lic
+ in the folder that contains
+
+
+ the component, in the folder that contains the calling assembly,
+ in the folder of the entry assembly and then in the embedded resources of the calling assembly.
+
+ [C#]
+
+ License license = new License();
+ license.SetLicense("MyLicense.lic");
+
+
+ [Visual Basic]
+
+ Dim license As license = New license
+ License.SetLicense("MyLicense.lic")
+
+ the component jar file:
+
+ License license = new License();
+ license.setLicense("MyLicense.lic");
+
+
+
+
+ Initializes a new instance of this class.
+
+
+ In this example, an attempt will be made to find a license file named MyLicense.lic
+ in the folder that contains
+
+
+ the component, in the folder that contains the calling assembly,
+ in the folder of the entry assembly and then in the embedded resources of the calling assembly.
+
+ [C#]
+
+ License license = new License();
+ license.SetLicense("MyLicense.lic");
+
+
+ [Visual Basic]
+
+ Dim license As license = New license
+ License.SetLicense("MyLicense.lic")
+
+ the component jar file:
+
+ License license = new License();
+ license.setLicense("MyLicense.lic");
+
+
+
+
+ Licenses the component.
+
+
+
Tries to find the license in the following locations:
+
1. Explicit path.
+
+
2. The folder that contains the Aspose component assembly.
+
3. The folder that contains the client's calling assembly.
+
4. The folder that contains the entry (startup) assembly.
+
5. An embedded resource in the client's calling assembly.
+
+ Note:On the .NET Compact Framework, tries to find the license only in these locations:
+
1. Explicit path.
+
2. An embedded resource in the client's calling assembly.
+
+
+
2. The folder that contains the Aspose component JAR file.
+
3. The folder that contains the client's calling JAR file.
+
+
+
+ In this example, an attempt will be made to find a license file named MyLicense.lic
+ in the folder that contains
+
+
+ the component, in the folder that contains the calling assembly,
+ in the folder of the entry assembly and then in the embedded resources of the calling assembly.
+
+ [C#]
+
+ License license = new License();
+ license.SetLicense("MyLicense.lic");
+
+
+ [Visual Basic]
+
+ Dim license As License = New License
+ license.SetLicense("MyLicense.lic")
+
+ the component jar file:
+
+ License license = new License();
+ license.setLicense("MyLicense.lic");
+ Can be a full or short file name or name of an embedded resource.
+ Use an empty string to switch to evaluation mode.
+
+
+
+ Licenses the component.
+
+ A stream that contains the license.
+
+
Use this method to load a license from a stream.
+
+
+
+
+ [C#]
+
+ License license = new License();
+ license.SetLicense(myStream);
+
+
+ [Visual Basic]
+
+ Dim license as License = new License
+ license.SetLicense(myStream)
+
+
+ License license = new License();
+ license.setLicense(myStream);
+
+
+
+ void setLicense(java.io.InputStream stream)
+
+
+
+ Represents disposable object.
+
+
+
+
+ Finalizes an instance of the class.
+
+
+
+
+ Disposes the current instance.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Releases the unmanaged resources. Make sure no managed resources are released here, since they may have been already released.
+
+
+
+
+ Verifies that the current instance is not disposed.
+
+
+
+
+ Gets a value indicating whether this instance is disposed.
+
+
+ true if disposed; otherwise, false.
+
+
+
+ Conforms to the 32-bit ARGB pixels loaded partially.
+
+
+
+
+ Processes the loaded pixels.
+
+ The pixels rectangle.
+ The 32-bit ARGB pixels.
+ The start pixels point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end pixels point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ The compressor exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ This enum describes possible progress event types that can occurred during image processing operations
+
+
+
+
+ Relative progress of current stage of the operation processing
+
+
+
+
+ The next stage of the operation started
+
+
+
+
+ The initialization of the operation
+
+
+
+
+ The pre processing
+
+
+
+
+ The processing
+
+
+
+
+ The finalization of the operation
+
+
+
+
+ The namespace contains progress handler classes
+
+
+
+
+ This class represents information about image load/save/export operations progress,
+ that can be used in external application to show conversion progress to end user
+
+
+
+
+ Gets the description of the event
+
+
+ The description.
+
+
+
+
+ Gets the type of the event.
+
+
+ The type of the event.
+
+
+
+
+ Gets the upper progress value limit.
+
+
+ The upper progress value limit.
+
+
+
+
+ Gets current progress value.
+
+
+ The progress value.
+
+
+
+
+ Represents an object with bounds.
+
+
+
+
+ Gets the object size.
+
+ The object size.
+
+
+
+ Gets the object bounds.
+
+ The object bounds.
+
+
+
+ Gets the object width.
+
+ The object width.
+
+
+
+ Gets the object height.
+
+ The object height.
+
+
+
+ The BitCount Enumeration specifies the number of bits that define each pixel and
+ the maximum number of colors in a device-independent bitmap (DIB).
+
+
+
+
+ The number of bits per pixel is undefined.
+ The image SHOULD be in either JPEG or PNG format.
+ Neither of these formats includes a color table, so this value
+ specifies that no color table is present. See [JFIF] and [RFC2083]
+ for more information concerning JPEG and PNG compression formats.
+
+
+
+
+ The image is specified with two colors.Each pixel in the bitmap is
+ represented by a single bit. If the bit is clear, the pixel is
+ displayed with the color of the first entry in the color table;
+ if the bit is set, the pixel has the color of the second entry in the table.
+
+
+
+
+ The image is specified with a maximum of 16 colors.
+ Each pixel in the bitmap is represented by a 4-bit index into the
+ color table, and each byte contains 2 pixels.
+
+
+
+
+ The image is specified with a maximum of 256 colors.
+ Each pixel in the bitmap is represented by an 8-bit index into the
+ color table, and each byte contains 1 pixel.
+
+
+
+
+ The image is specified with a maximum of 2^16 colors.
+ Each pixel in the bitmap is represented by a 16-bit value
+
+
+
+
+ The bitmap has a maximum of 2^24 colors, and the Colors field of DIB is NULL.
+ Each 3-byte triplet in the bitmap array represents the relative intensities
+ of blue, green, and red, respectively, for a pixel. The Colors color table
+ is used for optimizing colors used on palette-based devices, and MUST contain
+ the number of entries specified by the ColorUsed field of the BitmapInfoHeader Object
+
+
+
+
+ The bitmap has a maximum of 2^24 colors
+
+
+
+
+ The namespace DIB header processing.
+
+
+
+
+ The long operation delegate for the asynchronous task without any result.
+
+ State of the asynchronous task.
+
+
+
+ The long operation delegate for the asynchronous task with generic type result.
+
+ State of the asynchronous task.
+ Result of the long operation.
+
+
+
+ The static factory class for creating the asynchronous tasks
+
+
+
+
+ Creates the asynchronous task without any result.
+
+ The task action.
+ The asynchronous task
+
+
+
+ Creates the asynchronous task with generic type result.
+
+ The task function.
+ The asynchronous task
+
+
+
+ The exception for the asynchronous task.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+
+
+
+ Provides progress info for the asynchronous task.
+
+
+
+
+ The duration of the asynchronous task.
+
+
+
+
+ The progress of the asynchronous task, in percent.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The progress percentage.
+ The duration.
+
+
+
+ The asynchronous task.
+
+
+
+
+
+
+ Runs this task.
+
+
+
+
+ Runs this task.
+
+ The thread priority.
+
+
+
+ Cancels this task.
+ The task is completed safely by the controlled stopping of the algorithm.
+
+
+
+
+ Aborts this task.
+ The task is completed immediately, with the risk of not freeing internal unmanaged resources.
+
+
+
+
+ Sets the progress callback delegate.
+
+ The progress callback.
+
+
+
+ Sets the complete callback delegate.
+
+ The complete callback.
+
+
+
+ Gets the progress of the asynchronous task.
+
+
+ The progress of the asynchronous task.
+
+
+
+
+ Gets a value indicating whether this task is currently running.
+
+
+ true if this task is currently running; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this task was canceled.
+
+
+ true if this task was canceled; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this task was faulted.
+
+
+ true if this task was faulted; otherwise, false.
+
+
+
+
+ Gets the task error which is available after the task is completed.
+
+
+ The task error.
+
+
+
+
+ Gets the result of this task.
+
+
+ The result of this task.
+
+
+
+
+ Provides access to the state of the asynchronous task.
+
+
+
+
+ Sets the progress of the asynchronous task.
+
+ The progress percentage.
+
+
+
+ Gets a value indicating whether the asynchronous task is canceled.
+
+
+ true if the asynchronous task is canceled; otherwise, false.
+
+
+
+
+ Gets the progress of the asynchronous task.
+
+
+ The progress of the asynchronous task.
+
+
+
+
+ Callback function to receive task progress change event.
+
+ The progress percentage.
+
+
+
+ Callback function to receive task completion event.
+
+ The asynchronous task.
+ if set to true [was cancelled].
+ The error.
+
+
+
+ The namespace handles AsyncTask processing.
+
+
+
+
+ Defines a blend pattern. This class cannot be inherited.
+
+
+ The typical blend class usage is defining a blend pattern for brush. And thus the blend properties should be initialized carefully.
+ Null arrays are not allowed. The brush will throw the appropriate exception if blend factors or positions array are empty or their length is not the same.
+ If there are two or more elements in the positions array then the first element should be 0 and the last should be 1.
+
+
+
+
+ Initializes a new instance of the class. The number of elements in the factor and blend arrays will be equal to 1.
+
+
+
+
+ Initializes a new instance of the class with the specified number of factors and positions.
+
+ The number of elements in the factor and position arrays.
+
+
+
+ Tests whether the specified object is a class and is equivalent to this class.
+
+ The object to test.
+ True if is a class equivalent to this class; otherwise, false.
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets the array of blend factors for the gradient.
+
+ The array of blend factors that specify the percentages of the starting color and the ending color to be used at the corresponding position.
+
+
+
+ Gets or sets the array of blend positions for the gradient.
+
+ The array of blend positions that specify the percentages of distance along the gradient line.
+
+
+
+ The base brush class.
+
+
+
+
+ Creates a new deep clone of the current .
+
+ A new which is the deep clone of this instance.
+
+
+
+ Gets or sets the brush opacity. The value should be between 0 and 1. Value of 0 means that brush is fully visible, value of 1 means the brush is fully opaque.
+
+ The brush opacity value.
+
+
+
+ Defines a rectangular brush with a hatch style, a foreground color, and a background color. This class cannot be inherited.
+
+
+
+
+ Gets or sets the color of hatch lines.
+
+ The color of hatch lines.
+
+
+
+ Gets or sets the color of spaces between the hatch lines.
+
+ The color of spaces between the hatch lines.
+
+
+
+ Gets or sets the hatch style of this brush.
+
+
+
+
+ Encapsulates a with a linear gradient. This class cannot be inherited.
+
+
+
+
+ Represents a with gradient capabilities and appropriate properties.
+
+
+
+
+ A with transform capabilities.
+
+
+
+
+ Resets the property to identity.
+
+
+
+
+ Multiplies the that represents the local geometric transform of this by the specified by prepending the specified .
+
+ The by which to multiply the geometric transform.
+
+
+
+ Multiplies the that represents the local geometric transform of this by the specified in the specified order.
+
+ The by which to multiply the geometric transform.
+ A that specifies in which order to multiply the two matrices.
+
+
+
+ Translates the local geometric transform by the specified dimensions. This method prepends the translation to the transform.
+
+ The value of the translation in x.
+ The value of the translation in y.
+
+
+
+ Translates the local geometric transform by the specified dimensions in the specified order.
+
+ The value of the translation in x.
+ The value of the translation in y.
+ The order (prepend or append) in which to apply the translation.
+
+
+
+ Scales the local geometric transform by the specified amounts. This method prepends the scaling matrix to the transform.
+
+ The amount by which to scale the transform in the x-axis direction.
+ The amount by which to scale the transform in the y-axis direction.
+
+
+
+ Scales the local geometric transform by the specified amounts in the specified order.
+
+ The amount by which to scale the transform in the x-axis direction.
+ The amount by which to scale the transform in the y-axis direction.
+ A that specifies whether to append or prepend the scaling matrix.
+
+
+
+ Rotates the local geometric transform by the specified amount. This method prepends the rotation to the transform.
+
+ The angle of rotation.
+
+
+
+ Rotates the local geometric transform by the specified amount in the specified order.
+
+ The angle of rotation.
+ A that specifies whether to append or prepend the rotation matrix.
+
+
+
+ Gets or sets a enumeration that indicates the wrap mode for this .
+
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Gets or sets a copy that defines a local geometric transform for this .
+
+ A copy of the that defines a geometric transform that applies only to fills drawn with this .
+
+
+
+ Gets a value indicating whether transformations were changed in some way. For example setting the transformation matrix or
+ calling any of the methods altering the transformation matrix. The property is introduced for backward compatibility with GDI+.
+
+
+ True if transformation was changed; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class with default parameters.
+ The angle is 45 degrees and the rectangle is located in (0,0) with size (1,1).
+
+
+
+
+ Initializes a new instance of the class. The gradient rectangle is calculated from the specified points.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+
+
+
+ Initializes a new instance of the class. The gradient rectangle is calculated from the specified points.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+
+
+
+ Initializes a new instance of the class based on a rectangle and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations applied to this .
+
+
+
+ Initializes a new instance of the class based on a rectangle, starting and ending colors, and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations with this .
+
+
+
+ Gets or sets a rectangular region that defines the starting and ending points of the gradient.
+
+ A structure that specifies the starting and ending points of the gradient.
+
+
+
+ Gets or sets the gradient angle.
+
+ The gradient angle.
+
+
+
+ Gets or sets a value indicating whether is changed during trasnformations with this .
+
+
+ true if is changed during transformations with this ; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether gamma correction is enabled for this .
+
+ The value is true if gamma correction is enabled for this ; otherwise, false.
+
+
+
+ Initializes a new instance of the class with default parameters.
+ The starting color is black, the ending color is white, the angle is 45 degrees and the rectangle is located in (0,0) with size (1,1).
+
+
+
+
+ Initializes a new instance of the class with the specified points and colors.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+ A structure that represents the starting color of the linear gradient.
+ A structure that represents the ending color of the linear gradient.
+
+
+
+ Initializes a new instance of the class with the specified points and colors.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+ A structure that represents the starting color of the linear gradient.
+ A structure that represents the ending color of the linear gradient.
+
+
+
+ Initializes a new instance of the class based on a rectangle, starting and ending colors, and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ A structure that represents the starting color for the gradient.
+ A structure that represents the ending color for the gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+
+
+
+ Initializes a new instance of the class based on a rectangle, starting and ending colors, and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ A structure that represents the starting color for the gradient.
+ A structure that represents the ending color for the gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+
+
+
+ Initializes a new instance of the class based on a rectangle, starting and ending colors, and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ A structure that represents the starting color for the gradient.
+ A structure that represents the ending color for the gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations with this .
+
+
+
+ Initializes a new instance of the class based on a rectangle, starting and ending colors, and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ A structure that represents the starting color for the gradient.
+ A structure that represents the ending color for the gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations with this .
+
+
+
+ Creates a gradient falloff based on a bell-shaped curve.
+
+ A value from 0 through 1 that specifies the center of the gradient (the point where the starting color and ending color are blended equally).
+
+
+
+ Creates a gradient falloff based on a bell-shaped curve.
+
+ A value from 0 through 1 that specifies the center of the gradient (the point where the gradient is composed of only the ending color).
+ A value from 0 through 1 that specifies how fast the colors falloff from the .
+
+
+
+ Creates a linear gradient with a center color and a linear falloff to a single color on both ends.
+
+ A value from 0 through 1 that specifies the center of the gradient (the point where the gradient is composed of only the ending color).
+
+
+
+ Creates a linear gradient with a center color and a linear falloff to a single color on both ends.
+
+ A value from 0 through 1 that specifies the center of the gradient (the point where the gradient is composed of only the ending color).
+ A value from 0 through1 that specifies how fast the colors falloff from the starting color to (ending color)
+
+
+
+ Gets or sets a that defines a multicolor linear gradient.
+
+ A that defines a multicolor linear gradient.
+
+
+
+ Gets or sets the starting and ending colors of the gradient.
+
+ An array of two structures that represents the starting and ending colors of the gradient.
+
+
+
+ Gets or sets the starting gradient color.
+
+ The starting gradient color.
+
+
+
+ Gets or sets the ending gradient color.
+
+ The ending gradient color.
+
+
+
+ Gets or sets a that specifies positions and factors that define a custom falloff for the gradient.
+
+ A that represents a custom falloff for the gradient.
+
+
+
+ Represents a with linear gradient defined by multiple colors and appropriate positions. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class with default parameters.
+ The starting color is black, the ending color is white, the angle is 45 degrees and the rectangle is located in (0,0) with size (1,1).
+
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ A structure that represents the starting point of the linear gradient.
+ A structure that represents the endpoint of the linear gradient.
+
+
+
+ Initializes a new instance of the class based on a rectangle and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+
+
+
+ Initializes a new instance of the class based on a rectangle and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+
+
+
+ Initializes a new instance of the class based on a rectangle and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations with this .
+
+
+
+ Initializes a new instance of the class based on a rectangle and an orientation angle.
+
+ A structure that specifies the bounds of the linear gradient.
+ The angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+ if set to true the angle is changed during transformations with this .
+
+
+
+ Gets or sets a that defines a multicolor linear gradient.
+
+ A that defines a multicolor linear gradient.
+
+
+
+ The namespace provides helper classes and methods to work with different brush types.
+
+
+
+
+ The namespace handles Tiff file format processing.
+
+
+
+
+ Encapsulates a object with a gradient. This class cannot be inherited.
+
+
+ The center color is white by default. A user can changed this value at any time later.
+ The surround colors array is initialized by single element containing white color by default. The surround colors may be changed later, however at least single element is required when setting up the surround colors.
+ See the for more details about its initialization.
+
+
+
+
+ Represents a with base path gradient functionality.
+
+
+ Note that when creating the class it should be initialized with 2 points at least. The internal path created
+ will always be a closed figure, the last point connects the first point. That shape is filled with this .
+ The GDI+ implementation throws an when passing in empty arrays or points set having the same coordinates.
+ The throws an exception when points array contain less than 2 points, the is
+ thrown rather than when points array is unacceptable.
+ The center point is calculated as a center of mass for the passed in points by default. A user can change this point later.
+ The focus scales is an empty point (0.0, 0.0) by default.
+
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified path.
+
+ The that defines the area filled by this .
+
+
+
+ Gets the path points this brush was build upon.
+
+ The path points.
+
+
+
+ Gets the graphics path this brush was build upon.
+
+ The graphics path.
+
+
+
+ Gets or sets the center point of the path gradient.
+
+ A that represents the center point of the path gradient.
+
+
+
+ Gets or sets the focus point for the gradient falloff.
+
+ A that represents the focus point for the gradient falloff.
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified path.
+
+ The that defines the area filled by this .
+
+
+
+ Creates a gradient brush that changes color starting from the center of the path outward to the path's boundary. The transition from one color to another is based on a bell-shaped curve.
+
+ A value from 0 through 1 that specifies where, along any radial from the center of the path to the path's boundary, the center color will be at its highest intensity. A value of 1 (the default) places the highest intensity at the center of the path.
+
+
+
+ Creates a gradient brush that changes color starting from the center of the path outward to the path's boundary. The transition from one color to another is based on a bell-shaped curve.
+
+ A value from 0 through 1 that specifies where, along any radial from the center of the path to the path's boundary, the center color will be at its highest intensity. A value of 1 (the default) places the highest intensity at the center of the path.
+ A value from 0 through 1 that specifies the maximum intensity of the center color that gets blended with the boundary color. A value of 1 causes the highest possible intensity of the center color, and it is the default value.
+
+
+
+ Creates a gradient with a center color and a linear falloff to one surrounding color.
+
+ A value from 0 through 1 that specifies where, along any radial from the center of the path to the path's boundary, the center color will be at its highest intensity. A value of 1 (the default) places the highest intensity at the center of the path.
+
+
+
+ Creates a gradient with a center color and a linear falloff to each surrounding color.
+
+ A value from 0 through 1 that specifies where, along any radial from the center of the path to the path's boundary, the center color will be at its highest intensity. A value of 1 (the default) places the highest intensity at the center of the path.
+ A value from 0 through 1 that specifies the maximum intensity of the center color that gets blended with the boundary color. A value of 1 causes the highest possible intensity of the center color, and it is the default value.
+
+
+
+ Gets or sets a that defines a multicolor linear gradient.
+
+ A that defines a multicolor linear gradient.
+
+
+
+ Gets or sets the color at the center of the path gradient.
+
+ A that represents the color at the center of the path gradient.
+
+
+
+ Gets or sets an array of colors that correspond to the points in the path this fills.
+
+ An array of structures that represents the colors associated with each point in the path this fills.
+
+
+
+ Gets or sets a that specifies positions and factors that define a custom falloff for the gradient.
+
+ A that represents a custom falloff for the gradient.
+
+
+
+ Encapsulates a object with a gradient. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified points.
+
+ An array of structures that represents the points that make up the vertices of the path.
+
+
+
+ Initializes a new instance of the class with the specified points and wrap mode.
+
+ An array of structures that represents the points that make up the vertices of the path.
+ A that specifies how fills drawn with this are tiled.
+
+
+
+ Initializes a new instance of the class with the specified path.
+
+ The that defines the area filled by this .
+
+
+
+ Gets or sets a that defines a multicolor linear gradient.
+
+ A that defines a multicolor linear gradient.
+
+
+
+ Solid brush is intended for drawing continiously with specific color. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The solid brush color.
+
+
+
+ Gets or sets the brush color.
+
+ The brush color.
+
+
+
+ Each property of the class is a object that uses an image to fill the interior of a shape. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class that uses the specified image.
+
+ The object with which this object fills interiors.
+
+
+
+ Initializes a new instance of the class that uses the specified image and wrap mode.
+
+ The object with which this object fills interiors.
+ A enumeration that specifies how this object is tiled.
+
+
+
+ Initializes a new instance of the class that uses the specified image, wrap mode, and bounding rectangle.
+
+ The object with which this object fills interiors.
+ A enumeration that specifies how this object is tiled.
+ A structure that represents the bounding rectangle for this object.
+
+
+
+ Initializes a new instance of the class that uses the specified image, wrap mode, and bounding rectangle.
+
+ The object with which this object fills interiors.
+ A enumeration that specifies how this object is tiled.
+ A structure that represents the bounding rectangle for this object.
+
+
+
+ Initializes a new instance of the class that uses the specified image and bounding rectangle.
+
+ The object with which this object fills interiors.
+ A structure that represents the bounding rectangle for this object.
+
+
+
+ Initializes a new instance of the class that uses the specified image, bounding rectangle, and image attributes.
+
+ The object with which this object fills interiors.
+ A structure that represents the bounding rectangle for this object.
+ An object that contains additional information about the image used by this object.
+
+
+
+ Initializes a new instance of the class that uses the specified image and bounding rectangle.
+
+ The object with which this object fills interiors.
+ A structure that represents the bounding rectangle for this object.
+
+
+
+ Initializes a new instance of the class that uses the specified image, bounding rectangle, and image attributes.
+
+ The object with which this object fills interiors.
+ A structure that represents the bounding rectangle for this object.
+ An object that contains additional information about the image used by this object.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets the object associated with this object.
+
+ An object that represents the image with which this object fills shapes.
+
+
+
+ Gets the associated with this .
+
+ The .
+
+
+
+ Gets the associated with this .
+
+ The .
+
+
+
+ Contains cache settings.
+
+
+
+
+ Sets the settings to defaults.
+
+
+
+
+ Gets or sets a value indicating whether reallocation should be exact or not. If reallocation is non exact the performance should be higher.
+
+
+ true if reallocation is exact; otherwise, false.
+
+ The exact reallocation will perform reallocation of additional memory only up to the upper limit specified.
+ When passing upper limit for in-memory during reallocation the cached data will be copied to disk if possible.
+ When passing upper limit for disk memory during reallocation the appropriate exception is thrown.
+ The performance should be higher if this option is turned off as no additional copying will be performed if possible,
+ however this may also lead to pass upper limits specified for memory or disk.
+
+
+
+ Gets or sets the cache folder.
+
+
+ The cache folder.
+
+
+
+
+ Gets the allocated in-memory bytes count.
+
+
+ The allocated in-memory bytes count.
+
+
+
+
+ Gets the allocated disk bytes count.
+
+
+ The allocated disk bytes count.
+
+
+
+
+ Gets or sets the maximum available memory for cache in memory. The value specified is megabytes count.
+
+
+ The maximum memory for cache.
+
+ Value of 0 will consume all available memory and serves as no upper limit.
+
+
+
+ Gets or sets the maximum available disk space for cache. The value specified is megabytes count.
+
+
+ The maximum available disk space for cache.
+
+ Value of 0 will consume all available memory and serves as no upper limit.
+
+
+
+ Gets or sets the cache scheme used.
+
+
+ The cache scheme used.
+
+
+
+
+ Specifies the cache type to use.
+
+
+
+
+ Specifies auto cache type. The auto cache scheme will try to cache in-memory first then on disk.
+
+
+
+
+ The disk cache only.
+
+
+
+
+ The in-memory cache only.
+
+
+
+
+ Represents the character set used.
+
+
+
+
+ 1252 Latin 1, 1250 Latin 2, 1256 Arabic character sets
+
+
+
+
+ The default character set.
+
+
+
+
+ The symbol character set
+
+
+
+
+ DBCS, 932 Japanese character set.
+
+
+
+
+ DBCS, 949 Korean character set.
+
+
+
+
+ DBCS, 949 Korean character set.
+
+
+
+
+ DBCS, 936 Simplified Chinese character set.
+
+
+
+
+ DBCS, 950 Traditional Chinese character set.
+
+
+
+
+ 437 MS-DOS Latin 1, 852 MS-DOS Latin 2, 864 MS-DOS Arabic character sets.
+
+
+
+
+ DBCS, 1361 Korean character set.
+
+
+
+
+ 1255 Hebrew character set.
+
+
+
+
+ 1256 Arabic character set.
+
+
+
+
+ 1253 Greek character set.
+
+
+
+
+ 1254 Turkish character set.
+
+
+
+
+ 1258 Vietnamese character set.
+
+
+
+
+ 874 Thai character set.
+
+
+
+
+ 1250 Latin 2, Central Europe character set.
+
+
+
+
+ 1251 Cyrillic (Slavic) character set.
+
+
+
+
+ 10000 Mac Roman, 10029 Mac Central Europe, 10007 Mac Cyrillic character sets.
+
+
+
+
+ 1257 Baltic Rim character set.
+
+
+
+
+ The CMYK color of pixel.
+
+
+
+
+ Creates a structure from a 32-bit cyan, magenta, yellow and black values.
+ This method is deprecated. Please use more effective .
+
+
+ The cyan component. Valid values are 0 through 255.
+
+
+ The magenta component. Valid values are 0 through 255.
+
+
+ The yellow component. Valid values are 0 through 255.
+
+
+ The black component. Valid values are 0 through 255.
+
+
+ The .
+
+
+
+
+ The get hash code.
+
+
+ The .
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ The conversion from 32-bit ARGB color to CMYKColor.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of 32-bit ARGB format.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of CMYKColor type in CMYK format.
+
+
+ The array of the ARGB colors.
+
+
+
+
+ The conversion from CMYKColor to 32-bit ARGB Color using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of CMYKColor type in CMYK format.
+
+
+ The array of the 32-bit ARGB color.
+
+
+
+
+ The conversion from 32-bit ARGB to CMYKColor.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of 32-bit ARGB format.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of CMYKColor type in CMYK format.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of CMYKColor type in CMYK format.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of CMYKColor type in CMYK format.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color using icc conversion.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of CMYKColor type in CMYK format.
+
+
+ The stream containing icc cmyk profile.
+
+
+ The stream containing icc rgb profile.
+
+
+ The .
+
+
+
+
+ The conversion from CMYKColor to Color using icc conversion.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of CMYKColor type in CMYK format.
+
+
+ The stream containing icc cmyk profile.
+
+
+ The stream containing icc rgb profile.
+
+
+ The .
+
+
+
+
+ The to value.
+
+
+ The .
+
+
+
+
+ Gets the empty.
+
+
+
+
+ Gets the cyan component value of this structure.
+
+
+ The cyan component value of this .
+
+
+
+
+ Gets the magenta component value of this structure.
+
+
+ The magenta component value of this .
+
+
+
+
+ Gets the yellow component value of this structure.
+
+
+ The yellow component value of this .
+
+
+
+
+ Gets the black component value of this structure.
+
+
+ The black component value of this .
+
+
+
+
+ Gets a value indicating whether this structure is uninitialized.
+
+ This property returns true if this color is uninitialized; otherwise, false.
+
+
+
+ Helper methods to work with CMYK color presented as a signed 32-bit integer value.
+ Provides the similar API as the struct.
+ It's more lightweight because CMYK color is presented just as Int32 rather than structure with internal fields.
+ Please prefer to use static methods of this class when possible instead of the deprecated
+ struct.
+
+
+
+
+ Gets the cyan component value.
+
+ The CMYK color presented as a 32-bit integer value.
+ The cyan component value.
+
+
+
+ Gets the magenta component value.
+
+ The CMYK color presented as a 32-bit integer value.
+ The magenta component value.
+
+
+
+ Gets the yellow component value.
+
+ The CMYK color presented as a 32-bit integer value.
+ The yellow component value.
+
+
+
+ Gets the black component value.
+
+ The CMYK color presented as a 32-bit integer value.
+ The black component value.
+
+
+
+ Creates CMYK from a 32-bit cyan, magenta, yellow and black values.
+
+ The cyan component. Valid values are 0 through 255.
+ The magenta component. Valid values are 0 through 255.
+ The yellow component. Valid values are 0 through 255.
+ The black component. Valid values are 0 through 255.
+
+ The CMYK color presented as a 32-bit integer value.
+
+
+
+
+ The conversion from ARGB colors to CMYK colors.
+
+ The ARGB colors presented as 32-bit integer values.
+
+ The CMYK colors presented as 32-bit integer values.
+
+
+
+
+ Converts RGB to CMYK.
+
+ The RGB colors presented as 32-bit integer values.
+ The start index of RGB color.
+ The number of RGB pixels to convert.
+
+ The CMYK colors presented as a byte array.
+
+
+
+
+ The conversion from ARGB color to CMYK color.
+
+ The ARGB color presented as a 32-bit integer value.
+
+ The CMYK color presented as a 32-bit integer value.
+
+
+
+
+ The conversion from ARGB color to CMYK color.
+
+ The ARGB color.
+
+ The CMYK color presented as a 32-bit integer value.
+
+
+
+
+ The conversion from ARGB colors to CMYK colors.
+
+ The ARGB colors.
+
+ The CMYK colors presented as 32-bit integer values.
+
+
+
+
+ The conversion from CMYK colors to ARGB colors.
+
+ The CMYK colors presented as 32-bit integer values.
+
+ The ARGB colors.
+
+
+
+
+ The conversion from CMYK color to ARGB color.
+
+ The CMYK color presented as a 32-bit integer value.
+
+ The ARGB color.
+
+
+
+
+ The conversion from CMYK colors to ARGB colors.
+
+ The CMYK colors presented as 32-bit integer values.
+
+ The ARGB colors presented as 32-bit integer values.
+
+
+
+
+ The conversion from CMYK colors to ARGB colors using Icc conversion with default profiles.
+
+ The CMYK pixels presented as 32-bit integer values.
+
+ The ARGB colors.
+
+
+
+
+ The conversion from CMYK colors to ARGB colors using Icc conversion with custom profiles.
+
+ The CMYK colors presented as 32-bit integer values.
+ The stream containing CMYK Icc profile.
+ The stream containing RGB Icc profile.
+
+ The ARGB colors.
+
+
+
+
+ The conversion from CMYK color to ARGB Color using Icc conversion with default profiles.
+
+ The CMYK color presented as a 32-bit integer value.
+
+ The ARGB color.
+
+
+
+
+ The conversion from CMYK color to ARGB color using Icc conversion with custom profile.
+
+ The CMYK color presented as a 32-bit integer value.
+ The stream containing CMYK Icc profile.
+ The stream containing RGB Icc profile.
+
+ The ARGB color.
+
+
+
+
+ The conversion from ARGB colors to CMYK colors using Icc conversion with custom profiles.
+
+ The ARGB colors.
+ The stream containing RGB Icc profile.
+ The stream containing CMYK Icc profile.
+
+ The CMYK colors presented as 32-bit integer values.
+
+
+
+
+ Converts RGB to CMYK using custom ICC profiles.
+
+ The RGB colors presented as 32-bit integer values.
+ The start index of RGB color.
+ The number of RGB pixels to convert.
+ The RGB profile stream.
+ The CMYK profile stream.
+
+ The CMYK colors presented as a byte array.
+
+
+
+
+ The conversion from ARGB colors to CMYK colors using Icc conversion with default profiles.
+
+ The ARGB colors.
+
+ The CMYK colors presented as 32-bit integer values.
+
+
+
+
+ The conversion from ARGB color to CMYK color using Icc conversion with default profiles.
+
+ The ARGB color.
+
+ The CMYK color presented as a 32-bit integer value.
+
+
+
+
+ The conversion from ARGB color to CMYK color using Icc conversion with custom profiles.
+
+ The ARGB color.
+ The stream containing RGB Icc profile.
+ The stream containing CMYK Icc profile.
+
+ The CMYK color presented as a 32-bit integer value.
+
+
+
+
+ The color of the pixel.
+
+
+
+
+ Tests whether two specified structures are equivalent.
+
+ The that is to the left of the equality operator.
+ The that is to the right of the equality operator.
+ True if the two structures are equal; otherwise, false.
+
+
+
+ Tests whether two specified structures are different.
+
+ The that is to the left of the inequality operator.
+ The that is to the right of the inequality operator.
+ True if the two structures are different; otherwise, false.
+
+
+
+ Creates a structure from a 32-bit ARGB value.
+
+ A value specifying the 32-bit ARGB value.
+ The structure that this method creates.
+
+
+
+ Creates a structure from the four ARGB component (alpha, red, green, and blue) values. Although this method allows a 32-bit value to be passed for each component, the value of each component is limited to 8 bits.
+
+ The alpha component. Valid values are 0 through 255.
+ The red component. Valid values are 0 through 255.
+ The green component. Valid values are 0 through 255.
+ The blue component. Valid values are 0 through 255.
+ The that this method creates.
+
+ , , , or is less than 0 or greater than 255.
+
+
+
+ Creates a structure from the specified structure, but with the new specified alpha value. Although this method allows a 32-bit value to be passed for the alpha value, the value is limited to 8 bits.
+
+ The alpha value for the new . Valid values are 0 through 255.
+ The from which to create the new .
+ The that this method creates.
+
+ is less than 0 or greater than 255.
+
+
+
+ Creates a structure from the specified 8-bit color values (red, green, and blue). The alpha value is implicitly 255 (fully opaque). Although this method allows a 32-bit value to be passed for each color component, the value of each component is limited to 8 bits.
+
+ The red component value for the new . Valid values are 0 through 255.
+ The green component value for the new . Valid values are 0 through 255.
+ The blue component value for the new . Valid values are 0 through 255.
+ The that this method creates.
+
+ , , or is less than 0 or greater than 255.
+
+
+
+ Creates a structure from the specified predefined color.
+
+ An element of the enumeration.
+ The that this method creates.
+
+
+
+ Creates a structure from the specified name of a predefined color.
+
+ A string that is the name of a predefined color. Valid names are the same as the names of the elements of the enumeration.
+ The that this method creates.
+
+
+
+ Gets the hue-saturation-brightness (HSB) brightness value for this structure.
+
+ The brightness of this . The brightness ranges from 0.0 through 1.0, where 0.0 represents black and 1.0 represents white.
+
+
+
+ Gets the hue-saturation-brightness (HSB) hue value, in degrees, for this structure.
+
+ The hue, in degrees, of this . The hue is measured in degrees, ranging from 0.0 through 360.0, in HSB color space.
+
+
+
+ Gets the hue-saturation-brightness (HSB) saturation value for this structure.
+
+ The saturation of this . The saturation ranges from 0.0 through 1.0, where 0.0 is grayscale and 1.0 is the most saturated.
+
+
+
+ Gets the 32-bit ARGB value of this structure.
+
+ The 32-bit ARGB value of this .
+
+
+
+ Gets the value of this structure.
+
+ An element of the enumeration, if the is created from a predefined color by using either the method or the method; otherwise, 0.
+
+
+
+ Converts this structure to a human-readable string.
+
+ A string that is the name of this , if the is created from a predefined color by using either the method or the method; otherwise, a string that consists of the ARGB component names and their values.
+
+
+
+ Tests whether the specified object is a structure and is equivalent to this structure.
+
+ The object to test.
+ True if is a structure equivalent to this structure; otherwise, false.
+
+
+
+ Returns a hash code for this structure.
+
+ An integer value that specifies the hash code for this .
+
+
+
+ The conversion from Color to CMYKColor.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of Color type in RGB format.
+
+
+ The .
+
+
+
+
+ The conversion from Color to CMYKColor.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of Color type in RGB format.
+
+
+ The .
+
+
+
+
+ The conversion from Color to CMYKColor using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of Color type in RGB format.
+
+
+ The .
+
+
+
+
+ The conversion from Color to CMYKColor using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of Color type in RGB format.
+
+
+ The .
+
+
+
+
+ The conversion from Color to CMYKColor using icc conversion.
+ This method is deprecated. Please use more effective .
+
+
+ The pixels of Color type in RGB format.
+
+
+ The stream containing icc rgb profile.
+
+
+ The stream containing icc cmyk profile.
+
+
+ The .
+
+
+
+
+ The conversion from Color to CMYKColor using icc conversion with default profiles.
+ This method is deprecated. Please use more effective .
+
+
+ The pixel of Color type in RGB format.
+
+
+ The stream containing icc rgb profile.
+
+
+ The stream containing icc cmyk profile.
+
+
+ The .
+
+
+
+
+ Makes the ARGB value.
+
+ The alpha component.
+ The red component.
+ The green component.
+ The blue component.
+ The ARGB component containing the alpha, red, green and blue components.
+
+
+
+ Gets an empty .
+
+ The empty .
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A structure representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets a system-defined color.
+
+ A representing a system-defined color.
+
+
+
+ Gets the red component value of this structure.
+
+ The red component value of this .
+
+
+
+ Gets the green component value of this structure.
+
+ The green component value of this .
+
+
+
+ Gets the blue component value of this structure.
+
+ The blue component value of this .
+
+
+
+ Gets the alpha component value of this structure.
+
+ The alpha component value of this .
+
+
+
+ Gets a value indicating whether this structure is a predefined color. Predefined colors are represented by the elements of the enumeration.
+
+ True if this was created from a predefined color by using either the method or the method; otherwise, false.
+
+
+
+ Gets a value indicating whether this structure is uninitialized.
+
+ This property returns true if this color is uninitialized; otherwise, false.
+
+
+
+ Gets a value indicating whether this structure is a named color or a member of the enumeration.
+
+ True if this was created by using either the method or the method; otherwise, false.
+
+
+
+ Gets the name of this .
+
+ The name of this .
+
+
+
+ Specifies which objects use color adjustment information.
+
+
+
+
+ Color adjustment information that is used by all GDI+ objects that do not have their own color adjustment information.
+
+
+
+
+ Color adjustment information for Bitmap objects.
+
+
+
+
+ Color adjustment information for Brush objects.
+
+
+
+
+ Color adjustment information for Pen objects.
+
+
+
+
+ Color adjustment information for text.
+
+
+
+
+ The number of types specified.
+
+
+
+
+ The number of types specified.
+
+
+
+
+ Defines arrays of colors and positions used for interpolating color blending in a multicolor gradient. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified number of colors and positions.
+
+ The number of colors and positions in this .
+
+
+
+ Tests whether the specified object is a class and is equivalent to this class.
+
+ The object to test.
+ True if is a class equivalent to this class; otherwise, false.
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets an array of colors that represents the colors to use at corresponding positions along a gradient.
+
+ An array of structures that represents the colors to use at corresponding positions along a gradient.
+
+
+
+ Gets or sets the positions along a gradient line.
+
+ An array of values that specify percentages of distance along the gradient line.
+
+
+
+ Color comparison method to adjust to nearest neighbor
+
+
+
+
+ The euclidian method
+
+
+
+
+ Colors quantization methods
+
+
+
+
+ Nothing color quantization method is used
+
+
+
+
+ The popularity method
+
+
+
+
+ Translates colors to and from GDI+ Color structures. This class cannot be inherited.
+
+
+
+
+ Takes color from the HTML color.
+
+ HTML color.
+ The color.
+
+
+
+ Takes color from the OLE color.
+
+ OLE color.
+ The color.
+
+
+
+ Takes color from the HTML color.
+
+ Win32 color.
+ The color.
+
+
+
+ Creates HTML color from the color.
+
+ The color class.
+ The html string color.
+
+
+
+ Translates OLE color to color.
+
+ The color.
+ The OLE color.
+
+
+
+ Translates the color to win32 color.
+
+ The color.
+ The win32 color.
+
+
+
+ Specifies individual channels in the CMYK (cyan, magenta, yellow, black) color space. This enumeration is used by the SetOutputChannel methods.
+
+
+
+
+ The cyan color channel.
+
+
+
+
+ The magenta color channel.
+
+
+
+
+ The yellow color channel.
+
+
+
+
+ The black color channel.
+
+
+
+
+ The last selected channel should be used.
+
+
+
+
+ The Tiff image exception
+
+
+
+
+ The image exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The error.
+
+
+
+ Initializes a new instance of the class.
+
+ The error.
+
+
+
+ Gets the tiff options error.
+
+
+ The tiff options error.
+
+
+
+
+ The limit memory exception. Occurs when memory usage should be reduced.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The reduce memory factor.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+ The reduce memory factor.
+
+
+
+ Gets or sets the reduce memory factor.
+
+
+ The reduce memory factor.
+
+
+
+
+ The Aspose.Imaging.CoreExceptions namespace contains Aspose.Imaging exceptions.
+
+
+
+
+ Occurs when an operation is interrupted.
+
+
+
+
+ The imaging framework exception. This class is a core class for all Aspose.CAD exceptions.
+ Introduced to discriminate between the exceptions thrown by the Aspose.CAD engine and all other exception types.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ RD optimization error exception class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+
+
+
+ Data mismatch exception class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+
+
+
+ The exception that is thrown when XMP has invalid structure.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Custom exception for evaluation errors
+
+
+
+
+ Gets the message associated with this exception
+
+
+
+
+ The namespace DIB header processing.
+
+
+
+
+ exif color space enum.
+
+
+
+
+ SRGB color space.
+
+
+
+
+ Adobe rgb color space.
+
+
+
+
+ Uncalibrated color space.
+
+
+
+
+ exif normal soft hard enum.
+
+
+
+
+ Normal contrast.
+
+
+
+
+ Low contrast.
+
+
+
+
+ High contrast.
+
+
+
+
+ exif custom rendered enum.
+
+
+
+
+ Normal render process.
+
+
+
+
+ Custom render process.
+
+
+
+
+ exif exposure mode enum.
+
+
+
+
+ Auto exposure.
+
+
+
+
+ Manual exposure.
+
+
+
+
+ Auto bracket.
+
+
+
+
+ exif exposure program enum.
+
+
+
+
+ Not defined.
+
+
+
+
+ Manual program.
+
+
+
+
+ Auto exposure.
+
+
+
+
+ Aperture priority.
+
+
+
+
+ Shutter priority.
+
+
+
+
+ Creative program.
+
+
+
+
+ Action program.
+
+
+
+
+ Portrait mode.
+
+
+
+
+ Landscape mode.
+
+
+
+
+ exif file source enum.
+
+
+
+
+ The others.
+
+
+
+
+ Film scanner.
+
+
+
+
+ Reflexion print scanner.
+
+
+
+
+ Digital still camera.
+
+
+
+
+ Flash mode.
+
+
+
+
+ No flash fired.
+
+
+
+
+ Flash fired.
+
+
+
+
+ Flash fired, return light not detected.
+
+
+
+
+ Flash fired, return light detected.
+
+
+
+
+ Flash fired, compulsory flash mode.
+
+
+
+
+ Flash fired, compulsory mode, return light not detected.
+
+
+
+
+ Flash fired, compulsory mode, return light detected.
+
+
+
+
+ Flash did not fire, compulsory flash mode.
+
+
+
+
+ Flash did not fire, return light not detected.
+
+
+
+
+ Flash did not fire, auto mode.
+
+
+
+
+ Flash firedm auto mode.
+
+
+
+
+ Flash fired, auto mode, return light not detected.
+
+
+
+
+ Flash fired, auto mode, return light detected.
+
+
+
+
+ No flash function.
+
+
+
+
+ exif gain control enum.
+
+
+
+
+ No gain control.
+
+
+
+
+ Low gain up.
+
+
+
+
+ High gain up.
+
+
+
+
+ Low gain down.
+
+
+
+
+ High gain down.
+
+
+
+
+ exif gps altitude ref enum.
+
+
+
+
+ Above sea level.
+
+
+
+
+ Below sea level.
+
+
+
+
+ The exif light source.
+
+
+
+
+ The unknown.
+
+
+
+
+ The daylight.
+
+
+
+
+ The fluorescent.
+
+
+
+
+ The tungsten.
+
+
+
+
+ The flash.
+
+
+
+
+ The fineweather.
+
+
+
+
+ The cloudyweather.
+
+
+
+
+ The shade.
+
+
+
+
+ The daylight fluorescent.
+
+
+
+
+ The day white fluorescent.
+
+
+
+
+ The cool white fluorescent.
+
+
+
+
+ The white fluorescent.
+
+
+
+
+ The standardlight a.
+
+
+
+
+ The standardlight b.
+
+
+
+
+ The standardlight c.
+
+
+
+
+ The d55 value(5500K).
+
+
+
+
+ The d65 value(6500K).
+
+
+
+
+ The d75 value(7500K).
+
+
+
+
+ The d50 value(5000K).
+
+
+
+
+ The iso studio tungsten lightsource.
+
+
+
+
+ The otherlightsource.
+
+
+
+
+ exif metering mode enum.
+
+
+
+
+ Undefined mode
+
+
+
+
+ Average metering
+
+
+
+
+ Center weighted average.
+
+
+
+
+ Spot metering
+
+
+
+
+ Multi spot metering
+
+
+
+
+ Multi segment metering.
+
+
+
+
+ Partial metering.
+
+
+
+
+ For other modes.
+
+
+
+
+ Exif image orientation.
+
+
+
+
+ Top left. Default orientation.
+
+
+
+
+ Top right. Horizontally reversed.
+
+
+
+
+ Bottom right. Rotated by 180 degrees.
+
+
+
+
+ Bottom left. Rotated by 180 degrees and then horizontally reversed.
+
+
+
+
+ Left top. Rotated by 90 degrees counterclockwise and then horizontally reversed.
+
+
+
+
+ Right top. Rotated by 90 degrees clockwise.
+
+
+
+
+ Right bottom. Rotated by 90 degrees clockwise and then horizontally reversed.
+
+
+
+
+ Left bottom. Rotated by 90 degrees counterclockwise.
+
+
+
+
+ exif saturation enum.
+
+
+
+
+ Normal saturation.
+
+
+
+
+ Low saturation.
+
+
+
+
+ High saturation.
+
+
+
+
+ exif scene capture type enum.
+
+
+
+
+ Standard scene.
+
+
+
+
+ Landscape scene.
+
+
+
+
+ Portrait scene.
+
+
+
+
+ Night scene.
+
+
+
+
+ exif sensing method enum.
+
+
+
+
+ Not defined.
+
+
+
+
+ One chip color area.
+
+
+
+
+ Two chip color area.
+
+
+
+
+ Three chip color area.
+
+
+
+
+ Color Sequential area.
+
+
+
+
+ Trilinear sensor.
+
+
+
+
+ Color sequential linear sensor.
+
+
+
+
+ exif subject distance range enum.
+
+
+
+
+ Unknown subject distance range
+
+
+
+
+ Macro range
+
+
+
+
+ Close view.
+
+
+
+
+ Distant view.
+
+
+
+
+ exif unit enum.
+
+
+
+
+ Undefined units
+
+
+
+
+ Inch units
+
+
+
+
+ Metric centimeter units
+
+
+
+
+ exif white balance enum.
+
+
+
+
+ Auto white balance
+
+
+
+
+ Manual white balance
+
+
+
+
+ exif y cb cr positioning enum.
+
+
+
+
+ Centered YCbCr
+
+
+
+
+ Co-sited position
+
+
+
+
+ The namespace contains EXIF enumerations.
+
+
+
+
+ EXIF data container.
+
+
+
+
+ Represents general class for working with tiff data types.
+
+
+
+
+ Determines if specific tag exists.
+
+ The tag identifier.
+ True if tag exists.
+
+
+
+ Removes the tag by identifier.
+
+ The tag identifier.
+
+
+
+ Gets the section tags.
+
+ The section identifier. - 1 in case all tags are needed.
+ The tiff tags
+
+
+
+ Sets the section tags.
+
+ The section to set tags for. -1 in case you wish to set tags according to section specification.
+ The tags to set.
+
+
+
+ Gets the TiffLongType tag value at 0 index.
+
+ The tag key.
+ The default value.
+ The the TiffLongType tag value at 0 index.
+
+
+
+ Sets the TiffLongType type value as uint[1] with .
+
+ The tag key.
+ The value.
+ The section to set for.
+
+
+
+ Gets the TiffByteType value.
+
+ The tag key.
+ The TiffByteType byte[] value.
+
+
+
+ Sets the TiffByteType value.
+
+ The tag key.
+ The value to set.
+ The section to set.
+
+
+
+ Gets the TiffSRationalType value at index 0.
+
+ The tag key.
+ The TiffSRationalType type value.
+
+
+
+ Sets the TiffSRationalType value type as TiffSRational[1] with value.
+
+ The tag key.
+ The rational.
+ The section.
+
+
+
+ Gets the TiffRationalType value.
+
+ The tag key.
+ The TiffSRationalType type value.
+
+
+
+ Sets the TiffSRationalType value type.
+
+ The tag key.
+ The rational.
+ The section.
+
+
+
+ Gets the TiffRationalType value at index 0.
+
+ The tag key.
+ The TiffRationalType type value.
+
+
+
+ Sets the TiffRationalType type value as uint[1] with .
+
+ The tag key.
+ The value.
+ The section to set for.
+
+
+
+ Gets the TiffASCIIType value as string.
+
+ The tag key.
+ The TiffASCIIType type value.
+
+
+
+ Sets the TiffASCIIType type value with filled.
+
+ The tag key.
+ The value.
+ The section to set for.
+
+
+
+ Gets the TiffUndefinedType value as byte[].
+
+ The tag key.
+ The TiffUndefinedType type value.
+
+
+
+ Sets the TiffUndefinedType type value with filled.
+
+ The tag key.
+ The value.
+ The section to set for.
+
+
+
+ Gets the TiffShortType value at 0 index.
+
+ The tag key.
+ The default value.
+
+ The TiffShortType type value.
+
+
+
+
+ Sets the TiffShortType type value as ushort[1] with filled.
+
+ The tag key.
+ The value.
+ The section to set for.
+
+
+
+ Gets the TiffShortType value.
+
+ The tag key.
+ The TiffShortType value.
+
+
+
+ Sets the TiffShortType value.
+
+ The tag key.
+ The value.
+ The section.
+
+
+
+ Gets the TiffDataType by Id.
+
+ The tag key.
+ The TiffDataType or null.
+
+
+
+ Sets the TiffDataType.
+
+ The TiffDataType to set.
+ The section.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ Array of EXIF tags together with common and GPS tags.
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ The common tags.
+ The EXIF tags.
+ The GPS tags.
+
+
+
+ Remove tag from container
+
+ The tag to remove
+
+
+
+ Remove tag from container
+
+ The tag identifier to remove.
+
+
+
+ Gets short or long value.
+
+ The key to get value for.
+ Short or long value converted to integer.
+
+
+
+ Sets short or long value depending on the value.
+
+ The key to set for.
+ The value to set.
+ The section to put entry to.
+
+
+
+ Gets or sets a value indicating whether the stream EXIF data created from is big endian.
+
+
+ true if the stream EXIF data created from is big endian; otherwise, false.
+
+
+
+
+ Gets or sets the aperture value.
+
+
+ The aperture value.
+
+
+
+
+ Gets or sets camera body serial number.
+
+
+ The body serial number.
+
+
+
+
+ Gets or sets the brightness value.
+
+
+ The brightness value.
+
+
+
+
+ Gets or sets the CFA pattern.
+
+
+ The CFA pattern.
+
+
+
+
+ Gets or sets camera owner name
+
+
+ The name of the camera owner.
+
+
+
+
+ Gets or sets the color space.
+
+
+ The color space.
+
+
+
+
+ Gets or sets the components configuration.
+
+
+ The components configuration.
+
+
+
+
+ Gets or sets the compressed bits per pixel.
+
+
+ The compressed bits per pixel.
+
+
+
+
+ Gets or sets the contrast.
+
+
+ The contrast.
+
+
+
+
+ Gets or sets the custom rendered.
+
+
+ The custom rendered.
+
+
+
+
+ Gets or sets the date time digitized.
+
+
+ The date time digitized.
+
+
+
+
+ Gets or sets the date time original.
+
+
+ The date time original.
+
+
+
+
+ Gets or sets device settings description
+
+
+ The device setting description.
+
+
+
+
+ Gets or sets the digital zoom ratio.
+
+
+ The digital zoom ratio.
+
+
+
+
+ Gets or sets the EXIF version.
+
+
+ The EXIF version.
+
+
+
+
+ Gets or sets the exposure bias value.
+
+
+ The exposure bias value.
+
+
+
+
+ Gets or sets the exposure index.
+
+
+ The index of the exposure.
+
+
+
+
+ Gets or sets the exposure mode.
+
+
+ The exposure mode.
+
+
+
+
+ Gets or sets the exposure program.
+
+
+ The exposure program.
+
+
+
+
+ Gets or sets the exposure time.
+
+
+ The exposure time.
+
+
+
+
+ Gets or sets the F-number.
+
+
+ The F-number.
+
+
+
+
+ Gets or sets the file source type.
+
+
+ The file source type.
+
+
+
+
+ Gets or sets the flash.
+
+
+ The flash.
+
+
+
+
+ Gets or sets the flash energy.
+
+
+ The flash energy.
+
+
+
+
+ Gets or sets the flash pix version.
+
+
+ The flash pix version.
+
+
+
+
+ Gets or sets the focal length.
+
+
+ The length of the focal.
+
+
+
+
+ Gets or sets the focal length in 35 mm film.
+
+
+ The focal length in35 mm film.
+
+
+
+
+ Gets or sets the focal plane resolution unit.
+
+
+ The focal plane resolution unit.
+
+
+
+
+ Gets or sets the focal plane x resolution.
+
+
+ The focal plane x resolution.
+
+
+
+
+ Gets or sets the focal plane y resolution.
+
+
+ The focal plane y resolution.
+
+
+
+
+ Gets or sets the GPS altitude.
+
+
+ The GPS altitude.
+
+
+
+
+ Gets or sets the GPS altitude used as the reference altitude.
+
+
+ The GPS altitude used as the reference altitude.
+
+
+
+
+ Gets or sets the GPS area information.
+
+
+ The GPS area information.
+
+
+
+
+ Gets or sets the GPS DOP (data degree of precision).
+
+
+ The GPS DOP (data degree of precision).
+
+
+
+
+ Gets or sets the GPS bearing to the destination point.
+
+
+ The GPS bearing to the destination point.
+
+
+
+
+ Gets or sets the GPS reference used for giving the bearing to the destination point.
+
+
+ The GPS reference used for giving the bearing to the destination point.
+
+
+
+
+ Gets or sets the GPS distance to the destination point.
+
+
+ The GPS distance to the destination point.
+
+
+
+
+ Gets or sets the GPS unit used to express the distance to the destination point.
+
+
+ The GPS unit used to express the distance to the destination point.
+
+
+
+
+ Gets or sets the GPS latitude of the destination point.
+
+
+ The GPS latitude of the destination point.
+
+
+
+
+ Gets or sets the GPS value which indicates whether the latitude of the destination point is north or south latitude.
+
+
+ The GPS value which indicates whether the latitude of the destination point is north or south latitude.
+
+
+
+
+ Gets or sets the GPS longitude of the destination point.
+
+
+ The GPS longitude of the destination point.
+
+
+
+
+ Gets or sets the GPS value which indicates whether the longitude of the destination point is east or west longitude.
+
+
+ The GPS value which indicates whether the longitude of the destination point is east or west longitude.
+
+
+
+
+ Gets or sets a GPS value which indicates whether differential correction is applied to the GPS receiver.
+
+
+ The GPS value which indicates whether differential correction is applied to the GPS receiver.
+
+
+
+
+ Gets or sets the GPS direction of the image when it was captured.
+
+
+ The GPS direction of the image when it was captured.
+
+
+
+
+ Gets or sets the GPS reference for giving the direction of the image when it is captured.
+
+
+ The GPS reference for giving the direction of the image when it is captured.
+
+
+
+
+ Gets or sets the GPS character string recording date and time information relative to UTC (Coordinated Universal Time).
+
+
+ The GPS character string recording date and time information relative to UTC (Coordinated Universal Time).
+
+
+
+
+ Gets or sets the GPS latitude.
+
+
+ The GPS latitude.
+
+
+
+
+ Gets or sets the GPS latitude is north or south latitude.
+
+
+ The GPS latitude is north or south latitude.
+
+
+
+
+ Gets or sets the GPS longitude.
+
+
+ The GPS longitude.
+
+
+
+
+ Gets or sets the GPS longitude is east or west longitude.
+
+
+ The GPS longitude is east or west longitude.
+
+
+
+
+ Gets or sets the GPS geodetic survey data used by the GPS receiver.
+
+
+ The GPS geodetic survey data used by the GPS receiver.
+
+
+
+
+ Gets or sets the GPS measurement mode.
+
+
+ The GPS measurement mode.
+
+
+
+
+ Gets or sets the GPS character string recording the name of the method used for location finding.
+
+
+ The GPS character string recording the name of the method used for location finding.
+
+
+
+
+ Gets or sets the GPS satellites used for measurements.
+
+
+ The GPS satellites used for measurements.
+
+
+
+
+ Gets or sets the speed of GPS receiver movement.
+
+
+ The speed of GPS receiver movement.
+
+
+
+
+ Gets or sets the unit used to express the GPS receiver speed of movement.
+
+
+ The unit used to express the GPS receiver speed of movement.
+
+
+
+
+ Gets or sets the status of the GPS receiver when the image is recorded.
+
+
+ The status of the GPS receiver when the image is recorded.
+
+
+
+
+ Gets or sets the GPS time as UTC (Coordinated Universal Time).
+
+
+ The GPS time as UTC (Coordinated Universal Time).
+
+
+
+
+ Gets or sets direction of GPS receiver movement.
+
+
+ The direction of GPS receiver movement.
+
+
+
+
+ Gets or sets the reference for giving the direction of GPS receiver movement.
+
+
+ The reference for giving the direction of GPS receiver movement.
+
+
+
+
+ Gets or sets the GPS version identifier.
+
+
+ The GPS version identifier.
+
+
+
+
+ Gets or sets the degree of overall image gain adjustment.
+
+
+ The degree of overall image gain adjustment.
+
+
+
+
+ Gets or sets the gamma.
+
+
+ The gamma value.
+
+
+
+
+ Gets or sets ISO speed
+
+
+ The ISO speed.
+
+
+
+
+ Gets or sets the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232.
+
+
+ The ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232.
+
+ This tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz
+
+
+
+ Gets or sets the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232.
+
+
+ The ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232.
+
+ This tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy
+
+
+
+ Gets or sets the photographic sensitivity.
+
+
+ The photographic sensitivity.
+
+
+
+
+ Gets or sets the image unique identifier.
+
+
+ The image unique identifier.
+
+
+
+
+ Gets or sets the maker of lens.
+
+
+ The lens maker.
+
+
+
+
+ Gets or sets the lens model.
+
+
+ The lens model.
+
+
+
+
+ Gets or sets the lens serial number.
+
+
+ The lens serial number.
+
+
+
+
+ Gets or sets the lens specification
+
+
+ The lens specification.
+
+
+
+
+ Gets or sets the light source.
+
+
+ The light source.
+
+
+
+
+ Gets the maker note data.
+
+
+ The maker note data.
+
+
+
+
+ Gets or sets the maker note raw data.
+
+
+ The maker note raw data.
+
+
+
+
+ Gets or sets the maximum aperture value.
+
+
+ The maximum aperture value.
+
+
+
+
+ Gets or sets the metering mode.
+
+
+ The metering mode.
+
+
+
+
+ Gets or sets the Opto-Electric Conversion Function (OECF) specified in ISO 14524.
+
+
+ The Opto-Electric Conversion Function (OECF) specified in ISO 14524.
+
+
+
+
+ Gets or sets the pixel x dimension.
+
+
+ The pixel x dimension.
+
+
+
+
+ Gets or sets the pixel y dimension.
+
+
+ The pixel y dimension.
+
+
+
+
+ Gets or sets all the EXIF tags (including common and GPS tags).
+
+
+ The EXIF tags (including common and GPS tags).
+
+
+
+
+ Gets or sets the recommended exposure index.
+
+
+ The recommended exposure index.
+
+
+
+
+ Gets or sets the related sound file.
+
+
+ The related sound file.
+
+
+
+
+ Gets or sets the saturation.
+
+
+ The saturation.
+
+
+
+
+ Gets or sets the scene capture type.
+
+
+ The type of the scene capture.
+
+
+
+
+ Gets or sets the scene type.
+
+
+ The type of the scene.
+
+
+
+
+ Gets or sets the sensing method.
+
+
+ The sensing method.
+
+
+
+
+ Gets or sets the sensitivity type.
+
+
+ The type of the sensitivity.
+
+
+
+
+ Gets or sets the sharpness.
+
+
+ The sharpness.
+
+
+
+
+ Gets or sets the shutter speed value.
+
+
+ The shutter speed value.
+
+
+
+
+ Gets or sets the spatial frequency response.
+
+
+ The spatial frequency response.
+
+
+
+
+ Gets or sets the spectral sensitivity.
+
+
+ The spectral sensitivity.
+
+
+
+
+ Gets or sets standard output sensitivity
+
+
+ The standard output sensitivity.
+
+
+
+
+ Gets or sets the subject area.
+
+
+ The subject area.
+
+
+
+
+ Gets or sets the subject distance.
+
+
+ The subject distance.
+
+
+
+
+ Gets or sets the subject distance range.
+
+
+ The subject distance range.
+
+
+
+
+ Gets or sets the subject location.
+
+
+ The subject location.
+
+
+
+
+ Gets or sets the fractions of seconds for the DateTime tag.
+
+
+ The fractions of seconds for the DateTime tag.
+
+
+
+
+ Gets or sets the fractions of seconds for the DateTimeDigitized tag.
+
+
+ The fractions of seconds for the DateTimeDigitized tag.
+
+
+
+
+ Gets or sets the fractions of seconds for the DateTimeOriginal tag.
+
+
+ The fractions of seconds for the DateTimeOriginal tag.
+
+
+
+
+ Gets or sets the user comment.
+
+
+ The user comment.
+
+
+
+
+ Gets or sets the white balance.
+
+
+ The white balance.
+
+
+
+
+ Gets or sets the chromaticity of the white point of the image.
+
+
+ The chromaticity of the white point of the image.
+
+
+
+
+ Gets or sets tags, which belong to common section. This applies only to jpeg images, in tiff format tiffOptions are being used instead
+
+
+ The common section tags.
+
+
+
+
+ Gets or sets tags which belong to EXIF section only.
+
+
+ The EXIF section tags.
+
+
+
+
+ Gets or sets tags, which belong to GPS section only.
+
+
+ The GPS tags.
+
+
+
+
+ Exif tags list
+
+
+
+
+ The number of columns of image data, equal to the number of pixels per row.
+
+
+
+
+ The number of rows of image data.
+
+
+
+
+ The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8.
+
+
+
+
+ The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted.
+
+
+
+
+ The pixel composition.
+
+
+
+
+ A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like.
+
+
+
+
+ The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown.
+
+
+
+
+ The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown.
+
+
+
+
+ The image orientation viewed in terms of rows and columns.
+
+
+
+
+ The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3.
+
+
+
+
+ The number of pixels per ResolutionUnit in the ImageWidth direction. When the image resolution is unknown, 72 [dpi] is designated.
+
+
+
+
+ The number of pixels per ResolutionUnit in the ImageLength direction. The same value as XResolution is designated.
+
+
+
+
+ Indicates whether pixel components are recorded in a chunky or planar format. If this field does not exist, the TIFF default of 1 (chunky) is assumed.
+
+
+
+
+ The unit for measuring XResolution and YResolution. The same unit is used for both XResolution and YResolution. If the image resolution is unknown, 2 (inches) is designated.
+
+
+
+
+ A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information ColorSpace tag.
+
+
+
+
+ This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown.
+
+
+
+
+ The date and time of image creation. In Exif standard, it is the date and time the file was changed.
+
+
+
+
+ This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James"
+
+
+
+
+ The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information ColorSpace tag.
+
+
+
+
+ The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information ColorSpace tag.
+
+
+
+
+ The matrix coefficients for transformation from RGB to YCbCr image data.
+
+
+
+
+ The sampling ratio of chrominance components in relation to the luminance component.
+
+
+
+
+ The position of chrominance components in relation to the
+ luminance component. This field is designated only for
+ JPEG compressed data or uncompressed YCbCr data. The TIFF
+ default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is
+ recommended in this standard that 2 (co-sited) be used to
+ record data, in order to improve the image quality when viewed
+ on TV systems. When this field does not exist, the reader shall
+ assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the
+ TIFF default (centered) is recommended. If the reader
+ does not have the capability of supporting both kinds of
+ YCbCrPositioning, it shall follow the TIFF default regardless
+ of the value in this field. It is preferable that readers "
+ be able to support both centered and co-sited positioning.
+
+
+
+
+ The reference black point value and reference white point
+ value. No defaults are given in TIFF, but the values below are given as defaults here.
+ The color space is declared
+ in a color space information tag, with the default
+ being the value that gives the optimal image characteristics
+ Interoperability these conditions
+
+
+
+
+ Copyright information. In this standard the tag is used to
+ indicate both the photographer and editor copyrights. It is
+ the copyright notice of the person or organization claiming
+ rights to the image. The Interoperability copyright
+ statement including date and rights should be written in this
+ field; e.g., "Copyright, John Smith, 19xx. All rights
+ reserved.". In this standard the field records both the
+ photographer and editor copyrights, with each recorded in a
+ separate part of the statement. When there is a clear distinction
+ between the photographer and editor copyrights, these are to be
+ written in the order of photographer followed by editor copyright,
+ separated by NULL (in this case since the statement also ends with
+ a NULL, there are two NULL codes). When only the photographer
+ copyright is given, it is terminated by one NULL code . When only
+ the editor copyright is given, the photographer copyright part
+ consists of one space followed by a terminating NULL code, then
+ the editor copyright is given. When the field is left blank, it is
+ treated as unknown.
+
+
+
+
+ Exposure time, given in seconds.
+
+
+
+
+ The F number.
+
+
+
+
+ The class of the program used by the camera to set exposure when the picture is taken.
+
+
+
+
+ Indicates the spectral sensitivity of each channel of the camera used.
+
+
+
+
+ Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.
+
+
+
+
+ Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524.
+
+
+
+
+ The exif version.
+
+
+
+
+ The date and time when the original image data was generated.
+
+
+
+
+ The date time digitized.
+
+
+
+
+ The components configuration.
+
+
+
+
+ Specific to compressed data; states the compressed bits per pixel.
+
+
+
+
+ The shutter speed value.
+
+
+
+
+ The lens aperture value.
+
+
+
+
+ The brightness value.
+
+
+
+
+ The exposure bias value.
+
+
+
+
+ The max aperture value.
+
+
+
+
+ The distance to the subject, given in meters.
+
+
+
+
+ The metering mode.
+
+
+
+
+ The kind light source.
+
+
+
+
+ Indicates the status of flash when the image was shot.
+
+
+
+
+ The actual focal length of the lens, in mm.
+
+
+
+
+ This tag indicates the location and area of the main subject in the overall scene.
+
+
+
+
+ A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer, but this tag should not be used for any other than its intended purpose.
+
+
+
+
+ A tag for Exif users to write keywords or comments on the image besides those in ImageDescription, and without the character code limitations of the ImageDescription tag.
+
+
+
+
+ A tag used to record fractions of seconds for the DateTime tag.
+
+
+
+
+ A tag used to record fractions of seconds for the DateTimeOriginal tag.
+
+
+
+
+ A tag used to record fractions of seconds for the DateTimeDigitized tag.
+
+
+
+
+ The Flashpix format version supported by a FPXR file.
+
+
+
+
+ The color space information tag (ColorSpace) is always recorded as the color space specifier.
+
+
+
+
+ The related sound file.
+
+
+
+
+ Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds(BCPS).
+
+
+
+
+ This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233.
+
+
+
+
+ Indicates the number of pixels in the image width (X) direction per FocalPlaneResolutionUnit on the camera focal plane.
+
+
+
+
+ Indicates the number of pixels in the image height (Y) direction per FocalPlaneResolutionUnit on the camera focal plane.
+
+
+
+
+ Indicates the unit for measuring FocalPlaneXResolution and FocalPlaneYResolution. This value is the same as the ResolutionUnit.
+
+
+
+
+ Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the Rotation tag.
+
+
+
+
+ Indicates the exposure index selected on the camera or input device at the time the image is captured.
+
+
+
+
+ Indicates the image sensor type on the camera or input device.
+
+
+
+
+ The file source.
+
+
+
+
+ Indicates the type of scene. If a DSC recorded the image, this tag value shall always be set to 1, indicating that the image was directly photographed.
+
+
+
+
+ Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods.
+
+
+
+
+ This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing.
+
+
+
+
+ This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings.
+
+
+
+
+ This tag indicates the white balance mode set when the image was shot.
+
+
+
+
+ This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used.
+
+
+
+
+ This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the FocalLength tag.
+
+
+
+
+ This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot.
+
+
+
+
+ This tag indicates the degree of overall image gain adjustment.
+
+
+
+
+ This tag indicates the direction of contrast processing applied by the camera when the image was shot.
+
+
+
+
+ This tag indicates the direction of saturation processing applied by the camera when the image was shot.
+
+
+
+
+ This tag indicates the direction of sharpness processing applied by the camera when the image was shot
+
+
+
+
+ This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader.
+
+
+
+
+ This tag indicates the distance to the subject.
+
+
+
+
+ The image unique id.
+
+
+
+
+ Indicates the version of GPSInfoIFD.
+
+
+
+
+ Indicates whether the latitude is north or south latitude.
+
+
+
+
+ Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and
+ seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be
+ dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two
+ decimal places, the format would be dd/1,mmmm/100,0/1.
+
+
+
+
+ Indicates whether the longitude is east or west longitude.
+
+
+
+
+ Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and
+ seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be
+ ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two
+ decimal places, the format would be ddd/1,mmmm/100,0/1.
+
+
+
+
+ Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level,
+ 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in
+ the GPSAltitude tag.
+
+
+
+
+ Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value.
+ The reference unit is meters.
+
+
+
+
+ Indicates the time as UTC (Coordinated Universal Time). TimeStamp is expressed as three RATIONAL values
+ giving the hour, minute, and second.
+
+
+
+
+ Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites,
+ their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not
+ specified. If the GPS receiver is incapable of taking measurements, value of the tag shall be set to NULL.
+
+
+
+
+ Indicates the status of the GPS receiver when the image is recorded.
+
+
+
+
+ Indicates the GPS measurement mode. - 2- or 3- dimensional.
+
+
+
+
+ Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement,
+ and PDOP during three-dimensional measurement.
+
+
+
+
+ Indicates the unit used to express the GPS receiver speed of movement. 'K' 'M' and 'N' represents kilometers per
+ hour, miles per hour, and knots.
+
+
+
+
+ Indicates the speed of GPS receiver movement.
+
+
+
+
+ Indicates the reference for giving the direction of GPS receiver movement. 'T' denotes true direction and 'M' is
+ magnetic direction.
+
+
+
+
+ Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99.
+
+
+
+
+ Indicates the reference for giving the direction of the image when it is captured. 'T' denotes true direction and 'M' is
+ magnetic direction.
+
+
+
+
+ Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99.
+
+
+
+
+ Indicates the geodetic survey data used by the GPS receiver.
+
+
+
+
+ Indicates whether the latitude of the destination point is north or south latitude. The ASCII value 'N' indicates north
+ latitude, and 'S' is south latitude.
+
+
+
+
+ Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the
+ degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical
+ format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are
+ given up to two decimal places, the format would be dd/1,mmmm/100,0/1.
+
+
+
+
+ Indicates whether the longitude of the destination point is east or west longitude. ASCII 'E' indicates east longitude,
+ and 'W' is west longitude.
+
+
+
+
+ Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the
+ degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical
+ format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are
+ given up to two decimal places, the format would be ddd/1,mmmm/100,0/1.
+
+
+
+
+ Indicates the reference used for giving the bearing to the destination point. 'T' denotes true direction and 'M' is
+ magnetic direction.
+
+
+
+
+ Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99.
+
+
+
+
+ Indicates the unit used to express the distance to the destination point. 'K', 'M' and 'N' represent kilometers, miles
+ and knots.
+
+
+
+
+ Indicates the distance to the destination point.
+
+
+
+
+ A character string recording the name of the method used for location finding.
+ The first byte indicates the character code used, and this is followed by the name
+ of the method.
+
+
+
+
+ A character string recording the name of the GPS area. The first byte indicates
+ the character code used, and this is followed by the name of the GPS area.
+
+
+
+
+ A character string recording date and time information relative to UTC
+ (Coordinated Universal Time). The format is YYYY:MM:DD.
+
+
+
+
+ Indicates whether differential correction is applied to the GPS receiver.
+
+
+
+
+ For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes.
+ Aux tag.
+
+
+
+
+ The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data.
+
+
+
+
+ The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1.
+
+
+
+
+ A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF.
+
+
+
+
+ The gps ifd pointer.
+
+
+
+
+ The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips.
+
+
+
+
+ The total number of bytes in each strip.
+
+
+
+
+ Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image shall be recorded in this tag, whether or not there is padding data or a restart marker.
+
+
+
+
+ Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image shall be recorded in this tag
+
+
+
+
+ Gamma value
+
+
+
+
+ Type of photographic sensitivity
+
+
+
+
+ Indicates standard output sensitivity of camera
+
+
+
+
+ Indicates recommended exposure index
+
+
+
+
+ Information about iso speed value as defined in ISO 12232
+
+
+
+
+ This tag indicates ISO speed latitude yyy value as defined in ISO 12232
+
+
+
+
+ This tag indicates ISO speed latitude zzz value as defined in ISO 12232
+
+
+
+
+ Contains camera owner name
+
+
+
+
+ Contains camera body serial number
+
+
+
+
+ This tag records lens manufacturer
+
+
+
+
+ This tag records lens`s model name and model number
+
+
+
+
+ This tag records the serial number of interchangable lens
+
+
+
+
+ This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length and minimum F number in maximum focal length
+
+
+
+
+ EXIF data container for jpeg files.
+
+
+
+
+ The maximum EXIF segment size in bytes allowed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ Array of EXIF tags together with common and GPS tags.
+
+
+
+ Initializes a new instance of the class with data from array.
+
+ The common tags.
+ The EXIF tags.
+ The GPS tags.
+
+
+
+ Serializes the EXIF data. Writes the tags values and contents. The most influencing size tag is Thumbnail tag contents.
+
+ The serialized EXIF data.
+ The overall segment size must be less than or equal to MaxExifSegmentSize bytes in order to produce correct jpeg image.
+ Hint: try to reduce the thumbnail size or change its compression in case you have too big EXIF section size.
+
+
+
+
+ Gets or sets the artist.
+
+
+ The artist.
+
+
+
+
+ Gets or sets the bits per sample.
+
+
+ The bits per sample.
+
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Gets or sets the copyright.
+
+
+ The copyright.
+
+
+
+
+ Gets or sets the date time.
+
+
+ The date time.
+
+
+
+
+ Gets or sets the image description.
+
+
+ The image description.
+
+
+
+
+ Gets or sets the image length.
+
+
+ The length of the image.
+
+
+
+
+ Gets or sets the image width.
+
+
+ The width of the image.
+
+
+
+
+ Gets or sets the manufacturer of the recording equipment.
+
+
+ The manufacturer of the recording equipment.
+
+
+
+
+ Gets or sets the model.
+
+
+ The model.
+
+
+
+
+ Gets or sets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets or sets the photometric interpretation.
+
+
+ The photometric interpretation.
+
+
+
+
+ Gets or sets the planar configuration.
+
+
+ The planar configuration.
+
+
+
+
+ Gets or sets the chromaticity of the three primary colors of the image.
+
+
+ The chromaticity of the three primary colors of the image.
+
+
+
+
+ Gets or sets the reference black white.
+
+
+ The reference black white.
+
+
+
+
+ Gets or sets the resolution unit.
+
+
+ The resolution unit.
+
+
+
+
+ Gets or sets the samples per pixel.
+
+
+ The samples per pixel.
+
+
+
+
+ Gets or sets the software.
+
+
+ The software.
+
+
+
+
+ Gets or sets the thumbnail image.
+
+
+ The thumbnail.
+
+
+
+
+ Gets or sets the transfer function.
+
+
+ The transfer function.
+
+
+
+
+ Gets or sets the x resolution.
+
+
+ The x resolution.
+
+
+
+
+ Gets or sets the matrix coefficients for transformation from RGB to YCbCr image data.
+
+
+ The matrix coefficients for transformation from RGB to YCbCr image data.
+
+
+
+
+ Gets or sets the position of chrominance components in relation to the luminance component.
+
+
+ The position of chrominance components in relation to the luminance component.
+
+
+
+
+ Gets or sets the sampling ratio of chrominance components in relation to the luminance component.
+
+
+ The sampling ratio of chrominance components in relation to the luminance component.
+
+
+
+
+ Gets or sets the y resolution.
+
+
+ The y resolution.
+
+
+
+
+ The namespace contains EXIF related helper classes and methods.
+
+
+
+
+ The namespace contains EXIF related helper classes and methods.
+
+
+
+
+ The APS Rendering Mode
+
+
+
+
+ The PDF
+
+
+
+
+ The GDI
+
+
+
+
+ Contains extension methods for and .
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Contains extension methods.
+
+
+
+
+ Converts the to .
+
+ The color blend.
+ The converted .
+
+
+
+ The extension methods.
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Converts the array to the array.
+
+ The array to convert.
+ The converted array.
+
+
+
+ The extension methods.
+
+
+
+
+ Converts the to the .
+
+ The color map to convert.
+
+ The converted .
+
+
+
+
+ Converts the array to the array.
+
+ The color maps to convert.
+
+ The converted array.
+
+
+
+
+ The extension methods.
+
+
+
+
+ Converts the to the .
+
+ The color matrix to convert.
+
+ The converted .
+
+
+
+
+ Contains extension methods.
+
+
+
+
+ Determines whether single file format is defined.
+
+ The file format to check.
+
+ True if single file format is defined; otherwise, false.
+
+
+
+
+ Contains extension methods for the class.
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Converts the to the .
+
+ The to convert.
+ New graphics unit
+ The converted .
+
+
+
+ Contains the extension methods.
+
+
+
+
+ Converts the to the .
+
+ The graphics path to convert.
+ The converted .
+
+
+
+ Contains extension methods for and .
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Contains extension methods for conversions based on and .
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+ Warning, the GDI image may get lower bounds than has. To get all parts of the image use more safe extension method ToGdiImageFull.
+
+
+
+ Contains the class extensions.
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ The namespace contains extension methods.
+
+
+
+
+ Contains extension methods for and .
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Contains extension methods for and structures.
+
+
+
+
+ Converts the array to the array.
+
+ The array to convert.
+ The converted array.
+
+
+
+ Converts the array to the array.
+
+ The array to convert.
+ The converted array.
+
+
+
+ Converts the to .
+
+ The to convert.
+ The converted .
+
+
+
+ Contains extension methods for .
+
+
+
+
+ Converts the to the .
+
+ The rectangle to convert.
+ The converted .
+
+
+
+ Converts the to the .
+
+ The rectangle to convert.
+ The converted .
+
+
+
+ Unions two rectangle.
+
+ The first rectangle.
+ The second rectangle.
+ New rectangle as union operation result
+
+
+
+ Contains extension methods for the class.
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ Contains extension methods for conversion the and the classes.
+
+
+
+
+ Converts Aspose.Imaging.RotateFlipType to System.Drawing.RotateFlipType.
+
+ Type of the rotate flip.
+ The gdi RotateFlipType
+
+
+
+ Contains extension methods for the class.
+
+
+
+
+ Converts the to the .
+
+ The to convert.
+ The converted .
+
+
+
+ The data stream container.
+
+
+
+
+ The timeout to wait for synchronization
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Saves the object's data to the current .
+
+
+
+
+ Saves the object's data to the specified stream.
+
+ The stream to save the object's data to.
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+ Does the after save.
+
+ The stream.
+
+
+
+ Saves the object's data to the specified file location.
+
+ The file path to save the object's data to.
+
+
+
+ Saves the object's data to the specified file location.
+
+ The file path to save the object's data to.
+ if set to true over write the file contents, otherwise append will occur.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Called when data stream container is changing.
+
+ The stream container.
+
+
+
+ Gets the object's data stream.
+
+ The object's data stream.
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data readig is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ The raster image 32-bit ARGB pixel loader.
+
+
+
+
+ The raster image raw data loader.
+
+
+
+
+ Loads raw data.
+
+ The rectangle to load raw data from.
+ The raw data settings to use for loaded data. Note if data is not in the format specified then data conversion will be performed.
+ The raw data loader.
+
+
+
+ Gets a value indicating whether raw data loading is supported.
+
+
+ true if raw data loading is supported; otherwise, false.
+
+
+
+
+ Gets the current raw data settings. Note when using these settings the data loads without conversion.
+
+
+ The current raw data settings.
+
+
+
+
+ Loads 32-bit ARGB pixels partially (by blocks).
+
+ The rectangle to load pixels from.
+ The partial pixel loader.
+
+
+
+ Represents a raster image supporting raster graphics operations.
+
+
+
+
+ The image is the base class for all type of images.
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The color palette.
+
+
+
+
+ Determines whether image can be loaded from the specified file path.
+
+
+ The file path.
+
+
+ true if image can be loaded from the specified file; otherwise, false.
+
+
+
+
+ Determines whether image can be loaded from the specified file path and optionally using the specified open options.
+
+
+ The file path.
+
+
+ The load options.
+
+
+ true if image can be loaded from the specified file; otherwise, false.
+
+
+
+
+ Determines whether image can be loaded from the specified stream.
+
+
+ The stream to load from.
+
+
+ true if image can be loaded from the specified stream; otherwise, false.
+
+
+
+
+ Determines whether image can be loaded from the specified stream and optionally using the specified .
+
+
+ The stream to load from.
+
+
+ The load options.
+
+
+ true if image can be loaded from the specified stream; otherwise, false.
+
+
+
+
+ Creates a new image using the specified create options.
+
+
+ The image options.
+
+
+ The width.
+
+
+ The height.
+
+
+ The newly created image.
+
+
+
+
+ Gets the file format.
+
+
+ The file path.
+
+
+ The determined file format.
+
+
+ The file format determined does not mean that the specified image may be loaded. Use one of the CanLoad method overloads to determine whether file may be loaded.
+
+
+
+
+ Gets the file format.
+
+
+ The stream.
+
+
+ The determined file format.
+
+
+ The file format determined does not mean that the specified image may be loaded. Use one of the CanLoad method overloads to determine whether stream may be loaded.
+
+
+
+
+ Gets rectangle which fits the current image.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The object width.
+
+
+ The object height.
+
+
+ The fitting rectangle or exception if no fitting rectangle can be found.
+
+
+
+
+ Gets rectangle which fits the current image.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The 32-bit ARGB pixels.
+
+
+ The object width.
+
+
+ The object height.
+
+
+ The fitting rectangle or exception if no fitting rectangle can be found.
+
+
+
+
+ Loads a new image from the specified file.
+
+ The file path to load image from.
+ The load options.
+
+ The loaded image.
+
+
+
+
+ Loads a new image from the specified file.
+
+
+ The file path to load image from.
+
+
+ The loaded image.
+
+
+
+
+ Loads a new image from the specified stream.
+
+ The stream to load image from.
+ The load options.
+
+ The loaded image.
+
+
+
+
+ Loads a new image from the specified stream.
+
+
+ The stream to load image from.
+
+
+ The loaded image.
+
+
+
+
+ Determines whether image can be saved to the specified file format represented by the passed save options.
+
+
+ The save options to use.
+
+
+ true if image can be saved to the specified file format represented by the passed save options; otherwise, false.
+
+
+
+
+ Resizes the image. The default is used.
+
+
+ The new width.
+
+
+ The new height.
+
+
+
+
+ Resizes the image.
+
+
+ The new width.
+
+
+ The new height.
+
+
+ The resize type.
+
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Gets the default options.
+
+ The arguments.
+ Default options
+
+
+
+ Gets the options based on the original file settings.
+ This can be helpful to keep bit-depth and other parameters of the original image unchanged.
+ For example, if we load a black-white PNG image with 1 bit per pixel and then save it using the
+ method, the output PNG image with 8-bit per pixel will be produced.
+ To avoid it and save PNG image with 1-bit per pixel, use this method to get corresponding saving options and pass them
+ to the method as the second parameter.
+
+ The options based on the original file settings.
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+ Type of the resize.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+ Type of the resize.
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+ The image resize settings.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+ The image resize settings.
+
+
+
+ Rotates, flips, or rotates and flips the image.
+
+
+ Type of the rotate flip.
+
+
+
+
+ Saves the image data to the underlying stream.
+
+
+
+
+ Saves the object's data to the specified file location in the specified file format according to save options.
+
+
+ The file path.
+
+
+ The options.
+
+
+
+
+ Saves the object's data to the specified file location in the specified file format according to save options.
+
+ The file path.
+ The options.
+ The destination image bounds rectangle. Set the empty rectangle for use sourse bounds.
+ options
+ Image saving failed.
+
+
+
+ Saves the image's data to the specified stream in the specified file format according to save options.
+
+ The stream to save the image's data to.
+ The save options.
+ optionsBase
+ Cannot save to the specified format as it is not supported at the moment.;optionsBase
+ Image export failed.
+
+
+
+ Saves the image's data to the specified stream in the specified file format according to save options.
+
+ The stream to save the image's data to.
+ The save options.
+ The destination image bounds rectangle. Set the empty rectangle for use sourse bounds.
+ optionsBase
+ Cannot save to the specified format as it is not supported at the moment.;optionsBase
+ Image export failed.
+
+
+
+ Sets the image palette.
+
+
+ The palette to set.
+
+
+ if set to true colors will be updated according to the new palette; otherwise color indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no corresponding palette entries.
+
+
+
+
+ Gets a proportional width.
+
+ The width.
+ The height.
+ The new height.
+ The proportional width.
+
+
+
+ Gets a proportional height.
+
+ The width.
+ The height.
+ The new width.
+ The proportional height.
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Gets the can not save message.
+
+ The image options.
+
+ The can not save message.
+
+
+ The can not save message.
+
+
+
+
+ Gets rectangle which fits the current image.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The fitting rectangle
+
+
+
+
+ Gets the image to export.
+
+ The image options base.
+ The image to export
+
+
+
+ Gets rectangle which fits the current bitmap taking into account the pixels passed. The passed pixels array count should be equal to the fitting rectangle size.
+
+
+ The rectangle to get fitting rectangle for.
+
+
+ The 32-bit ARGB pixels array.
+
+
+ The fitting rectangle.
+
+
+
+
+ Called when palette is changed.
+
+
+ The old palette.
+
+
+ The new palette.
+
+
+
+
+ Called when palette is changing.
+
+
+ The old palette.
+
+
+ The new palette.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Does the after load.
+
+ The maximum processed value.
+ The stream.
+
+
+
+ Does the after load.
+
+ The maximum processed value.
+ Size of the image.
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets the image bounds.
+
+ The image bounds.
+
+
+
+ Gets the container.
+
+
+ The container.
+
+
+ If this property is not null it indicates the image is contained whithin another image.
+
+
+
+
+ Gets the image height.
+
+ The image height.
+
+
+
+ Gets or sets the color palette.
+
+ The color palette.
+
+
+
+ Gets the image size.
+
+ The image size.
+
+
+
+ Gets the image width.
+
+ The image width.
+
+
+
+ Gets or sets the interrupt monitor.
+
+
+
+
+ Gets or sets the buffer size hint which is defined max allowed size for all internal buffers.
+
+
+ The buffer size hint, in megabytes.
+ Non-positive value means no memory limitation for internal buffers
+
+
+
+
+ Gets or sets a value indicating whether automatic adjust palette.
+
+
+ true if enable automatic adjust palette; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether image has background color.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets or sets a value for the background color.
+
+
+
+
+ Image operations
+
+
+
+
+ Resize operation
+
+
+
+
+ Resize width proportionally operation
+
+
+
+
+ Resize height proportionally operation
+
+
+
+
+ Filter operation
+
+
+
+
+ Load pixels operation
+
+
+
+
+ The save pixels operation
+
+
+
+
+ Crop operation
+
+
+
+
+ Binarize fixed operation
+
+
+
+
+ Binarize otsu operation
+
+
+
+
+ Binarize bradley operation
+
+
+
+
+ Grayscale operation
+
+
+
+
+ Adjust brightness operation
+
+
+
+
+ Adjust contrast operation
+
+
+
+
+ Adjust gamma operation
+
+
+
+
+ Rotate operation
+
+
+
+
+ Rotate flip operation
+
+
+
+
+ The XMP metadata
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Gets the date and time the resource image was last modified.
+
+ if set to true uses the information from FileInfo as default value.
+ The date and time the resource image was last modified.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Gets the default pixels array using partial pixel loader.
+
+ The rectangle to get pixels for.
+ The partial pixel loader.
+
+
+
+ Gets the default raw data array using partial pixel loader.
+
+ The rectangle to get pixels for.
+ The partial raw data loader.
+ The raw data settings.
+
+
+
+ Gets the default 32-bit ARGB pixels array.
+
+ The rectangle to get pixels for.
+ The default pixels array.
+
+
+
+ Gets the default raw data array.
+
+ The rectangle to get raw data for.
+ The raw data settings.
+
+ The default raw data array.
+
+
+
+
+ Gets an image 32-bit ARGB pixel.
+
+ The pixel x location.
+ The pixel y location.
+ The 32-bit ARGB pixel for the specified location.
+
+
+
+ Gets an image pixel.
+
+ The pixel x location.
+ The pixel y location.
+ The pixel color for the specified location.
+
+
+
+ Sets an image 32-bit ARGB pixel for the specified position.
+
+ The pixel x location.
+ The pixel y location.
+ The 32-bit ARGB pixel for the specified position.
+
+
+
+ Sets an image pixel for the specified position.
+
+ The pixel x location.
+ The pixel y location.
+ The pixel color for the specified position.
+
+
+
+ Reads the whole scan line by the specified scan line index.
+
+ Zero based index of the scan line.
+ The scan line pixel color values array.
+
+
+
+ Reads the whole scan line by the specified scan line index.
+
+ Zero based index of the scan line.
+ The scan line 32-bit ARGB color values array.
+
+
+
+ Writes the whole scan line to the specified scan line index.
+
+ Zero based index of the scan line.
+ The pixel colors array to write.
+
+
+
+ Writes the whole scan line to the specified scan line index.
+
+ Zero based index of the scan line.
+ The 32-bit ARGB colors array to write.
+
+
+
+ Loads 32-bit ARGB pixels partially by packs.
+
+ The desired rectangle.
+ The 32-bit ARGB pixel loader.
+
+
+
+ Loads pixels partially by packs.
+
+ The desired rectangle.
+ The pixel loader.
+
+
+
+ Loads 32-bit ARGB pixels.
+
+ The rectangle to load pixels from.
+
+ The loaded 32-bit ARGB pixels array.
+
+
+
+
+ Loads 64-bit ARGB pixels.
+
+ The rectangle to load pixels from.
+
+ The loaded 64-bit ARGB pixels array.
+
+
+
+
+ Loads pixels.
+
+ The rectangle to load pixels from.
+
+ The loaded pixels array.
+
+
+
+
+ Loads pixels in CMYK format.
+ This method is deprecated. Please use more effective the method.
+
+ The rectangle to load pixels from.
+
+ The loaded CMYK pixels array.
+
+
+
+
+ Loads pixels in CMYK format.
+
+ The rectangle to load pixels from.
+
+ The loaded CMYK pixels presentes as 32-bit inateger values.
+
+
+
+
+ Loads raw data.
+
+ The rectangle to load raw data from.
+ The raw data settings to use for loaded data. Note if data is not in the format specified then data conversion will be performed.
+ The raw data loader.
+
+
+
+ Loads raw data.
+
+ The rectangle to load raw data from.
+ The dest image bounds.
+ The raw data settings to use for loaded data. Note if data is not in the format specified then data conversion will be performed.
+ The raw data loader.
+
+
+
+ Saves the raw data.
+
+ The raw data.
+ The starting raw data offset.
+ The raw data rectangle.
+ The raw data settings the data is in.
+
+
+
+ Saves the 32-bit ARGB pixels.
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Saves the pixels.
+
+ The rectangle to save pixels to.
+ The pixels array.
+
+
+
+ Converts raster image to the bitmap.
+
+ The bitmap
+
+
+
+ Saves the pixels.
+ This method is deprecated. Please use more effective the method.
+
+ The rectangle to save pixels to.
+ The CMYK pixels array.
+
+
+
+ Saves the pixels.
+
+ The rectangle to save pixels to.
+ The CMYK pixels presented as the 32-bit integer values.
+
+
+
+ Sets the resolution for this .
+
+ The horizontal resolution, in dots per inch, of the .
+ The vertical resolution, in dots per inch, of the .
+
+
+
+ Sets the image palette.
+
+ The palette to set.
+ if set to true colors will be updated according to the new palette; otherwise color indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no corresponding palette entries.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image with extended options.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Crops the specified rectangle.
+
+ The rectangle.
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+ The size of s x s window of pixels centered around this pixel
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Crop image with shifts.
+
+ The left shift.
+ The right shift.
+ The top shift.
+ The bottom shift.
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+
+
+
+ Gets the skew angle.
+ This method is applicable to scanned text documents, to determine the skew angle when scanning.
+
+ The skew angle, in degrees.
+
+
+
+ Normalizes the angle.
+ This method is applicable to scanned text documents to get rid of the skewed scan.
+ This method uses and methods.
+
+
+
+
+ Normalizes the angle.
+ This method is applicable to scanned text documents to get rid of the skewed scan.
+ This method uses and methods.
+
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Filters the specified rectangle.
+
+ The rectangle.
+ The options.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color to replace old color with.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color ARGB value to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color ARGB value to replace old color with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color to replace non transparent colors with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color ARGB value to replace non transparent colors with.
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Updates the image metadata.
+
+
+
+
+ Saves pixels (format specific method).
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets or sets a value indicating whether the image components must be premultiplied.
+
+
+ true if the image components must be premultiplied; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to use raw data loading when the raw data loading is available.
+
+
+ true if use raw data loading when the raw data loading is available.; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to update the XMP metadata.
+
+
+ true if update the XMP metadata; otherwise, false.
+
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets or sets the indexed color converter
+
+
+ The indexed color converter
+
+
+
+
+ Gets or sets the custom color converter
+
+
+ The custom color converter
+
+
+
+
+ Gets or sets the fallback index to use when palette index is out of bounds
+
+
+ The fallback index to use when palette index is out of bounds
+
+
+
+
+ Gets the current raw data settings. Note when using these settings the data loads without conversion.
+
+
+ The current raw data settings.
+
+
+
+
+ Gets the raw data format.
+
+
+ The raw data format.
+
+
+
+
+ Gets the raw line size in bytes.
+
+
+ The raw line size in bytes.
+
+
+
+
+ Gets a value indicating whether raw data loading is available.
+
+
+ true if this raw data loading is available; otherwise, false.
+
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+ The horizontal resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+ The vertical resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets a value indicating whether image has transparent color.
+
+
+
+
+ Gets a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets the image transparent color.
+
+
+
+
+ Gets opacity of this image.
+
+
+ The opacity value between 0.0 (fully transparent) and 1.0 (fully opaque).
+
+
+
+
+ Gets or sets the data loader.
+
+
+ The data loader.
+
+
+
+
+ Сolor mode for jpeg images.
+
+
+
+
+ The Grayscale image.
+
+
+
+
+ YCbCr image, standard option for jpeg images.
+
+
+
+
+ 4-component CMYK image.
+
+
+
+
+ The ycck color jpeg image. Needs icc profile for saving.
+
+
+
+
+ The RGB Color mode.
+
+
+
+
+ The Aspose.Imaging.FileFormats namespace contains namespaces used to process various image formats.
+
+
+
+
+ The namespace contains classes for PDF file format integration.
+
+
+
+
+ The common options for convertion to PDF
+
+
+
+
+ Specifies how many levels of outline items to include in the document outline.
+ 0 - no outline, 1 - one outline level and so on.
+ Default is 0.
+
+
+
+
+ Specifies how many levels in the document outline to show expanded when the PDF file is viewed.
+ 0 - the document outline is not expanded.
+ 1 - first level items in the document are expanded and so on.
+ Default is 0.
+
+
+
+
+ Specifies at which level in the document outline to display bookmark objects.
+ 0 - not displayed.
+ 1 at first level and so on.
+ Default is 0.
+
+
+
+
+ Specifies the quality of JPEG compression for images (if JPEG compression is used).
+ Default is 95.
+
+
+
+
+ This class represents set of metadata for document description.
+
+
+
+
+ Gets or sets keywords of the document.
+
+
+
+
+ Gets or sets title of the document.
+
+
+
+
+ Gets or sets author of the document.
+
+
+
+
+ Gets or sets subject of the document.
+
+
+
+
+ Options for CCITT Group 3/4 fax encoding.
+ Possible values for GROUP3OPTIONS / TiffTag.T4OPTIONS and
+ TiffTag.GROUP4OPTIONS / TiffTag.T6OPTIONS tags.
+
+
+
+
+ 1-dimensional coding. (default)
+
+
+
+
+ 2-dimensional coding.
+
+
+
+
+ Data not compressed.
+
+
+
+
+ Fill to byte boundary.
+
+
+
+
+ The namespace contains Tiff file format enumerations.
+
+
+
+
+ Specifies the alpha storage for tiff documents.
+
+
+
+
+ The alpha is not specified and stored in the tiff file.
+
+
+
+
+ The alpha value is stored in premultiplied form. When alpha is restored there may be some rounding effects and restored value may be different from the original.
+
+
+
+
+ The alpha value is stored in unassociated form. That means that alpha restored is exactly the same as it was stored to the tiff.
+
+
+
+
+ The byte order for the tiff image
+
+
+
+
+ The big endian byte order (Motorola).
+
+
+
+
+ The little endian byte order (Intel).
+
+
+
+
+ Holds compression types
+
+
+
+
+ Dump mode.
+
+
+
+
+ CCITT modified Huffman RLE.
+
+
+
+
+ CCITT Group 3 fax encoding.
+
+
+
+
+ CCITT Group 4 fax encoding.
+
+
+
+
+ Lempel-Ziv & Welch.
+
+
+
+
+ Original JPEG / Old-style JPEG (6.0).
+
+
+
+
+ JPEG DCT compression. Introduced post TIFF rev 6.0.
+
+
+
+
+ NeXT 2-bit RLE.
+
+
+
+
+ CCITT RLE.
+
+
+
+
+ Macintosh RLE.
+
+
+
+
+ ThunderScan RLE.
+
+
+
+
+ IT8 CT w/padding. Reserved for ANSI IT8 TIFF/IT.
+
+
+
+
+ IT8 Linework RLE. Reserved for ANSI IT8 TIFF/IT.
+
+
+
+
+ IT8 Monochrome picture. Reserved for ANSI IT8 TIFF/IT.
+
+
+
+
+ IT8 Binary line art. Reserved for ANSI IT8 TIFF/IT.
+
+
+
+
+ Pixar companded 10bit LZW. Reserved for Pixar.
+
+
+
+
+ Pixar companded 11bit ZIP. Reserved for Pixar.
+
+
+
+
+ Deflate compression.
+
+
+
+
+ Deflate compression, as recognized by Adobe.
+
+
+
+
+ Kodak DCS encoding.
+ Reserved for Oceana Matrix
+
+
+
+
+ ISO Jpeg big.
+
+
+
+
+ SGI Log Luminance RLE.
+
+
+
+
+ SGI Log 24-bit packed.
+
+
+
+
+ Leadtools JPEG2000.
+
+
+
+
+ The tiff data type enum.
+
+
+
+
+ 8-bit unsigned integer.
+
+
+
+
+ 8-bit bytes with last byte null.
+
+
+
+
+ 16-bit unsigned integer.
+
+
+
+
+ 32-bit unsigned integer.
+
+
+
+
+ 64-bit unsigned fraction.
+
+
+
+
+ 8-bit signed integer.
+
+
+
+
+ 8-bit untyped data.
+
+
+
+
+ 16-bit signed integer.
+
+
+
+
+ 32-bit signed integer.
+
+
+
+
+ 64-bit signed fraction.
+
+
+
+
+ 32-bit IEEE floating point.
+
+
+
+
+ 64-bit IEEE floating point.
+
+
+
+
+ Pointer to Exif image file directory (IFD).
+
+
+
+
+ The expected tiff file format.
+
+
+
+
+ The default tiff format is no compression with B/W 1 bit per pixel only format. You can also use this setting to get an empty options and initialize with your tags or other settings.
+
+
+
+
+ The tiff having LZW compression and B/W 1 bit per pixel only format.
+
+
+
+
+ The tiff having LZW compression and RGB color format.
+
+
+
+
+ The tiff having LZW compression and RGBA with transparency color format.
+
+
+
+
+ The tiff LZW cmyk
+
+
+
+
+ The tiff CCITT FAX3 encoding. B/W 1 bit per pixel only supported for that scheme.
+
+
+
+
+ The tiff CCITT FAX4 encoding. B/W 1 bit per pixel only supported for that scheme.
+
+
+
+
+ The tiff having deflate compression and B/W 1 bit per pixel only format.
+
+
+
+
+ The tiff having deflate compression and RGB color format.
+
+
+
+
+ The tiff having deflate compression and RGBA color format.
+
+
+
+
+ The tiff CCITT RLE encoding. B/W 1 bit per pixel only supported for that scheme.
+
+
+
+
+ The tiff having Jpeg compression and RGB color format.
+
+
+
+
+ The tiff having Jpeg compression and YCBCR color format.
+
+
+
+
+ The uncompressed tiff and B/W 1 bit per pixel only format.
+
+
+
+
+ The uncompressed tiff and RGB color format.
+
+
+
+
+ The uncompressed tiff and RGBA with transparency color format.
+
+
+
+
+ Specifies the TIFF file format standards.
+
+
+
+
+ The Baseline TIFF 6.0 file standard. This standard is formally known as TIFF 6.0, Part 1: Baseline TIFF.
+
+
+
+
+ The Extended TIFF 6.0 file standard. This standard is formally known as Extended TIFF 6.0, Part 2: TIFF Extensions.
+
+
+
+
+ Data order within a byte.
+ Possible values for FILLORDER tag.
+
+
+
+
+ Most significant -> least.
+
+
+
+
+ Least significant -> most.
+
+
+
+
+ The tiff new sub file type enum.
+
+
+
+
+ The default filetype.
+
+
+
+
+ The reduced image filetype.
+
+
+
+
+ The page filetype.
+
+
+
+
+ The mask filetype.
+
+
+
+
+ The last filetype.
+
+
+
+
+ The tiff options error codes.
+
+
+
+
+ No error code.
+
+
+
+
+ The color map is not defined.
+
+
+
+
+ The color map length is invalid.
+
+
+
+
+ The compression does not match the samples per pixel count.
+
+
+
+
+ The compression does not match the photometric settings.
+
+
+
+
+ The photometric does not match the samples per pixel count.
+
+
+
+
+ The alpha storage is not supported.
+
+
+
+
+ The photometric bits per sample is invalid
+
+
+
+
+ The specified TIFF options parameters don't conform to TIFF Baseline 6.0 standard
+
+
+
+
+ Image orientation.
+ Possible values for ORIENTATION tag.
+
+
+
+
+ Row 0 top, Column 0 lhs.
+
+
+
+
+ Row 0 top, Column 0 rhs.
+
+
+
+
+ Row 0 bottom, Column 0 rhs.
+
+
+
+
+ Row 0 bottom, Column 0 lhs.
+
+
+
+
+ Row 0 lhs, Column 0 top.
+
+
+
+
+ Row 0 rhs, Column 0 top.
+
+
+
+
+ Row 0 rhs, Column 0 bottom.
+
+
+
+
+ Row 0 lhs, Column 0 bottom.
+
+
+
+
+ Photometric interpolation enum
+
+
+
+
+ Min value is white.
+
+
+
+
+ Min value is black.
+
+
+
+
+ RGB color model.
+
+
+
+
+ Color map indexed.
+
+
+
+
+ [obsoleted by TIFF rev. 6.0] Holdout mask.
+
+
+
+
+ Color separations.
+
+
+
+
+ The CCIR 601.
+
+
+
+
+ 1976 CIE L*a*b*.
+
+
+
+
+ ICC L*a*b*. Introduced post TIFF rev 6.0 by Adobe TIFF Technote 4.
+
+
+
+
+ ITU L*a*b*.
+
+
+
+
+ CIE Log2(L).
+
+
+
+
+ CIE Log2(L) (u',v').
+
+
+
+
+ Storage organization.
+ Possible values for PLANARCONFIG tag.
+
+
+
+
+ Single image plane.
+
+
+
+
+ Separate planes of data.
+
+
+
+
+ Prediction scheme for LZW
+
+
+
+
+ No prediction scheme used.
+
+
+
+
+ Horizontal differencing.
+
+
+
+
+ Tiff Resolution Unit Enum
+
+
+
+
+ No meaningful units.
+
+
+
+
+ English system.
+
+
+
+
+ Metric system.
+
+
+
+
+ Sample format enum
+
+
+
+
+ Unsigned integer data
+
+
+
+
+ Signed integer data
+
+
+
+
+ IEEE floating point data
+
+
+
+
+ Untyped data
+
+
+
+
+ Complex signed int
+
+
+
+
+ Complex ieee floating
+
+
+
+
+ The tiff tag enum.
+
+
+
+
+ Subfile data descriptor.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Kind of data in subfile.
+
+
+
+
+ Image width in pixels.
+
+
+
+
+ Image height in pixels.
+
+
+
+
+ Bits per channel (sample).
+
+
+
+
+ Data compression technique.
+
+
+
+
+ Photometric interpretation.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Thresholding used on data.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Dithering matrix width.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Dithering matrix height.
+
+
+
+
+ Data order within a byte.
+
+
+
+
+ Name of document which holds for image.
+
+
+
+
+ Information about image.
+
+
+
+
+ Scanner manufacturer name.
+
+
+
+
+ Scanner model name/number.
+
+
+
+
+ Offsets to data strips.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Image orientation.
+
+
+
+
+ Samples per pixel.
+
+
+
+
+ Rows per strip of data.
+
+
+
+
+ Bytes counts for strips.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Minimum sample value.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Maximum sample value.
+
+
+
+
+ Pixels/resolution in x.
+
+
+
+
+ Pixels/resolution in y.
+
+
+
+
+ Storage organization.
+
+
+
+
+ Page name image is from.
+
+
+
+
+ X page offset of image lhs.
+
+
+
+
+ Y page offset of image lhs.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Byte offset to free block.
+
+
+
+
+ [obsoleted by TIFF rev. 5.0]
+ Sizes of free blocks.
+
+
+
+
+ [obsoleted by TIFF rev. 6.0]
+ Gray scale curve accuracy.
+
+
+
+
+ [obsoleted by TIFF rev. 6.0]
+ Gray scale response curve.
+
+
+
+
+ TIFF 6.0 proper name alias for GROUP3OPTIONS.
+ Options for CCITT Group 3 fax encoding. 32 flag bits.
+
+
+
+
+ Options for CCITT Group 4 fax encoding. 32 flag bits.
+ TIFF 6.0 proper name alias for GROUP4OPTIONS.
+
+
+
+
+ Units of resolutions.
+
+
+
+
+ Page numbers of multi-page.
+
+
+
+
+ [obsoleted by TIFF rev. 6.0]
+ Color curve accuracy.
+
+
+
+
+ Colorimetry info.
+
+
+
+
+ Name & release.
+
+
+
+
+ Creation date and time.
+
+
+
+
+ Creator of image.
+
+
+
+
+ Machine where created.
+
+
+
+
+ Prediction scheme w/ LZW.
+
+
+
+
+ Image white point.
+
+
+
+
+ Primary chromaticities.
+
+
+
+
+ RGB map for pallette image.
+
+
+
+
+ Highlight + shadow info.
+
+
+
+
+ Tile width in pixels.
+
+
+
+
+ Tile height in pixels.
+
+
+
+
+ Offsets to data tiles.
+
+
+
+
+ Byte counts for tiles.
+
+
+
+
+ Lines with wrong pixel count.
+
+
+
+
+ Regenerated line info.
+
+
+
+
+ Max consecutive bad lines.
+
+
+
+
+ Subimage descriptors.
+
+
+
+
+ Inks in separated image.
+
+
+
+
+ ASCII names of inks.
+
+
+
+
+ Number of inks.
+
+
+
+
+ 0% and 100% dot codes.
+
+
+
+
+ Separation target.
+
+
+
+
+ Information about extra samples.
+
+
+
+
+ Data sample format.
+
+
+
+
+ Variable MinSampleValue.
+
+
+
+
+ Variable MaxSampleValue.
+
+
+
+
+ Variable TransferRange
+
+
+
+
+ ClipPath. Introduced post TIFF rev 6.0 by Adobe TIFF technote 2.
+
+
+
+
+ XClipPathUnits. Introduced post TIFF rev 6.0 by Adobe TIFF technote 2.
+
+
+
+
+ YClipPathUnits. Introduced post TIFF rev 6.0 by Adobe TIFF technote 2.
+
+
+
+
+ Indexed. Introduced post TIFF rev 6.0 by Adobe TIFF Technote 3.
+
+
+
+
+ JPEG table stream. Introduced post TIFF rev 6.0.
+
+
+
+
+ OPI Proxy. Introduced post TIFF rev 6.0 by Adobe TIFF technote.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ JPEG processing algorithm.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ Pointer to SOI marker.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ JFIF stream length
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ Restart interval length.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ Lossless proc predictor.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ Lossless point transform.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ Q matrice offsets.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ DCT table offsets.
+
+
+
+
+ [obsoleted by Technical Note #2 which specifies a revised JPEG-in-TIFF scheme]
+ AC coefficient offsets.
+
+
+
+
+ RGB -> YCbCr transform.
+
+
+
+
+ YCbCr subsampling factors.
+
+
+
+
+ Subsample positioning.
+
+
+
+
+ Colorimetry info.
+
+
+
+
+ XML packet. Introduced post TIFF rev 6.0 by Adobe XMP Specification, January 2004.
+
+
+
+
+ OPI ImageID. Introduced post TIFF rev 6.0 by Adobe TIFF technote.
+
+
+
+
+ Image reference points. Private tag registered to Island Graphics.
+
+
+
+
+ Copyright string. This tag is listed in the TIFF rev. 6.0 w/ unknown ownership.
+
+
+
+
+ The embedded ICC device profile
+
+
+
+
+ A pointer to the Exif IFD.
+
+
+
+
+ Thresholding used on data.
+
+
+
+
+ No dithering is performed.
+
+
+
+
+ Dithered scan.
+
+
+
+
+ Usually Floyd-Steinberg.
+
+
+
+
+ The namespace contains Tiff file format stream handling classes.
+
+
+
+
+ The tiff stream for handling big endian tiff file format.
+
+
+
+
+ The tiff stream for handling little endian tiff file format.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+ The start index into .
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+ The start index into .
+ Length of the data.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream container.
+
+
+
+ Reads an array of byte values from the stream.
+
+ The array to fill.
+ The array index to start putting values to.
+ The stream position to read from.
+ The elements count to read.
+
+ The array of byte values.
+
+
+
+
+ Reads an array of unsigned byte values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of unsigned byte values.
+
+
+
+
+ Read a single double value from the stream.
+
+ The position to read from.
+
+ The single double value.
+
+
+
+
+ Reads an array of double values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of double values.
+
+
+
+
+ Read a single float value from the stream.
+
+ The position to read from.
+
+ The single float value.
+
+
+
+
+ Reads an array of float values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of float values.
+
+ count;Expected a positive number.
+
+
+
+ Read a single rational number value from the stream.
+
+ The position to read from.
+
+ The rational number.
+
+
+
+
+ Read a single signed rational number value from the stream.
+
+ The position to read from.
+
+ The signed rational number.
+
+
+
+
+ Reads an array of rational values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of rational values.
+
+ count;Expected a positive number.
+
+
+
+ Reads an array of signed rational values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of signed rational values.
+
+ count;Expected a positive number.
+
+
+
+ Reads signed byte data from the stream.
+
+ The position to read from.
+
+ The signed byte value.
+
+
+
+
+ Reads an array of signed byte values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of signed byte values.
+
+
+
+
+ Read signed integer value from the stream.
+
+ The position to read from.
+
+ A signed integer value.
+
+
+
+
+ Reads an array of signed integer values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of signed integer values.
+
+ count;Total bytes count is negative. + count + x4= + totalBytes
+
+
+
+ Read signed short value from the stream.
+
+ The position to read from.
+
+ A signed short value.
+
+
+
+
+ Reads an array of signed short values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of signed short values.
+
+ count;Expected a positive number.
+
+
+
+ Read unsigned integer value from the stream.
+
+ The position to read from.
+
+ An unsigned integer value.
+
+
+
+
+ Reads an array of unsigned integer values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of unsigned integer values.
+
+ count;Total bytes count is negative. + count + x4= + totalBytes
+
+
+
+ Read unsigned short value from the stream.
+
+ The position to read from.
+
+ An unsigned short value.
+
+
+
+
+ Reads an array of unsigned integer values from the stream.
+
+ The position to read from.
+ The elements count.
+
+ The array of unsigned integer values.
+
+ count;Total bytes count is negative. + count + x2= + totalBytes
+
+
+
+ Converts the underlying data to the stream container.
+
+ The start position to start conversion from.
+ The with converted data.
+
+
+
+ Performs a conversion to the double array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the float array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the integer array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the short array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the unsigned integer array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the unsigned short array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Gets the reader length.
+
+
+ The reader length.
+
+
+
+
+ Gets or sets a value indicating whether exceptions are thrown on incorrect data processing (reading or writing to stream).
+
+
+ true if exceptions are thrown on incorrect data processing; otherwise, the error conditions are silently ignored.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+ The start index into .
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array data.
+ The start index into .
+ Length of the data.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream container.
+
+
+
+ Performs a conversion to the double array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the float array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the integer array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the short array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the unsigned integer array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Performs a conversion to the unsigned short array.
+
+ The data to convert.
+
+ The converted array.
+
+
+
+
+ Tiff stream writer for big-endian streams.
+
+
+
+
+ Tiff stream writer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream writer.
+
+
+
+ Writes the specified data.
+
+ The data to write.
+ The data offset.
+ Length of the data to writer.
+
+
+
+ Writes the specified data.
+
+ The data to write.
+
+
+
+ Writes a single double value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of double values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single float value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of float values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single rational number value to the stream.
+
+ The value to write.
+
+
+
+ Writes a single signed rational number value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of unsigned rational values to the stream.
+
+ The array to write.
+
+
+
+ Writes an array of signed rational values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single signed byte value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of signed byte values to the stream.
+
+ The array to write.
+
+
+
+ Writes an array of integer values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single short value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of short values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single integer value to the stream.
+
+ The value to write.
+
+
+
+ Writes a single byte value to the stream.
+
+ The value to write.
+
+
+
+ Writes a single unsigned integer value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of unsigned integer values to the stream.
+
+ The array to write.
+
+
+
+ Writes a single unsigned short value to the stream.
+
+ The value to write.
+
+
+
+ Writes an array of unsigned short values to the stream.
+
+ The array to write.
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Gets an object that can be used to synchronize access to the synchronized resource.
+
+
+ The object that can be used to synchronize access to the synchronized resource.
+
+
+
+
+ Gets or sets the stream position.
+
+
+ The stream position.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream writer.
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Performs a conversion from the specific data type to the raw bytes.
+
+ The data to convert.
+ The destination array containing the converted data..
+
+
+
+ Factory for proper creation of tiff helper streams
+
+
+
+
+ Gets the tiff stream writer.
+
+ The stream container.
+ The byte order.
+
+ Tiff stream suitable for writing.
+
+
+
+
+ Gets the tiff stream reader.
+
+ The stream container.
+ The byte order.
+
+ Tiff stream suitable for reading.
+
+
+
+
+ Gets the tiff stream reader.
+
+ The bytes.
+ The bytes offset.
+ Length of the data.
+ The byte order.
+
+ Tiff stream suitable for reading.
+
+
+
+
+ The tiff tag creator.
+
+
+
+
+ Creates a new tag instance.
+
+ The tag id.
+
+ The newly created instance.
+
+
+
+
+ The namespace contains Tiff file format tag factory helper classes and interfaces.
+
+
+
+
+ Tag factory class
+
+
+
+
+ Creates a new data type instance.
+
+ The data type instance.
+ The tag id.
+
+ Tiff tag data type
+
+
+
+
+ The tiff data type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Reads the tag data.
+
+ The data stream.
+ The tag position.
+
+ The read tag.
+
+ dataStream
+
+
+
+ Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+
+ An object to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than .
+ Zero
+ This instance is equal to .
+ Greater than zero
+ This instance is greater than .
+
+ Expected TiffDataType type.
+
+
+
+ Performs a deep clone of this instance.
+
+ A deep clone of the current instance.
+
+
+
+ Writes the tag data.
+
+ The data stream.
+ The offset to write additional data to.
+ Unable to Write values for + this.TagType + Message : + exception.Message
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+ The actual bytes written.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Writes the tag value or additional offset.
+
+ The data stream.
+ The additional data offset.
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Creates a new instance.
+
+ A new instance.
+
+
+
+ Gets the count of elements.
+
+
+ The count of elements.
+
+
+
+
+ Gets tag id integer representation.
+
+
+
+
+ Gets the tag id.
+
+
+ The tag id.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+ This is the data bytes count aligned to word boundary.
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+ This is exact bytes count.
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether tag data is valid. The valid tag contains data which may be preserved. The invalid tag cannot be stored.
+
+
+ true if tag data is valid; otherwise, false.
+
+
+
+
+ The tiff rational type.
+
+
+
+
+ The epsilon for fraction calculation
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The nominator value.
+ The nominator will be used as the value specified and denominator will be equal 1.
+
+
+
+ Initializes a new instance of the class.
+
+ The nominator.
+ The denominator.
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+ The error allowed.
+ A rational number having error less than .
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+
+ A rational number having error less than .
+
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+ The error allowed.
+ A rational number having error less than .
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+
+ A rational number having error less than .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets the denominator.
+
+
+ The denominator.
+
+
+
+
+ Gets the nominator.
+
+
+ The nominator.
+
+
+
+
+ Gets the float value.
+
+
+ The float value.
+
+
+
+
+ Gets the double value.
+
+
+ The double value.
+
+
+
+
+ The tiff rational type.
+
+
+
+
+ The epsilon for fraction calculation
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The nominator value.
+ The nominator will be used as the value specified and denominator will be equal 1.
+
+
+
+ Initializes a new instance of the class.
+
+ The nominator.
+ The denominator.
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+ The error allowed.
+ A rational number having error less than .
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+
+ A rational number having error less than .
+
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+ The error allowed.
+ A rational number having error less than .
+
+
+
+ Approximates the provided value to a fraction.
+
+ The value.
+
+ A rational number having error less than .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets the denominator.
+
+
+ The denominator.
+
+
+
+
+ Gets the nominator.
+
+
+ The nominator.
+
+
+
+
+ Gets the float value.
+
+
+ The float value.
+
+
+
+
+ Gets the double value.
+
+
+ The double value.
+
+
+
+
+ The namespace contains Tiff file format tag classes.
+
+
+
+
+ The tiff ascii type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Writes the tag value or additional offset.
+
+ The data stream.
+ The additional data offset.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Gets or sets the text.
+
+
+ The text.
+
+
+
+
+ Gets the count of elements.
+
+
+ The count of elements.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only string is supported.
+
+
+
+ The tiff byte type.
+
+
+
+
+ The tiff common array type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the tag value or additional offset.
+
+ The data stream.
+ The additional data offset.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the count of elements.
+
+
+ The count of elements.
+
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the data.
+
+ The data stream.
+ The position.
+ The count.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The data.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only byte array is supported.
+
+
+
+ The tiff double type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+ The tag value cannot fit 4 bytes.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only double array is supported.
+
+
+
+ The tiff float type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only float array is supported.
+
+
+
+ Represents the TIFF Exif image file directory type class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only uint array is supported.
+
+
+
+ The tiff long type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only uint array is supported.
+
+
+
+ The tiff rational type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+ The tag value cannot fit 4 bytes.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only TiffRational array is supported.
+
+
+
+ The tiff signed byte type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The data.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only signed byte array is supported.
+
+
+
+ The tiff short type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only ushort array is supported.
+
+
+
+ The tiff signed long type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only signed integer array is supported.
+
+
+
+ The tiff signed rational type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+ The tag value cannot fit 4 bytes.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only TiffSRational array is supported.
+
+
+
+ The tiff signed short type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Writes the current tag value.
+
+ The data stream to write to.
+
+
+
+ Gets or sets the values.
+
+
+ The values.
+
+
+
+
+ Gets the values container.
+
+
+ The values container.
+
+
+
+
+ Gets the element size in bytes.
+
+
+ The element size in bytes.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only signed short array is supported.
+
+
+
+ The tiff undefined type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Initializes a new instance of the class.
+
+ The tag id.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Writes the tag value or additional offset.
+
+ The data stream.
+ The additional data offset.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Copies the instance data into the cloned type.
+
+ The cloned type.
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the count of elements.
+
+
+ The count of elements.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+ Only byte array is supported.
+
+
+
+ The unknown tiff type. In case the tiff tag cannot be recognized this type is instantinated.
+
+ Note the is not serialized back to stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to read from.
+ Type of the tag.
+ The tag id.
+ The count value.
+ The offset or value.
+
+
+
+ Writes the additional tag data.
+
+ The data stream.
+
+ The actual bytes written.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Reads the additional data.
+
+ The data stream.
+ The position to read from.
+ The count of elements.
+
+
+
+ Writes the tag value or additional offset.
+
+ The data stream.
+ The additional data offset.
+
+
+
+ Creates a new instance.
+
+
+ A new instance.
+
+
+
+
+ Gets the count of elements.
+
+
+ The count of elements.
+
+
+
+
+ Gets the offset value for an additional data or value itself in case count is 1.
+
+
+ The offset or value.
+
+
+
+
+ Gets the stream to read additional data from.
+
+
+ The stream to read data from.
+
+
+
+
+ Gets the tag type.
+
+
+ The tag type.
+
+
+
+
+ Gets the additional data size in bytes (in case the 12 bytes is not enough to fit the tag data).
+
+
+ The additional data size in bytes.
+
+
+
+
+
+ Gets or sets the value this data type contains.
+
+
+ The value.
+
+
+
+
+
+ The namespace handles Psd file format processing.
+
+
+
+
+ Special exception for class.
+
+
+
+
+
+ General imaging vector formats renderer font settings.
+
+
+
+
+ Gets a copy of the array that contains the list of folders where Aspose.Words looks for TrueType fonts.
+
+
+ The returned value is a copy of the data that Aspose.Words uses. If you change the entries in the returned array,
+ it will have no effect on document rendering. To specify new font locations use the method.
+
+ A copy of the current font locations.
+
+
+
+ Gets the default fonts folders.
+
+ Returns system folder
+
+
+
+ This is a shortcut to for setting only one font directory.
+ There are no checks performed on the fonts folder.
+
+ The font folder.
+
+
+
+ Sets the folders where TrueType fonts are loaded from and clears all loaded fonts.
+ There are no checks performed on the fonts folders.
+
+ The fonts folders.
+ if set to true [recursive].
+
+
+
+ Resets the fonts folder and default font name to the system default.
+
+
+
+
+ Updates fonts cache for PSD files that contain text layers. This method guarantees that fonts from folder fontsFolder using
+ method FontSettings.SetFontsFolder(fontsFolder) or after reset fonts using FontSettings.Reset() will be taken into consideration when processing PSD files. Please use this method each time when
+ FontSettings.SetFontsFolder(fontsFolder) or FontSettings.Reset() called for PSD images. Without calling this Method there is no guarantee that fonts will be updated.
+
+
+
+
+ Gets or sets the default name of the font.
+
+
+ The default name of the font.
+
+
+
+
+ The partial data loader.
+
+
+
+
+ Processes the loaded data.
+
+ The data rectangle.
+ The raw data.
+ The start data point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end data point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ Processes the loaded data.
+
+ The data rectangle.
+ The raw data.
+ The start data point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end data point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+ The load options.
+
+
+
+ Represents the image creators registry.
+
+
+
+
+ Registers the specified image creator descriptor.
+
+ The image creator descriptor.
+
+
+
+ Gets the fist found supported descriptor suitable for the specified.
+
+ The image options.
+
+ The creator descriptor which supports the specified or null if no such descriptor is found.
+
+
+ The first creator descriptor will be actually the last registered.
+
+
+
+
+ Creates the first found creator suitable for the specified.
+
+ The image options.
+
+ The creator which supports the specified or null if no such creator is found.
+
+
+ The first creator will be actually the last registered.
+
+
+
+
+ Registers the creator.
+
+ The creator descriptor to register.
+
+
+
+ Unregisters the creator.
+
+ The creator descriptor.
+
+
+
+ Gets the registered image creation formats.
+
+ The registered image creation formats.
+
+
+
+ Gets the registered descriptors.
+
+ The registered descriptors.
+
+
+
+ Represents the image exporters registry.
+
+
+
+
+ Registers the specified image exporter descriptor.
+
+ The image exporter descriptor.
+
+
+
+ Gets the fist found supported descriptor suitable for the specified save options and image.
+
+ The image to export.
+ The options.
+
+ The exporter descriptor which supports the specified image and save options or null if no such descriptor is found.
+
+
+ The first exporter descriptor will be actually the last registered.
+
+
+
+
+ Creates the first found exporter suitable for the specified save options and image.
+
+ The image to export.
+ The save options to use for export.
+ The exporter which supports the specified image and save options or null if no such exporter is found.
+ The first exporter will be actually the last registered.
+
+
+
+ Registers the exporter.
+
+ The exporter descriptor to register.
+
+
+
+ Unregisters the exporter.
+
+ The exporter descriptor to unregister.
+
+
+
+ Gets the registered export formats.
+
+ The registered export formats.
+
+
+
+ Gets the registered exporter descriptors.
+
+ The registered exporter descriptors.
+
+
+
+ Big Rectangular Filter Options
+
+
+
+
+ Filter Options Base, abstract class
+
+
+
+
+ The Bilateral Smoothing Filter Options.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the kernal.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the size of the kernel.
+
+
+ The size of the kernel.
+
+
+
+
+ Gets or sets the spatial factor.
+
+
+ The spatial factor.
+
+
+
+
+ Gets or sets the spatial power.
+
+
+ The spatial power.
+
+
+
+
+ Gets or sets the color factor.
+
+
+ The color factor.
+
+
+
+
+ Gets or sets the color power.
+
+
+ The color power.
+
+
+
+
+ The convolution filter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the factor.
+
+
+ The factor.
+
+
+
+
+ Gets or sets the bias.
+
+
+ The bias.
+
+
+
+
+ Deconvolution Filter Options, abstract class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the SNR(signal-to-noise ratio)
+ recommended range 0.002 - 0.009, default value = 0.007
+
+
+ The SNR.
+
+
+
+
+ Gets or sets the brightness.
+ recommended range 1 - 1.5
+ default value = 1.15
+
+
+ The brightness.
+
+
+
+
+ Gets or sets a value indicating whether this is grayscale.
+ Return grayscale mode or RGB mode.
+
+
+ true if grayscale; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is partial loaded.
+
+
+ true if this instance is partial loaded; otherwise, false.
+
+
+
+
+ The Gaussian blur
+
+
+
+
+ Initializes a new instance of the class.
+
+ The radius.
+ The sigma.
+
+
+
+ Initializes a new instance of the class.
+ With default settings.
+
+
+
+
+ Gets or sets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets or sets the sigma.
+
+
+ The sigma.
+
+
+
+
+ Gauss Wiener Filter Options
+ Deblur gauss
+
+
+
+
+ Initializes a new instance of the class.
+
+ The radius.
+ The smooth.
+
+
+
+ Initializes a new instance of the class.
+ With default settings.
+
+
+
+
+ Gets or sets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets or sets the smooth.
+
+
+ The smooth.
+
+
+
+
+ Median filter
+
+
+
+
+ Initializes a new instance of the class.
+
+ The size of filter rectangle.
+
+
+
+ Gets or sets the size.
+
+
+ The size of filter rectangle.
+
+
+
+
+ Deconvolution filter options
+ deblur motion
+
+
+
+
+ Initializes a new instance of the class.
+
+ The length.
+ The smooth.
+ The angle in gradus.
+
+
+
+ Gets or sets the length.
+
+
+ The length.
+
+
+
+
+ Gets or sets the smooth.
+
+
+ The smooth.
+
+
+
+
+ Gets or sets the angle in gradus.
+
+
+ The angle.
+
+
+
+
+ The namespace handles Filter options.
+
+
+
+
+ The Sharpen filter options
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the kernel.
+ The sigma.
+
+
+
+ Initializes a new instance of the class.
+ With default settings.
+
+
+
+
+ Gets or sets the size.
+
+
+ The size.
+
+
+
+
+ Gets or sets the sigma.
+
+
+ The sigma.
+
+
+
+
+ Small rectangular filter options
+
+
+
+
+ Represents the image loaders registry.
+
+
+
+
+ Registers the specified image loader descriptor.
+
+ The image loader descriptor.
+
+
+
+ Gets the first supported descriptor by its type name.
+
+ The descriptor type name.
+ The first found loader descriptor or null if not such descriptor is found.
+ The first loader descriptor will be actually the last registered.
+
+
+
+ Gets the first supported file format by its type name.
+
+ The supported descriptor file format.
+ The first found loader descriptor or null if not such descriptor is found.
+ The first loader descriptor will be actually the last registered.
+
+
+
+ Gets the fist found supported descriptor suitable for the specified and optionally the .
+
+ The stream.
+ The load options.
+
+ The loader descriptor which supports the specified and or null if no such descriptor is found.
+
+
+ The first loader descriptor will be actually the last registered.
+
+
+
+
+ Creates the first found loader suitable for the specified and optionally the .
+
+ The stream.
+ The load options.
+
+ The loader which supports the specified and or null if no such loader is found.
+
+
+ The first loader will be actually the last registered.
+
+
+
+
+ Registers the loader.
+
+ The loader descriptor to register.
+
+
+
+ Unregisters the loader.
+
+ The loader descriptor to unregister.
+
+
+
+ Gets the registered image loading formats.
+
+ The registered image loading formats.
+
+
+
+ Gets the registered descriptors.
+
+ The registered descriptors.
+
+
+
+ the CMX exporter options.
+
+
+
+
+
+ The vector rasterization options.
+
+
+
+
+ The image base options.
+
+
+
+
+ XMP metadata of image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image options.
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Clones this instance.
+
+ Returns shallow copy of this instance
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the source to create image in.
+
+ The source to create image in.
+
+
+
+ Gets or sets the color palette.
+
+ The color palette.
+
+
+
+ Gets or sets the resolution settings.
+
+
+
+
+ Gets or sets the vector rasterization options.
+
+
+ The vector rasterization options.
+
+
+
+
+ Gets or sets the buffer size hint which is defined max allowed size for all internal buffers.
+
+
+ The buffer size hint, in megabytes.
+ Non-positive value means no memory limitation for internal buffers
+
+
+
+
+ The multipage options
+
+
+
+
+ Gets or sets the progress event handler.
+
+
+ The progress event handler.
+
+
+
+
+ Copies to.
+
+ The vector rasterization options.
+
+
+
+ Gets or sets the border X.
+
+
+ The border X.
+
+
+
+
+ Gets or sets the border Y.
+
+
+ The border Y.
+
+
+
+
+ Gets or sets a value indicating whether center drawing.
+
+
+
+
+ Gets or sets the page height.
+
+
+
+
+ Gets or sets the page size.
+
+
+
+
+ Gets or sets the page width.
+
+
+
+
+ Gets or sets a background color.
+
+
+
+
+ Gets or sets a foreground color.
+
+
+
+
+ Gets or sets the smoothing mode.
+
+
+ The smoothing mode.
+
+
+
+
+ Gets or sets the text rendering hint.
+
+
+ The text rendering hint.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the positioning.
+
+
+ The positioning.
+
+
+
+
+ Represents graphics options for embedded bitmap.
+
+
+
+
+ Initializes a new instance of the GraphicsOptions class.
+
+
+
+
+ Gets or sets text rendering hint.
+
+
+
+
+ Gets or sets smoothing mode.
+
+
+
+
+ Gets or sets interpolation mode.
+
+
+
+
+ Represents multipage mode
+
+
+
+
+ Used page indicies
+
+
+
+
+ Used page titles
+
+
+
+
+ Used range of pages
+
+
+
+
+ Used all pages
+
+
+
+
+ Base class for multiple pages supported formats
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The pages.
+
+
+
+ Initializes a new instance of the class.
+
+ The array of pages.
+ The export area.
+
+
+
+ Initializes a new instance of the class.
+
+ The page titles.
+
+
+
+ Initializes a new instance of the class.
+
+ The page titles.
+ The export area.
+
+
+
+ Initializes a new instance of the class.
+
+ The .
+
+
+
+ Initializes a new instance of the class.
+
+ The .
+ The export area.
+
+
+
+ Initializes a new instance of the class.
+
+ The .
+
+
+
+ Initializes a new instance of the class.
+
+ The .
+ The export area.
+
+
+
+ Initializes a new instance of the class.
+
+ The page index.
+
+
+
+ Initializes a new instance of the class.
+
+ The page index.
+ The export area.
+
+
+
+ Initializes the pages from ranges array
+
+ The ranges.
+
+
+
+ Checks the mode application.
+
+ The mode indexes.
+
+
+
+ Gets or sets the pages.
+
+
+ The pages.
+
+
+
+
+ Gets or sets the page titles.
+
+
+ The page titles.
+
+
+
+
+ Gets or sets the export area.
+
+
+ The export area.
+
+
+
+
+ Gets or sets the mode.
+
+
+ The mode.
+
+
+
+
+ Gets or sets the output layers names(Works if export format supports layers naming, for example for Psd)
+
+
+ The output layers names.
+
+
+
+
+ The PDF options.
+
+
+
+
+ Gets or sets metadata for document.
+
+
+
+
+ The PDF core options
+
+
+
+
+ Gets or sets the size of the page.
+
+
+ The size of the page.
+
+
+
+
+ Positioning and size types for graphics scene.
+
+
+
+
+ The absolute positioning on the page that is defined by document page settings.
+
+
+
+
+ The absolute positioning on the page that is defined by options page settings.
+
+
+
+
+ The relative positioning and size. Determined by the boundary of all graphics objects.
+
+
+
+
+ Contains the current build version information.
+
+
+
+
+ The assembly version.
+
+
+
+
+ The file version.
+
+
+
+
+ The product title.
+
+
+
+
+ The major product version.
+
+
+
+
+ The minor product version.
+
+
+
+
+ The product build number
+
+
+
+
+ The product release date.
+
+
+
+
+ The memory management global configuration
+
+
+
+
+ Gets or sets the buffer size hint which is defined max allowed size for all internal buffers.
+
+
+ The buffer size hint, in megabytes.
+ Non-positive value means no memory limitation for internal buffers
+
+
+
+
+ The namespace contains memory management routines.
+
+
+
+
+ RD optimizer settings class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Creates this instance.
+
+ returns RDOptimizerSettings class instance
+
+
+
+ Gets or sets the BPP (bits per pixel) scale factor.
+
+
+ The BPP scale.
+
+
+
+
+ Gets or sets the maximum R value for consideration in in bits per pixel
+
+
+ The maximum R value for consideration in bits per pixel.
+
+
+
+
+ Gets or sets the maximum quantization value.
+
+
+ The maximum quantization value.
+
+
+
+
+ Gets the minimum allowed quantization value.
+
+
+ The minimum minimum allowed quantization value.
+
+
+
+
+ Gets the maximum pixel value.
+
+
+ The maximum maximum pixel value.
+
+
+
+
+ Gets the PSNR maximum expected value.
+
+
+ The maximum maximum pixel value.
+
+
+
+
+ Gets the maximum R value for consideration.
+
+
+ The maximum R value for consideration.
+
+
+
+
+ Represents possible missing sections in CAD file
+
+
+
+
+ Header is missing
+
+
+
+
+ Layouts information is missing
+
+
+
+
+ Block information is missing
+
+
+
+
+ Dimension styles information is missing
+
+
+
+
+ Styles information is missing
+
+
+
+
+ Represents information with results of rendering
+
+
+
+
+ Gets or sets string message
+
+
+
+
+ Gets or sets code of error
+
+
+
+
+ The tiff file format options utility class.
+
+
+
+
+ Gets the valid tags count.
+
+ The tags to validate.
+ The valid tags count.
+
+
+
+ Represents types of entities to render
+
+
+
+
+ Render 2D entities
+
+
+
+
+ Render 3D entities
+
+
+
+
+ The advanced buffer processor.
+
+
+
+
+ The buffer processor.
+
+
+
+
+ Processes the buffer.
+
+ The buffer to process.
+ The buffer length to process.
+
+
+
+ Finishes the row.
+
+
+
+
+ Finishes the rows.
+
+ The rows count.
+
+
+
+ The color converter.
+
+
+
+
+ Converts the passed data to the output format.
+
+ The source format.
+ The source data.
+ The offset in bytes where data copying should begin.
+ The bit start. Note this value is not byte aligned value instead this is actual bit where copying should begin.
+ The samples count.
+ The lines count.
+ The destination format.
+ The output data.
+ The output offset where data copying should start.
+
+ The converted bytes count.
+
+
+
+
+ The color palette interface.
+
+
+
+
+ Gets the index of the nearest 32-bit ARGB color.
+
+ The 32-bit ARGB color.
+ The index of the nearest color.
+
+
+
+ Gets the index of the nearest color.
+
+ The color.
+ The index of the nearest color.
+
+
+
+ Gets the 32-bit ARGB palette color by index.
+
+ The 32-bit ARGB palette color index.
+ The color palette entry specified by the .
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the palette color by index.
+
+ The palette color index.
+ The color palette entry specified by the .
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the entries count.
+
+ The entries count.
+
+
+
+ Gets an array of 32-bit ARGB structures.
+
+ The 32-bit ARGB entries.
+
+ The array of 32-bit ARGB structure that make up this .
+
+
+
+
+ Gets an array of structures.
+
+ The entries.
+
+ The array of structure that make up this .
+
+
+
+
+ Gets a value indicating whether compact palette is used.
+
+
+ true if compact palette is used; otherwise, false.
+ Compact palette means that image will contain only the specified palette entries if possible or in other words the image will be more compact and occupy less space;
+ otherwise there will be 2^BitsPerPixel entries and image will reserve more space for all possible palette entries.
+ Setting this value to true and changing palette entries may cause performance penalty since data movement may occur so use it carefully.
+
+
+
+ Represents interface for objects with keys.
+
+
+
+
+ Gets the object key.
+
+ The object key.
+
+
+
+ The image creator.
+
+
+
+
+ Creates a new image instance with .
+
+ The stream container to create image data in.
+ The image options.
+ width of new image
+ height of new image
+
+ A new image instance.
+
+
+
+
+ The image creator descriptor specifying the creator properties. The creator descriptor is used to overcome
+ the necessity to contain each image creator instance in memory and multithreading issues.
+
+
+
+
+ The image descriptor. Contains base properties and methods for all other image descriptor types.
+
+
+
+
+ Gets the supported format.
+
+ The supported format.
+
+
+
+ Determines whether image creator can create a new image using the .
+
+ The image options.
+
+ True if image creator created by this descriptor can create image data using the specified ; otherwise, false.
+
+
+
+
+ Creates a new creator instance.
+
+ A new creator instance.
+
+
+
+ The image exporter. Can export data from internal Aspose.Imaging format to a specified data format.
+
+
+
+
+ Exports the specified image data into specified data format.
+
+ The image data to export.
+ The stream to export data to.
+ Options for image export
+
+
+
+ Exports the specified image data into specified data format.
+
+ The image data to export.
+ The stream to export data to.
+ Options for image export
+ The bounds rectangle.
+
+
+
+ Represents the image exporter descriptor. The exporter descriptor is used to overcome the necessity to contain each exporter instance
+ in memory and multithreading issues.
+
+
+
+
+ Determines whether image exporter can export the specified image to the specified image format specified by save options.
+
+ The image to export.
+ The options base.
+
+ True if exporter created by this descriptor can export the specified image to the specified file format; otherwise, false.
+
+
+
+
+ Creates a new exporter instance.
+
+ A new exporter instance.
+
+
+
+ The image loader.
+
+
+
+
+ Opens a new image with .
+
+ The stream container.
+ The load options.
+ A newly opened image instance.
+
+
+
+ The image loader descriptor specifying the loader properties. The loader descriptor is used to overcome
+ the necessity to contain each image loader instance in memory and multithreading issues.
+
+
+
+
+ Determines whether image loader can read a new image from the specified stream and optionally using the .
+
+ The stream container.
+ The file format details specified by . The may be null.
+
+ true if image loader created by this descriptor can read image from stream; otherwise, false.
+
+
+
+
+ Creates a new loader instance.
+
+ A new loader instance.
+
+
+
+ The color converter for indexed image formats.
+
+
+
+
+ Fills the indexed to indexed image conversion map.
+
+ The conversion map.
+ The source format.
+ The destination format.
+
+
+
+ Represents object with Size which are expressed in real numbers (in inches).
+
+
+
+
+ Gets the object size, in inches.
+
+
+ The object size, in inches.
+
+
+
+
+ Gets the object width, in inches.
+
+
+ The object width, in inches.
+
+
+
+
+ Gets the object height, in inches.
+
+
+ The object height, in inches.
+
+
+
+
+ Represents an ordered shape. An ordered shape is a continuous set of points having a start point and end point.
+ The continuous set of points connected using a specific rule.
+
+
+
+
+ Reverses the order of points for this shape.
+
+
+
+
+ Gets the starting shape point.
+
+ The starting shape point.
+
+
+
+ Gets the ending shape point.
+
+ The ending shape point.
+
+
+
+ Gets or sets a value indicating whether ordered shape is closed. When processing closed ordered shape the starting and ending points have no meaning.
+
+
+ True if this ordered shape is closed; otherwise, false.
+
+
+
+ The 64-bit ARGB pixels loader.
+
+
+
+
+ Processes the loaded pixels.
+
+ The pixels rectangle.
+ The 64-bit ARGB pixels.
+ The start pixels point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end pixels point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ Conforms to the pixels loaded partially.
+
+
+
+
+ Processes the loaded pixels.
+
+ The pixels rectangle.
+ The pixels.
+ The start pixels point. If not equal to (left,top) meaning that it is not full rectangle we have.
+ The end pixels point. If not equal to (right,bottom) meaning that it is not full rectangle we have.
+
+
+
+ The pasd color palette
+
+
+
+
+ Gets the index of the transparent color.
+
+ The index of the transparent color.
+
+
+
+ Gets a value indicating whether transparent color exists.
+
+
+ true if transparent color exists; otherwise, false.
+
+
+
+
+ Gets the transparent color.
+
+ The transparent color.
+
+
+
+ Gets the raw color palette entries data.
+
+ The raw color palette entries data.
+
+
+
+ Gets the raw color palette entries count.
+
+ The raw color palette entries count.
+
+
+
+ The raster image pixel loader.
+
+
+
+
+ Loads pixels partially (by blocks).
+
+ The rectangle to load pixels from.
+ The partial pixel loader.
+
+
+
+ Class for representing sequence of elements
+
+
+
+
+ Initializes a new instance of the class.
+
+ The start.
+ The count.
+
+
+
+ Initializes a new instance of the class.
+
+ The start.
+ The count.
+ The delta.
+
+
+
+ Initializes a new instance of the class.
+
+ The range.
+
+
+
+ Returns one item array from specified index
+
+ The range index.
+ The array of
+ Index is out of range
+
+
+
+ Gets the count range of int elements starting at start
+
+ The start.
+ The count.
+ The delta.
+ Array of items
+ Count can not be lover than 1
+ or
+ {D255958A-8513-4226-94B9-080D98F904A1}Start page can not be lover than 0
+
+
+
+ Gets or sets the range.
+
+
+ The range.
+
+
+
+
+ Image filters to use
+
+
+
+
+ Nothing filter used
+
+
+
+
+ The big rectangular filter
+
+
+
+
+ The small rectangular filter
+
+
+
+
+ Image resize settings class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the entries count
+
+
+ The entries count
+
+
+
+
+ Gets or sets the interpolation mode.
+
+
+ The mode.
+
+
+
+
+ Gets or sets the type of the filter.
+
+
+ The type of the filter.
+
+
+
+
+ Gets or sets the color quantization method.
+
+
+ The color quantization method.
+
+
+
+
+ Gets or sets the color compare method.
+
+
+ The color compare method.
+
+
+
+
+ Resolution unit enum.
+
+
+
+
+ Undefined units
+
+
+
+
+ Inch units
+
+
+
+
+ Metric centimeter units
+
+
+
+
+ Represents information about interruption.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Sends a request to interrupt operations.
+
+
+
+
+ Gets or sets the InterruptMonitor instance which is unique for each thread.
+
+
+
+
+ Gets the value indicating whether operations should be interrupted.
+
+
+
+
+ The namespace contains Multithreading classes.
+
+
+
+
+ Represents a non generic dictionary.
+
+
+
+
+ The actual dictionary used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The dictionary to use.
+
+
+
+ Removes the element with the specified key from the
+ object.
+
+ The key of the element to remove.
+
+
+
+ Copies the elements of the
+ to an
+ , starting at a particular
+ index.
+
+ The one-dimensional
+ that is the destination of the elements copied from
+ . The
+ must have zero-based indexing.
+ The zero-based index in
+ at which copying begins.
+
+
+
+ Adds an element with the provided key and value to the
+ object.
+
+ The
+ to use as the key of the element to add.
+ The
+ to use as the value of the element to add.
+
+
+
+ Removes all elements from the
+ object.
+
+
+
+
+ Determines whether the
+ object contains an element with the specified key.
+
+ The key to locate in the
+ object.
+
+ true if the
+ contains an element with the key; otherwise, false.
+
+
+
+
+ Gets the enumerator.
+
+ The dictionary enumerator
+
+
+
+ Gets a value indicating whether the
+ object has a fixed size.
+
+ true if the object has a fixed size; otherwise, false.
+
+
+
+ Gets a value indicating whether the
+ object is read-only.
+
+ true if the object is read-only; otherwise, false.
+
+
+
+ Gets an
+ object containing the keys of the
+ object.
+
+ An object containing the keys of the object.
+
+
+
+ Gets the number of elements contained in the
+ .
+
+ The number of elements contained in the .
+
+
+
+ Gets a value indicating whether access to the
+ is synchronized (thread safe).
+
+ true if access to the is synchronized (thread safe); otherwise, false.
+
+
+
+ Gets an object that can be used to synchronize access to the
+ .
+
+ An object that can be used to synchronize access to the .
+
+
+
+ Gets an
+ object containing the values in the
+ object.
+
+ An object containing the values in the object.
+
+
+
+ Gets or sets the element with the specified key.
+
+ The element key.
+ The element with the specified key.
+
+
+
+ Non generic list of objects
+
+
+
+
+ The list - internal container of objects
+
+
+
+
+ Initializes a new instance of the class.
+
+ The list - container of objects.
+
+
+
+ Adds an item to the .
+
+ The to add to the .
+
+ The position into which the new element was inserted.
+
+
+
+
+ Removes all items from the .
+
+
+
+
+ Determines whether the contains a specific value.
+
+ The to locate in the .
+
+ true if the is found in the ; otherwise, false.
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which should be inserted.
+ The to insert into the .
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The to remove from the .
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+
+
+ Copies the elements of the to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets a value indicating whether the has a fixed size.
+
+
+
+
+ Gets a value indicating whether the is read-only.
+
+
+
+
+ Gets or sets the element at the specified index.
+
+ The index.
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+
+
+ Gets a value indicating whether access to the is synchronized (thread safe).
+
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+
+
+ Cache for OpenType fonts that are installed in the system.
+
+
+
+
+
+
+
+
+
+ Color palette adjustment class
+
+
+
+
+ The namespace contains classes for adjustment of color palette to the image colors and visa versa.
+
+
+
+
+ Defines a map for converting colors. Several methods of the class adjust image colors by using a color-remap table, which is an array of structures. Not inheritable.
+
+
+
+
+ Gets or sets the existing structure to be converted.
+
+ The existing structure to be converted.
+
+
+
+ Gets or sets the new structure to which to convert.
+
+ The new structure to which to convert.
+
+
+
+ Defines a 5 x 5 matrix that contains the coordinates for the RGBA space. Several methods of the class adjust image colors by using a color matrix. This class cannot be inherited.
+
+
+
+
+ The number of elements in matrix dimension.
+
+
+
+
+ The number of matrix dimensions.
+
+
+
+
+ The total number of elements in the matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class using the elements in the specified matrix .
+
+ The values of the elements for the new .
+
+
+
+ Gets the matrix values.
+
+ The matrix values array.
+
+
+
+ Gets or sets the element at the 0 (zero) row and 0 column of this .
+
+ The element at the 0 row and 0 column of this .
+
+
+
+ Gets or sets the element at the 0 (zero) row and first column of this .
+
+ The element at the 0 row and first column of this .
+
+
+
+ Gets or sets the element at the 0 (zero) row and second column of this .
+
+ The element at the 0 row and second column of this .
+
+
+
+ Gets or sets the element at the 0 (zero) row and third column of this .
+
+ The element at the 0 row and third column of this .
+
+
+
+ Gets or sets the element at the 0 (zero) row and fourth column of this .
+
+ The element at the 0 row and fourth column of this .
+
+
+
+ Gets or sets the element at the first row and 0 (zero) column of this .
+
+ The element at the first row and 0 column of this .
+
+
+
+ Gets or sets the element at the first row and first column of this .
+
+ The element at the first row and first column of this .
+
+
+
+ Gets or sets the element at the first row and second column of this .
+
+ The element at the first row and second column of this .
+
+
+
+ Gets or sets the element at the first row and third column of this .
+
+ The element at the first row and third column of this .
+
+
+
+ Gets or sets the element at the first row and fourth column of this .
+
+ The element at the first row and fourth column of this .
+
+
+
+ Gets or sets the element at the second row and 0 (zero) column of this .
+
+ The element at the second row and 0 column of this .
+
+
+
+ Gets or sets the element at the second row and first column of this .
+
+ The element at the second row and first column of this .
+
+
+
+ Gets or sets the element at the second row and second column of this .
+
+ The element at the second row and second column of this .
+
+
+
+ Gets or sets the element at the second row and third column of this .
+
+ The element at the second row and third column of this .
+
+
+
+ Gets or sets the element at the second row and fourth column of this .
+
+ The element at the second row and fourth column of this .
+
+
+
+ Gets or sets the element at the third row and 0 (zero) column of this .
+
+ The element at the third row and 0 column of this .
+
+
+
+ Gets or sets the element at the third row and first column of this .
+
+ The element at the third row and first column of this .
+
+
+
+ Gets or sets the element at the third row and second column of this .
+
+ The element at the third row and second column of this .
+
+
+
+ Gets or sets the element at the third row and third column of this .
+
+ The element at the third row and third column of this .
+
+
+
+ Gets or sets the element at the third row and fourth column of this .
+
+ The element at the third row and fourth column of this .
+
+
+
+ Gets or sets the element at the fourth row and 0 (zero) column of this .
+
+ The element at the fourth row and 0 column of this .
+
+
+
+ Gets or sets the element at the fourth row and first column of this .
+
+ The element at the fourth row and first column of this .
+
+
+
+ Gets or sets the element at the fourth row and second column of this .
+
+ The element at the fourth row and second column of this .
+
+
+
+ Gets or sets the element at the fourth row and third column of this .
+
+ The element at the fourth row and third column of this .
+
+
+
+ Gets or sets the element at the fourth row and fourth column of this .
+
+ The element at the fourth row and fourth column of this .
+
+
+
+ Gets or sets the element at the specified row and column in the .
+
+ The row number.
+ The column number.
+ The element at the specified row and column.
+
+
+
+ Specifies the types of images and colors that will be affected by the color and grayscale adjustment settings of an .
+
+
+
+
+ All color values, including gray shades, are adjusted by the same color-adjustment matrix.
+
+
+
+
+ All colors are adjusted, but gray shades are not adjusted. A gray shade is any color that has the same value for its red, green, and blue components.
+
+
+
+
+ Only gray shades are adjusted.
+
+
+
+
+ Defines an array of colors that make up a color palette. The colors are 32-bit ARGB colors. Not inheritable.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The 32-bit ARGB color palette entries.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The 32-bit ARGB color palette entries.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette entries.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The color palette entries.
+
+
+
+ Copies the palette.
+
+ The color palette.
+ Indicating whether compact palette.
+ The newly created and copied palette or null if null palette passed.
+
+
+
+ Copies the palette.
+
+ The color palette.
+ The newly created and copied palette or null if null palette passed.
+
+
+
+ Gets the index of the nearest color.
+
+ The 32-bit ARGB color.
+ The index of the nearest color.
+
+
+
+ Gets the index of the nearest color.
+
+ The color.
+ The index of the nearest color.
+
+
+
+ Gets the 32-bit ARGB palette color by index.
+
+ The 32-bit ARGB palette color index.
+ The color palette entry specified by the .
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the palette color by index.
+
+ The palette color index.
+ The color palette entry specified by the .
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the entries count.
+
+ The entries count.
+
+
+
+ Gets an array of 32-bit ARGB structures.
+
+ The entries.
+
+ The array of 32-bit ARGB structure that make up this .
+
+
+
+
+ Gets an array of structures.
+
+ The entries.
+
+ The array of structure that make up this .
+
+
+
+
+ Gets or sets a value indicating whether compact palette is used.
+
+
+ true if compact palette is used; otherwise, false.
+ Compact palette means that image will contain only the specified palette entries if possible or in other words the image will be more compact and occupy less space;
+ otherwise there will be 2^BitsPerPixel entries and image will reserve more space for all possible palette entries.
+ Setting this value to true and changing palette entries may cause performance penalty since data movement may occur so use it carefully.
+
+
+
+ Helper class for color palettes manipulation.
+
+
+
+
+ Creates a monochrome color palette containing 2 colors only.
+
+
+ Color palette for monochrome images.
+
+
+
+
+ Creates the 4 bit color palette.
+
+ The 4 bit color palette.
+
+
+
+ Creates the 4 bit grayscale palette.
+
+ if set to true the palette starts with white color, otherwise it starts with black color.
+
+ The 4 bit grayscale palette.
+
+
+
+
+ Creates the 8 bit color palette.
+
+ The 8 bit color palette.
+
+
+
+ Creates the 8 bit grayscale palette.
+
+ if set to true the palette starts with white color, otherwise it starts with black color.
+
+ The 8 bit grayscale palette.
+
+
+
+
+ Gets color palette from raster image (palletizes image) in case the image does not have one. In case palette exists it will be used instead performing calculations.
+
+ The raster image.
+ The desired entries count.
+
+ The color palette which starts with the most frequent colors from the and contains entries.
+
+
+
+
+ Gets color palette from raster image (palletizes image) in case the image does not have one. In case palette exists it will be used instead performing calculations.
+
+ The raster image.
+ The destination image bounds.
+ The desired entries count.
+
+ The color palette which starts with the most frequent colors from the and contains entries.
+
+
+
+
+ Get uniform 256 color palette.
+
+
+ The image.
+
+
+ The .
+
+
+
+
+ Get 256 color palette, composed from upper bits of initial image color values.
+
+
+ The image.
+
+
+ The .
+
+
+
+
+ Specifies the quality level to use during compositing.
+
+
+
+
+ Invalid quality.
+
+
+
+
+ Default quality.
+
+
+
+
+ High speed, low quality.
+
+
+
+
+ High quality, low speed compositing.
+
+
+
+
+ Gamma correction is used.
+
+
+
+
+ Assume linear values.
+
+
+
+
+ The vector image is the base class for all type of vector images.
+
+
+
+
+
+
+ Gets the object size, in inches.
+
+
+ The object size, in inches.
+
+
+
+
+ Gets the object width, in inches.
+
+
+ The object width, in inches.
+
+
+
+
+ Gets the object height, in inches.
+
+
+ The object height, in inches.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Converts xmp values to the XML string representation.
+
+
+
+
+ Converts XMP value to the XML representation.
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+ Represents XMP Language Alternative.
+
+
+
+
+ Dictionary of languages.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The default value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the language.
+
+ The language.
+ The language value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Converts XMP value to the XML representation.
+
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+
+ The namespace contains XMP related helper classes and methods.
+
+
+
+
+ The Aspose.Imaging.Xmp namespace contains namespaces used in RDF document.
+
+
+
+
+ Contains namespaces used in RDF document.
+
+
+
+
+ Xml namespace.
+
+
+
+
+ Resource definition framework namespace.
+
+
+
+
+ Dublic Core namespace.
+
+
+
+
+ XMP Basic namespace.
+
+
+
+
+ XMP Rights Management namespace.
+
+
+
+
+ XMP digital asset management namespace.
+
+
+
+
+ XMP Dynamic Media namespace.
+
+
+
+
+ Adobe PDF namespace.
+
+
+
+
+ Adobe Photoshop namespace.
+
+
+
+
+ XMP graphics namespace.
+
+
+
+
+ XMP graphics namespace.
+
+
+
+
+ XMP Font type.
+
+
+
+
+ XMP Dimensions type.
+
+
+
+
+ XMP ResourceRef URI.
+
+
+
+
+ XMP ResourceEvent URI.
+
+
+
+
+ XMP Version.
+
+
+
+
+ Represents Dublic Core schema.
+
+
+ For more information see: http://dublincore.org/documents/usageguide/elements.shtml.
+
+
+
+
+ Represents base abstraction for XMP package.
+
+
+
+
+ Xmlns prefix. For example, xmlns:dc.
+
+
+
+
+ Namespace uri for the specific XMP schema.
+
+
+
+
+ Dictionary of key/value properties XMP package.
+
+
+
+
+ Gets the RDF code for specific .
+
+ The type of XMP array.
+ Returns the RDF code for specific .
+
+
+
+ Determines whether the specified key contains key.
+
+ The key to be checked.
+ Returns true if the specified key contains key.
+
+
+
+ Adds the value.
+
+ The string representation of key that is identified with added value.
+ The value to add to.
+ key is null.
+
+
+
+ Remove the value with the specified key.
+
+ The string representation of key that is identified with removed value.
+
+ Returns true if the value with the specified key was removed.
+
+
+
+
+ Clears this instance.
+
+
+
+
+ Sets the value.
+
+ The string representation of key that is identified with added value.
+ The value to add to.
+
+
+
+ Sets the XMP type value.
+
+ The string representation of key that is identified with set value.
+ The value to set to.
+
+
+
+ Converts XMP value to the XML representation.
+
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Sets the XMP unique identifier.
+
+ The string representation of key that is identified with set GUID value.
+ The unique identifier.
+
+
+
+ Sets the XMP date.
+
+ The string representation of key that is identified with set value.
+ The date to set.
+
+
+
+ Sets the XMP integer.
+
+ The string representation of key that is identified with set value.
+ The integer value.
+
+
+
+ Sets the XMP boolean value.
+
+ The string representation of key that is identified with set value.
+ The boolean value.
+
+
+
+ Gets the XML namespace.
+
+
+ The XML namespace.
+
+
+
+
+ Gets the prefix.
+
+
+ The prefix.
+
+
+
+
+ Gets the namespace URI.
+
+
+ The namespace URI.
+
+
+
+
+ Gets the keys in XMP package.
+
+
+ The keys in XMP package.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+ The .
+
+ The key that identifies value.
+ Returns the with the specified key.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;DublinCore property could not be null
+
+
+
+ Adds Dublin Core title.
+
+ The title.
+
+
+
+ Adds Dublin Core title for different languages.
+
+ Instance of .
+
+
+
+ Adds the description.
+
+ The description.
+
+
+
+ Adds the description.
+
+ The description.
+
+
+
+ Adds the subject.
+
+ The subject.
+
+
+
+ Adds the subject.
+
+ The subject.
+
+
+
+ Adds the author.
+
+ The author.
+
+
+
+ Adds the author.
+
+ The author.
+
+
+
+ Adds the publisher.
+
+ The publisher.
+
+
+
+ Adds the publisher.
+
+ The publisher.
+ publisher
+
+
+
+ The namespace contains Dublin Core metadata related helper classes, constants and methods.
+
+
+
+
+ The namespace contains related helper classes, constants and methods used with Adobe PDF documents.
+
+
+
+
+ Represents Adobe Pdf namespace.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;Pdf property could not be null
+
+
+
+ Sets the keywords.
+
+ The keywords.
+
+
+
+ Sets the PDF version.
+
+ Pdf version, for example: 1.0, 1.3 etc.
+
+
+
+ Sets the name of the tool that created Pdf.
+
+ The producer name.
+
+
+
+ Sets the trapped.
+
+ if set to true the document has been trapped.
+
+
+
+ Represents color mode in .
+
+
+
+
+ Bitmap color mode.
+
+
+
+
+ Gray scale color mode.
+
+
+
+
+ The indexed color.
+
+
+
+
+ RGB color.
+
+
+
+
+ CMYK color mode.
+
+
+
+
+ Multi-channel color.
+
+
+
+
+ Duo-tone color.
+
+
+
+
+ LAB color.
+
+
+
+
+ Represents Photoshop text layer.
+
+
+
+
+ Represents base class for basic XMP type.
+
+
+
+
+ Base interface for XMP type.
+
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the layer.
+ The layer text.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns string contained value in XMP format.
+
+ Returns string contained value in XMP format.
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets the name of the text layer.
+
+
+ The name of the text layer.
+
+
+
+
+ Gets or sets the text content of the layer.
+
+
+ The text content of the layer.
+
+
+
+
+ The namespace contains related helper classes, constants and methods used by Adobe Photoshop.
+
+
+
+
+ Represents Adobe Photoshop namespace.
+
+
+
+
+ Urgency max value.
+
+
+
+
+ Urgency min value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;Photoshop property could not be null
+
+
+
+ Sets the authors position.
+
+ The authors position.
+
+
+
+ Sets the caption writer.
+
+ The caption writer.
+
+
+
+ Sets the category.
+
+ The category.
+ category;Category is limited to 3 characters
+
+
+
+ Sets the city.
+
+ The city name.
+
+
+
+ Sets the color mode.
+
+ The color mode.
+
+
+
+ Sets the country.
+
+ The country.
+
+
+
+ Sets the credit.
+
+ The credit.
+
+
+
+ Sets created date.
+
+ The created date.
+
+
+
+ Sets the document ancestors.
+
+ The ancestors.
+
+
+
+ Sets the headline.
+
+ The headline.
+
+
+
+ Sets the history.
+
+ The history.
+
+
+
+ Sets the icc profile.
+
+ The icc profile.
+
+
+
+ Sets the instructions.
+
+ The instructions.
+
+
+
+ Sets the source.
+
+ The source.
+
+
+
+ Sets the state.
+
+ The state.
+
+
+
+ Sets supplemental categories.
+
+ The supplemental categories.
+
+
+
+ Sets the transmission reference.
+
+ The transmission reference.
+
+
+
+ Sets the urgency.
+
+
+ Urgency should be in rage from 1 till 8.
+
+ The urgency.
+ urgency;Valid range is from 1 to 8
+
+
+
+ The namespace contains the XMP Basic Schema related helper classes, constants and methods that provide basic descriptive information.
+
+
+
+
+ Represents XMP basic namespace.
+
+
+
+
+ Rating rejected value.
+
+
+
+
+ Rating min value.
+
+
+
+
+ Rating max value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The prefix.
+ The namespace URI.
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;Metadata key is not provided
+
+
+
+ Adds resource created date.
+
+ Created date.
+
+
+
+ Adds resource created date.
+
+ Created date.
+
+
+
+ Sets the creator tool.
+
+ Name of tool.
+
+
+
+ Sets the identifier.
+
+ The idenfifier.
+
+
+
+ Sets the label.
+
+ The label.
+
+
+
+ Adds metadata last changed date.
+
+ Metadata date.
+
+
+
+ Adds metadata last changed date.
+
+ Metadata date.
+
+
+
+ Adds resource last modified date.
+
+ Last modified date.
+
+
+
+ Adds resource last modified date.
+
+ Last modified date.
+
+
+
+ Sets rating.
+
+ From -1 till 5
+
+
+
+ Represents audio channel type.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the mono audio channel.
+
+
+ The mono audio channel.
+
+
+
+
+ Gets the stereo audio channel.
+
+
+ The stereo audio channel.
+
+
+
+
+ Gets the 5.1 audio channel.
+
+
+ The 5.1 audio channel.
+
+
+
+
+ Gets the 7.1 audio channel.
+
+
+ The 7.1 audio channel.
+
+
+
+
+ Gets the 16 audio channel.
+
+
+ The 16 audio channel.
+
+
+
+
+ Gets the other channel.
+
+
+ The other channel.
+
+
+
+
+ Represents Audio sample type in .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Represents 8Int audio sample.
+
+
+
+
+ Represents 16Int audio sample.
+
+
+
+
+ Represents 24Int audio sample.
+
+
+
+
+ Represents 32Int audio sample.
+
+
+
+
+ Represents 32Float audio sample.
+
+
+
+
+ Represents Compressed audio sample.
+
+
+
+
+ Represents Packed audio sample.
+
+
+
+
+ The namespace contains XMP related helper classes, constants and methods used by the Adobe dynamic media group.
+
+
+
+
+ Represents path of the project.
+
+
+
+
+ Returns string contained value in XMP format.
+
+
+ Returns string contained value in XMP format.
+
+
+
+
+
+ Gets or sets full path to the project.
+
+
+ The full path to the project.
+
+
+
+
+ Gets or sets file type.
+
+
+ The file type.
+
+
+
+
+ Represents project type in .
+
+
+
+
+ The movie project type
+
+
+
+
+ The still project type
+
+
+
+
+ The audio project type
+
+
+
+
+ The custom project type
+
+
+
+
+ Representation of a time value in seconds.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale.
+ The value.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets scale for the time value.
+
+
+ The scale for the time value.
+
+
+ For NTSC, use 1001/30000, or the less accurate 100/2997.
+ For PAL, use 1/25.
+
+
+
+
+ Gets or sets time value in the specified scale.
+
+
+ The time value in the specified scale.
+
+
+
+
+ Represents timecode value in video.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The time format.
+ The time value.
+
+
+
+ Returns the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets the format used in the .
+
+
+ The format used in the .
+
+
+
+
+ Gets or sets the time value in the specified format.
+
+
+ The time value in the specified format.
+
+
+
+
+ Represents time format in .
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Gets the timecode24.
+
+
+ The timecode24.
+
+
+
+
+ Gets the timecode25.
+
+
+ The timecode25.
+
+
+
+
+ Gets the drop timecode2997.
+
+
+ The drop timecode2997.
+
+
+
+
+ Gets the non drop timecode2997.
+
+
+ The non drop timecode2997.
+
+
+
+
+ Gets the timecode30.
+
+
+ The timecode30.
+
+
+
+
+ Gets the timecode50.
+
+
+ The timecode50.
+
+
+
+
+ Gets the drop timecode5994.
+
+
+ The drop timecode5994.
+
+
+
+
+ Gets the non drop timecode5994.
+
+
+ The non drop timecode5994.
+
+
+
+
+ Gets the timecode60.
+
+
+ The timecode60.
+
+
+
+
+ Gets the timecode23976.
+
+
+ The timecode23976.
+
+
+
+
+ Represents XMP Dynamic Media namespace.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;DynamicMedia property could not be null
+
+
+
+ Sets the absolute peak audio file path.
+
+ The absolute path to the file’s peak audio file.
+
+
+
+ Sets the alblum.
+
+ The album.
+
+
+
+ Sets the alternative tape name.
+
+ Alternative tape name.
+
+
+
+ Sets the alternative time code.
+
+ Time code.
+
+
+
+ Sets the artist.
+
+ The artist.
+
+
+
+ Sets the audio channel type.
+
+ Audio channel type.
+
+
+
+ Sets the audio sample rate.
+
+ The audio sample rate.
+
+
+
+ Sets the audio sample type.
+
+ The audio sample type.
+
+
+
+ Sets the camera angle.
+
+ The camera angle.
+
+
+
+ Sets the camera label.
+
+ The camera label.
+
+
+
+ Sets the camera move.
+
+ The camera move.
+
+
+
+ Sets the client.
+
+ The client.
+
+
+
+ Sets the comment.
+
+ The comment.
+
+
+
+ Sets the composer.
+
+ The composer.
+
+
+
+ Sets the director.
+
+ The director.
+
+
+
+ Sets the director of photography.
+
+ The director of photography.
+
+
+
+ Sets the duration.
+
+ The duration.
+
+
+
+ Sets the engineer.
+
+ The engineer.
+
+
+
+ Sets the file data rate.
+
+ The file data rate in megabytes per second.
+
+
+
+ Sets the genre.
+
+ The genre.
+
+
+
+ Sets the good.
+
+ if set to true a shot is a keeper.
+
+
+
+ Sets the instrument.
+
+ The instrument.
+
+
+
+ Sets the intro time.
+
+ The intro time.
+
+
+
+ Sets the audio’s musical key.
+
+ The audio’s musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, and B.
+
+
+
+ Sets the user's log comment.
+
+ The comment.
+
+
+
+ The namespace contains related helper classes, constants and methods that is primarily used by digital asset management (DAM) systems.
+
+
+
+
+ Represents XMP Media Management namespace.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+
+
+
+ Sets the derived from.
+
+ The resource reference.
+
+
+
+ Sets the document identifier.
+
+ The unique identifier.
+
+
+
+ Sets the document identifier.
+
+ The unique identifier.
+
+
+
+ Sets instance id.
+
+ The unique identifier.
+
+
+
+ Sets instance id.
+
+ The unique identifier.
+
+
+
+ Sets the original document id.
+
+ The unique identifier.
+
+
+
+ Sets the original document id.
+
+ The unique identifier.
+
+
+
+ The namespace contains related to rights management helper classes, constants and methods.
+ These properties specify information regarding the legal restrictions associated with a resource.
+
+
+
+
+ Represents XMP Rights Management namespace.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds string property.
+
+ The string representation of key that is identified with added value.
+ The string value.
+ key;Key should be provided for XMP Rights Management namespace
+
+
+
+ Sets the certificate.
+
+ The certificate.
+
+
+
+ Marks as right management content
+
+ if set to true that this is a rights-managed resource.
+
+
+
+ Sets owners.
+
+ The owners.
+
+
+
+ Sets the usage terms.
+
+ The usage terms.
+ usageTerms
+
+
+
+ Sets the web statement.
+
+ The web statement URL.
+
+
+
+ The namespace contains classes that represent the basic type values of XMP properties.
+
+
+
+
+ Represents XMP Boolean basic type.
+
+
+
+
+ Initializes a new instance of the class based on boolean value.
+
+ The Boolean value. Allowed values are True or False.
+
+
+
+ Initializes a new instance of the class with default value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+ value
+ Invalid string value;value
+
+
+
+ Returns string contained value in XMP format.
+
+ Returns string contained value in XMP format.
+
+
+
+ Gets or sets a value indicating whether this is value.
+
+
+ true if value; otherwise, false.
+
+
+
+
+ Represents Date in XMP packet.
+
+
+ A date-time value is represented using a subset of the formats as defined in Date and Time Formats:
+ YYYY
+ YYYY-MM
+ YYYY-MM-DD
+ YYYY-MM-DDThh:mmTZD
+ YYYY-MM-DDThh:mm:ssTZD
+ YYYY-MM-DDThh:mm:ss.sTZD
+
+
+
+
+ The ISO 8601 (roundtrip) format string.
+
+
+ See more: https://en.wikipedia.org/wiki/ISO_8601.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A date-time value which is represented using a subset of ISO RFC 8601 formatting.
+
+
+
+ Initializes a new instance of the class.
+
+ The string representation of date.
+ Invalid date format;date
+
+
+
+ Returns string contained value in XMP format.
+
+ Returns string contained value in XMP format.
+
+
+
+ Gets or sets the date value.
+
+
+ The date value.
+
+
+
+
+ Gets the format string for current value.
+
+
+ The format string for current value.
+
+
+
+
+ Represents XMP Integer basic type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+ value is null.
+ Invalid string value;value
+
+
+
+ Gets the string contained value in XMP format.
+
+
+ Returns the string contained value in XMP format.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Represents XMP Real.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Float value.
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+ value is null.
+ Invalid value. Should be float.
+
+
+
+ Gets the string contained value in XMP format.
+
+
+ Returns the string contained value in XMP format.
+
+
+
+
+ Gets or sets float the value.
+
+
+ The float value.
+
+
+
+
+ Represents XMP Text basic type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Gets the string contained value in XMP format.
+
+
+ Returns the string contained value in XMP format.
+
+
+
+
+ Gets or sets the text value.
+
+
+ The text value.
+
+
+
+
+ Represents XMP Colorant type.
+
+
+
+
+ Represents base abstraction for XMP Complex value type.
+
+
+ See more: XMP Specification Part 2, Chapter 1.2.2
+
+
+
+
+ The values dictionary
+
+
+
+
+ Initializes a new instance of the class.
+
+ The prefix.
+ The namespace URI.
+
+ prefix is null
+ or
+ namespaceUri is null
+
+
+
+
+ Adds the specified key.
+
+ The string representation of key that is identified with added value.
+ The value to add to.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets the prefix.
+
+
+ The prefix.
+
+
+
+
+ Gets the default namespace URI.
+
+
+ The default namespace URI.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color mode.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets .
+
+
+ The color mode.
+
+
+
+
+ Gets or sets the name of the swatch.
+
+
+ The name of the swatch.
+
+
+
+
+ Gets or sets the type of the color.
+
+
+ The type of the color.
+
+
+
+
+ Represents CMYK Colorant.
+
+
+
+
+ Color max value in CMYK colorant.
+
+
+
+
+ Color min value in CMYK colorant.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The black component value.
+ The cyan color component value.
+ The magenta component value.
+ The yellow component value.
+
+
+
+ Gets the string contained value in XMP format.
+
+
+ Returns the string contained value in XMP format.
+
+
+
+
+ Gets or sets the black component value.
+
+
+ The black component value.
+
+
+
+
+ Gets or sets the cyan component value.
+
+
+ The cyan component value.
+
+
+
+
+ Gets or sets the magenta component value.
+
+
+ The magenta component value.
+
+
+
+
+ Gets or sets the yellow component value.
+
+
+ The yellow component value.
+
+
+
+
+ Represents LAB Colorant.
+
+
+
+
+ The minimum A component value
+
+
+
+
+ The maximum A component value
+
+
+
+
+ The minimum B component value
+
+
+
+
+ The maximum A component value
+
+
+
+
+ The minimum L component value
+
+
+
+
+ The maximum A component value
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A component.
+ B component.
+ L component.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the A component.
+
+
+ The A component.
+
+
+
+
+ Gets or sets the B component.
+
+
+ The B component.
+
+
+
+
+ Gets or sets the L component.
+
+
+ The L component.
+
+
+
+
+ Represents RGB Colorant.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The red component value.
+ The green component value.
+ The blue component value.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the red component value.
+
+
+ The red component value.
+
+
+
+
+ Gets or sets the green component value.
+
+
+ The green component value.
+
+
+
+
+ Gets or sets the blue component value.
+
+
+ The blue component value.
+
+
+
+
+ Represents color mode.
+
+
+
+
+ CMYK color mode.
+
+
+
+
+ RGB color mode.
+
+
+
+
+ LAB color mode.
+
+
+
+
+ Type of color.
+
+
+
+
+ Process color type.
+
+
+
+
+ Spot color type.
+
+
+
+
+ The namespace contains classes that represent the structures containing the characteristics of a colorant (swatch) used in a document.
+
+
+
+
+ Containing dimensions for a drawn object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width.
+ The height.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the width.
+
+
+ The width.
+
+ value;Width could not be less than zero
+
+
+
+ Gets or sets the height.
+
+
+ The height.
+
+ value;Height could not be less than zero
+
+
+
+ Gets or sets units.
+
+
+ The units.
+
+
+ For example: inch, mm, pixel, pica, point etc.
+
+
+
+
+ The namespace contains classes that represent the structure containing dimensions for a drawn object.
+
+
+
+
+ Represents XMP Font.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Font family.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the array of file names for the fonts that make up a composite font.
+
+
+ The array of file names for the fonts that make up a composite font.
+
+
+
+
+ Gets or sets a value indicating whether this font is composite.
+
+
+ true if this font is composite; otherwise, false.
+
+
+
+
+ Gets or sets the font face.
+
+
+ The font face.
+
+
+
+
+ Gets or sets the font family.
+
+
+ The font family.
+
+
+
+
+ Gets or sets the font file name without full path.
+
+
+ The font file name without full path.
+
+
+
+
+ Gets or sets the PostScript font name.
+
+
+ The name of PostScript font name.
+
+
+
+
+ Gets or sets the font type.
+
+
+ The font type.
+
+
+ TrueType, Type 1, Open Type, and so on.
+
+
+
+
+ Gets or sets the font version.
+
+
+ The font version.
+
+
+ /version for Type1 fonts
+ nameId 5 for Apple True Type and OpenType
+ /CIDFontVersion for CID fonts
+ The empty string for bitmap fonts
+
+
+
+
+ The namespace contains classes that represent the structure containing the characteristics of a font used in a document.
+
+
+
+
+ The namespace contains classes that represent the complex type values of XMP properties.
+
+
+
+
+ The namespace contains class that is a high level event that occured in the processing of this document.
+
+
+
+
+ Containing dimensions for a drawn object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets action.
+
+
+ The action.
+
+
+ Defined values are: converted, copied, created, cropped, edited, filtered, formatted, version_updated, printed, published, managed, produced, resized, saved.
+ New values should be verbs in the past tense.
+
+
+
+
+ Gets or sets the semicolon-delimited list of the parts of the resource that were changed since the previous event history.
+
+
+ The semicolon-delimited list of the parts of the resource that were changed since the previous event history.
+
+
+
+
+ Gets or sets value of the xmpMM:InstanceId.
+
+
+ The value of the xmpMM:InstanceId.
+
+
+
+
+ Gets or sets the additional description of the action.
+
+
+ The additional description of the action.
+
+
+
+
+ Gets or sets the software agent name.
+
+
+ The software agent name.
+
+
+
+
+ Gets or sets the action date.
+
+
+ The action date.
+
+
+
+
+ The namespace contains class that is a multiple part reference to a resource.
+ Used to indicate prior versions, originals of renditions, originals for derived documents, and so on.
+
+
+
+
+ Used to indicate prior versions, originals of renditions, originals for derived documents, and so on.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the array of alternate path.
+
+
+ The array of alternate path.
+
+
+
+
+ Gets or sets the document URI.
+
+
+ The document URI.
+
+
+
+
+ Gets or sets the file path URI.
+
+
+ The file path URI.
+
+
+
+
+ Gets or sets the instance identifier.
+
+
+ The instance identifier.
+
+
+
+
+ The namespace contains class that is a thumbnail image for a file.
+
+
+
+
+ Represents thumbnail image for a file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width.
+ The height.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the width.
+
+
+ The width.
+
+ value;Width could not be less than zero
+
+
+
+ Gets or sets the height.
+
+
+ The height.
+
+ value;Height could not be less than zero
+
+
+
+ Gets or sets the image in base64 format.
+
+
+ The image in base64 format.
+
+
+
+
+ The namespace contains classes that describe one version of a document.
+
+
+
+
+ Describes one version of a document.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the comments.
+
+
+ The comments.
+
+
+
+
+ Gets or sets the .
+
+
+ The version event.
+
+
+
+
+ Gets or sets the modifier.
+
+
+ The modifier.
+
+
+
+
+ Gets or sets the modified date.
+
+
+ The modified date.
+
+
+
+
+ Gets or sets the version text.
+
+
+ The version text.
+
+
+
+
+ The namespace contains classes that represent the derived type values of XMP properties.
+
+
+
+
+ Represents XMP Rational.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The numerator.
+ The denominator.
+
+ numerator;Numberator should be grater zero.
+ or
+ denominator;Denominator should be grater zero.
+
+
+
+
+ Gets thestring contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets the numerator.
+
+
+ The numerator.
+
+
+
+
+ Gets or sets the denominator.
+
+
+ The denominator.
+
+
+
+
+ Gets the float value.
+
+
+ The float value.
+
+
+
+
+ Represents the XMP Rendition.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The token.
+ The value.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the token.
+
+
+ The token.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ The defined values
+
+
+
+
+ Represents Agent name, Software organization etc.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Represents a value from vocabulary of values.
+
+ The type of elements.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the string contained value in XMP format.
+
+
+ Returns the string contained value in XMP format.
+
+
+
+
+
+ Gets or sets a value indicating whether the preferred values can be extended.
+
+
+ true if preferred values can be extended; otherwise, false.
+
+
+
+
+ Represents XMP global unique identifier.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+ value is null.
+ Invalid guid value;value
+
+
+
+ Initializes a new instance of the class.
+
+ The unique identifier.
+
+
+
+ Gets the string contained value in XMP format.
+
+ Returns the string contained value in XMP format.
+
+
+
+ Gets or sets the prefix like uuid.
+
+
+ The prefix like uuid.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Represents language code.
+
+
+ See IETF RFC 3066.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Represents MIME type.
+
+
+ MIME type defined in IETF RFC 2046.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ The namespace contains classes that represent the values of XMP properties in three basic categories: basic types,
+ complex and derived types.
+
+
+
+
+ Represents Xmp Array in . TODO: Array may contain complex data.
+
+
+
+
+ Array type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of array.
+ The items list.
+
+
+
+ Initializes a new instance of the class.
+
+ The type of array.
+
+
+
+ Adds new item.
+
+ The item to be added to list of items.
+
+
+
+ Converts XMP value to the XML representation.
+
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets array of values inside .
+
+
+
+
+ Represents array type in .
+
+
+
+
+ The unordered array.
+
+
+
+
+ The ordered array.
+
+
+
+
+ The alternative array.
+
+
+
+
+ The helper class for processing RDF logic
+
+
+
+
+ Gets the RDF code for specific .
+
+ Type of the XMP array.
+ Returns the RDF code for specific .
+ Invalid enum argument exception
+
+
+
+ Represents base xmp element contains attributes.
+
+
+
+
+ The xmpmeta element can have any number of attributes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the attribute.
+
+ The attribute.
+ The value.
+
+
+
+ Gets the attribute.
+
+ The attribute.
+ Returns the attribute for specified attribute name.
+
+
+
+ Removes all attributes.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Represents XMP header processing instruction.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unique identifier.
+
+
+
+ Converts XMP value to the XML representation.
+
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Represents Header Guid.
+
+
+ The text of the header PI contains a GUID, making it unlikely to appear by accident in the data stream.
+
+
+
+
+ Represents xmpmeta. Optional.
+ The purpose of this element is to identify XMP metadata within general XML text that might contain other non-XMP uses of RDF.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Adobe XMP toolkit version.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the attribute.
+
+ The attribute.
+ The value.
+
+
+
+ Converts XMP value to the XML representation.
+
+
+ Returns the XMP value converted to the XML representation.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or set Adobe Xmp toolkit version.
+
+
+
+
+ Represents collection of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds new instance of .
+
+ The XMP package to add.
+
+
+
+ Removes the specified XMP package.
+
+ The XMP package to remove.
+
+
+
+ Get array of .
+
+ Returns an array of XMP packages.
+
+
+
+ Gets by it's namespaceURI.
+
+ The namespace URI to get package for.
+
+ Returns XMP package for specified namespace Uri.
+
+
+
+
+ Clear all inside collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets the number of elements in the collection.
+
+
+ The number of elements in the collection.
+
+
+
+
+ Contains serialized xmp package including header and trailer.
+
+
+ A wrapper consisting of a pair of XML processing instructions (PIs) may be placed around the rdf:RDF element.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The XMP header of processing instruction.
+ The XMP trailer of processing instruction.
+ The XMP metadata.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the package.
+
+ The package.
+
+
+
+ Gets package by namespace URI.
+
+ The package schema URI.
+ Returns the XMP package for specified namespace URI.
+ namespaceUri
+
+
+
+ Determines whethere package is exist in xmp wrapper.
+
+ Package schema uri.
+ Returns true if package with specified namespace Uri exist in XMP wrapper.
+
+
+
+ Removes the XMP package.
+
+ The package.
+
+
+
+ Removes all inside XMP.
+
+
+
+
+ Gets the header processing instruction.
+
+
+ The Header processing instruction.
+
+
+
+
+ Gets the XMP meta. Optional.
+
+
+ The XMP meta. Optional.
+
+
+
+
+ Gets the trailer processing instruction.
+
+
+ Trailer processing instruction.
+
+
+
+
+ Gets array of inside XMP.
+
+
+ The array of inside XMP.
+
+
+
+
+ Gets amount of packages inside XMP structure.
+
+
+ The amount of packages inside XMP structure.
+
+
+
+
+ Represents rdf:RDF element.
+ A single XMP packet shall be serialized using a single rdf:RDF XML element. The rdf:RDF element content shall consist of only zero or more rdf:Description elements.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds namespace uri by prefix. Prefix may start without xmlns.
+
+ The prefix.
+ Package schema uri.
+
+
+
+ Gets namespace URI by specific prefix. Prefix may start without xmlns.
+
+ The prefix.
+ Returns a package schema URI.
+
+
+
+ Converts xmp value to the xml representation.
+
+ Returns XMP value converted to XML string.
+
+
+
+ Represents XMP trailer processing instruction.
+
+
+ The end="w" or end="r" portion shall be used by packet scanning processors to determine whether the XMP
+ may be modified in-place.
+
+
+ Allowed forms of the trailer PI:
+
+
+
+
+ Initializes a new instance of the class.
+
+ Inditacates whether trailer is writable.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts xmp value to the xml representation.
+
+ Returns XML representation of XMP.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets a value indicating whether this instance is writable.
+
+
+ true if this instance is writable; otherwise, false.
+
+
+
+
+ Encapsulates a custom user-defined line cap.
+
+
+
+
+ Initializes a new instance of the class with the specified outline and fill.
+
+ A object that defines the fill for the custom cap.
+ A object that defines the outline of the custom cap.
+
+
+
+ Initializes a new instance of the class from the specified existing enumeration with the specified outline and fill.
+
+ A object that defines the fill for the custom cap.
+ A object that defines the outline of the custom cap.
+ The line cap from which to create the custom cap.
+
+
+
+ Initializes a new instance of the class from the specified existing enumeration with the specified outline, fill, and inset.
+
+ A object that defines the fill for the custom cap.
+ A object that defines the outline of the custom cap.
+ The line cap from which to create the custom cap.
+ The distance between the cap and the line.
+
+
+
+ Sets the caps used to start and end lines that make up this custom cap.
+
+ The enumeration used at the beginning of a line within this cap.
+ The enumeration used at the end of a line within this cap.
+
+
+
+ Gets the caps used to start and end lines that make up this custom cap.
+
+ The enumeration used at the beginning of a line within this cap.
+ The enumeration used at the end of a line within this cap.
+
+
+
+ Gets or sets the object that defines the fill for the custom cap.
+
+
+ The object that defines the fill for the custom cap.
+
+
+
+
+ Gets or sets the object that defines the outline of the custom cap.
+
+
+ The object that defines the outline of the custom cap.
+
+
+
+
+ Gets or sets the enumeration that determines how lines that compose this object are joined.
+
+ The enumeration this object uses to join lines.
+
+
+
+ Gets or sets the enumeration on which this is based.
+
+ The enumeration on which this is based.
+
+
+
+ Gets or sets the distance between the cap and the line.
+
+ The distance between the beginning of the cap and the end of the line.
+
+
+
+ Gets or sets the amount by which to scale this Class object with respect to the width of the object.
+
+ The amount by which to scale the cap.
+
+
+
+ Specifies the type of graphic shape to use on both ends of each dash in a dashed line.
+
+
+
+
+ Specifies a square cap that squares off both ends of each dash.
+
+
+
+
+ Specifies a circular cap that rounds off both ends of each dash.
+
+
+
+
+ Specifies a triangular cap that points both ends of each dash.
+
+
+
+
+ Specifies the style of dashed lines drawn with a object.
+
+
+
+
+ Specifies a solid line.
+
+
+
+
+ Specifies a line consisting of dashes.
+
+
+
+
+ Specifies a line consisting of dots.
+
+
+
+
+ Specifies a line consisting of a repeating pattern of dash-dot.
+
+
+
+
+ Specifies a line consisting of a repeating pattern of dash-dot-dot.
+
+
+
+
+ Specifies a user-defined custom dash style.
+
+
+
+
+ The data recovery mode.
+
+
+
+
+ No data recovery is implied. Whenever the file format has some corrupted data the appropriate exception is thrown.
+
+
+
+
+ The consistent recovery mode tries to recover all data as long as corruption does not break the file format and allows correct further processing.
+
+
+
+
+ The maximal recovery mode recovers all data even if the file format has corrupted structure and further processing may yield unattended effects.
+
+
+
+
+ Dithering method.
+
+
+
+
+ Threshold dithering. Simplest and fastest dithering algorithm.
+
+
+
+
+ The Floyd-Steinberg dithering. A more complex dithering algorithm, uses nearest neighbors intensity values.
+
+
+
+
+ The dithering methods used to control color conversion.
+
+
+
+
+ The palette is ignored
+
+
+
+
+ The palette is not ignored and wise color conversion should be applied.
+
+
+
+
+ The custom converter.
+
+
+
+
+ Dithering settings to be applied to image upon saving.
+
+
+
+
+ Dithering algorithm selection.
+
+
+
+
+ The sampling factor of dithered image.
+
+
+
+
+ The custom palette for dithering.
+
+
+
+
+ The namespace provides different helper classes for color dithering.
+
+
+
+
+ The compressor exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The Deflate compressor exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The lzw compressor exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The namespace contains exceptions thrown by one of the compression algorithms supported.
+
+
+
+
+ The rle compressor exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The image create exception. Occurs during image creation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The image load exception. Occurs during image loading.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The image save exception. Occurs during image saving.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ The namespace contains exceptions thrown by any of the core Imaging components.
+
+
+
+
+ The stream reading exception. Caused when stream reading failed due to incorrect offset and bytes count request.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+ The expected read count.
+ The actual read count.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The expected read count.
+ The actual read count.
+
+
+
+ Gets the expected read bytes count.
+
+
+ The expected read bytes count.
+
+
+
+
+ Gets the actual read bytes count.
+
+
+ The actual read bytes count.
+
+
+
+
+ The figure. A container for shapes.
+
+
+
+
+ The object having bounds.
+
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Adds a shape to the figure.
+
+ The shape to add.
+
+
+
+ Adds a range of shapes to the figure.
+
+ The shapes to add.
+
+
+
+ Removes a shape from the figure.
+
+ The shape to remove.
+
+
+
+ Removes a range of shapes from the figure.
+
+ The shapes range to remove.
+
+
+
+ Reverses this figure shapes order and shapes point order.
+
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets the figure shapes.
+
+ The figure shapes.
+
+
+
+ Gets or sets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets or sets a value indicating whether this figure is closed. A closed figure will make a difference only in case where
+ the first and the last figure's shapes are continuous shapes. In such case the first point of the first shape will be
+ connected by a straight line from the last point of the last shape.
+
+
+ True if this figure is closed; otherwise, false.
+
+
+
+ Gets the whole figure segments.
+
+ The figure segments.
+
+
+
+ One of supported imaging file formats.
+
+
+
+
+ Undefined file format.
+
+
+
+
+ Custom file format.
+
+
+
+
+ Bmp (Dib) file format.
+
+
+
+
+ Gif file format.
+
+
+
+
+ Jpeg file format.
+
+
+
+
+ Png file format.
+
+
+
+
+ Tiff file format.
+
+
+
+
+ Psd file format.
+
+
+
+
+ Jpeg2000 file format
+
+
+
+
+ Djvu file format
+
+
+
+
+ The webp file format
+
+
+
+
+ The Emf/Emf+ file format
+
+
+
+
+ The dicom format
+
+
+
+
+ SVG file format
+
+
+
+
+ The Wmf file format
+
+
+
+
+ The DNG file format
+
+
+
+
+ The Open document graphic format
+
+
+
+
+ The CDR file format
+
+
+
+
+ The CMX file format
+
+
+
+
+ The otg file format
+
+
+
+
+ The Encapsulated PostScript format
+
+
+
+
+ Helper for file stream processing.
+
+
+
+
+ Represents stream container which contains the stream and provides stream processing routines.
+
+
+
+
+ Specifies read and write bytes count when reading sequentially.
+
+
+
+
+ The starting position inside the stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The data stream.
+ if set to true the stream will be disposed when container is disposed.
+
+
+
+ Performs an explicit conversion from to .
+
+ The stream container.
+ The result of the conversion.
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+
+
+ Writes all of the specified bytes to the stream.
+
+ The bytes to write.
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+
+
+ Reads bytes to fill the specified bytes buffer.
+
+ The bytes to fill.
+ The number of bytes read. This value can be less than the number of bytes in the buffer if there is not enough bytes in the stream.
+
+
+
+ Converts the stream data to the array.
+
+
+ The stream data converted to the array.
+
+
+
+
+ Converts the stream data to the array.
+
+ The position to start reading bytes from.
+ The bytes count to read.
+
+ The stream data converted to the array.
+
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an Int32, or -1 if at the end of the stream.
+
+
+
+
+ Sets the position within the current stream.
+
+ A byte offset relative to the parameter. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+ A value of type indicating the reference point used to obtain the new position.
+ The new position within the current stream.
+
+
+
+ Sets the stream position to the beginning of the stream. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+
+
+ Saves (copies) the stream's data to the specified stream. Uses default buffer size and stream value.
+
+ The stream to save the data to.
+
+
+
+ Saves (copies) all the stream's data to the specified stream. Uses stream value.
+
+ The stream to save the data to.
+ The buffer.
+
+
+
+ Saves (copies) the stream's data to the specified stream.
+
+ The stream to save the data to.
+ The buffer size. By default value is used.
+ The stream data length to copy. By default the length is set to value.
+
+
+
+ Saves (copies) the stream's data to the specified stream. Uses default buffer size and stream value.
+
+ The file path to save the stream data to.
+
+
+
+ Saves (copies) the stream's data to the specified stream. Uses stream value.
+
+ The file path to save the stream data to.
+ The buffer size. By default value is used.
+
+
+
+ Saves (copies) the stream's data to the specified stream.
+
+ The file path to save the stream data to.
+ The buffer size. By default value is used.
+ The stream data length to copy. By default the length is set to value.
+
+
+
+ Copies the contained data to another .
+
+ The stream container to copy to.
+
+
+
+ Copies the contained data to another .
+
+ The stream container to copy to.
+ The bytes count to write.
+ Copy operation cannot complete. Cannot read + count + bytes.
+
+
+
+ Called after the stream is disposed.
+
+
+
+
+ Called before the stream is disposed.
+
+
+
+
+ Called before save occurs on the destination stream.
+
+ The destination stream.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Disposes the stream.
+
+
+
+
+ Gets an object that can be used to synchronize access to the synchronized resource.
+
+
+ The object that can be used to synchronize access to the synchronized resource.
+
+
+
+
+ Gets or sets the current position within the stream. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+
+ The current stream position.
+
+
+
+ Gets the data stream.
+
+ The data stream.
+
+
+
+ Gets a value indicating whether this stream is disposed on close.
+
+
+ true if stream is disposed on close; otherwise, false.
+
+
+
+ Gets or sets the stream length in bytes. This value is less than the by the starting stream position passed in the StreamContainer constructor.
+
+ The stream length.
+
+
+
+ Gets a value indicating whether stream supports reading.
+
+
+ true if stream supports reading; otherwise, false.
+
+
+
+ Gets a value indicating whether stream supports seeking.
+
+
+ true if stream supports seeking; otherwise, false.
+
+
+
+ Gets a value indicating whether stream supports writing.
+
+
+ true if stream supports writing; otherwise, false.
+
+
+
+ Performs an explicit conversion from to .
+
+ The file stream container.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The file stream container.
+ The result of the conversion.
+
+
+
+ Creates a new file stream.
+
+ The file location.
+ If set to true the file stream container is temporal.
+ The file stream container.
+
+
+
+ Opens an existing file stream. If file stream does not exist the appropriate exception is thrown.
+
+ The file location.
+
+ The file stream container.
+
+
+
+
+ Called after the stream is disposed.
+
+
+
+
+ Called before save occurs on the destination stream.
+
+ The destination stream.
+
+
+
+ Gets or sets a value indicating whether stream is temporal.
+
+
+ true if stream is temporal; otherwise, false.
+
+ A temporal stream will remove iself when disposed. If the stream is memory based this property has no effect.
+ The stream can be marked as temporal or persistent in case it was created explicitly otherwise the appropriate exception is thrown.
+
+
+
+ Gets a value indicating whether stream was created explicitly.
+
+
+ true if stream was created explicitly; otherwise, false.
+
+
+
+
+ Gets the file path.
+
+ The file path.
+
+
+
+ Specifies how the interior of a closed path is filled.
+
+
+
+
+ Specifies the alternate fill mode.
+
+
+
+
+ Specifies the winding fill mode.
+
+
+
+
+ Defines a particular format for text, including font face, size, and style attributes. This class cannot be inherited.
+
+
+
+
+ Initializes a new that uses the specified existing and enumeration.
+
+ The existing from which to create the new .
+ The to apply to the new . Multiple values of the enumeration can be combined with the OR operator.
+
+ is null.
+
+
+
+ Initializes a new using a specified size. The character set is set to , the graphics unit to , the font style to .
+
+ A string representation of the name.
+ The em-size, in points, of the new font.
+
+ is less than or equal to 0, evaluates to infinity or is not a valid number.
+
+ is null.
+
+
+
+ Initializes a new using a specified size and style. The character set is set to , the graphics unit to .
+
+ A string representation of the name.
+ The em-size, in points, of the new font.
+ The of the new font.
+
+ is less than or equal to 0, evaluates to infinity or is not a valid number.
+
+ is null.
+
+
+
+ Initializes a new using a specified size and unit. The character set is set to , the style is set to .
+
+ A string representation of the name.
+ The em-size of the new font in the units specified by the parameter.
+ The of the new font.
+
+ is less than or equal to 0, evaluates to infinity or is not a valid number.
+
+ is null.
+
+
+
+ Initializes a new using a specified size, style, unit, and character set.
+
+ A string representation of the name.
+ The em-size of the new font in the units specified by the parameter.
+ The of the new font.
+ The of the new font.
+ A character set to use for this font.
+
+ is less than or equal to 0, evaluates to infinity or is not a valid number.
+
+ is null.
+
+
+
+ Initializes a new using a specified size, style, and unit.
+
+ A string representation of the name.
+ The em-size of the new font in the units specified by the parameter.
+ The of the new font.
+ The of the new font.
+
+ is less than or equal to 0, evaluates to infinity or is not a valid number.
+
+ is null.
+
+
+
+ Creates an exact deep copy of this .
+
+ The this method creates.
+
+
+
+ Indicates whether the specified object is a and has the same property values as this .
+
+ The object to test.
+ True if the parameter is a and has the same property values as this ; otherwise, false.
+
+
+
+ Gets the hash code for this .
+
+ The hash code for this .
+
+
+
+ Returns a human-readable string representation of this .
+
+ A string that represents this .
+
+
+
+ Gets a value indicating whether this is bold.
+
+ True if this is bold; otherwise, false.
+
+
+
+ Gets a byte value that specifies the character set that this uses.
+
+ A character set that this uses.
+
+
+
+ Gets a value indicating whether this is italic.
+
+ True if this is italic; otherwise, false.
+
+
+
+ Gets the face name of this .
+
+ A string representation of the face name of this .
+
+
+
+ Gets a value indicating whether this specifies a horizontal line through the font.
+
+ True if this has a horizontal line through it; otherwise, false.
+
+
+
+ Gets a value indicating whether this is underlined.
+
+ True if this is underlined; otherwise, false.
+
+
+
+ Gets style information for this .
+
+ A enumeration that contains style information for this .
+
+
+
+ Gets the em-size of this measured in the units specified by the property.
+
+ The em-size of this .
+
+
+
+ Gets the unit of measure for this .
+
+ A that represents the unit of measure for this .
+
+
+
+ Specifies style information applied to text.
+
+
+
+
+ Normal text.
+
+
+
+
+ Bold text.
+
+
+
+
+ Italic text.
+
+
+
+
+ Underlined text.
+
+
+
+
+ Text with a line through the middle.
+
+
+
+
+ Represents the graphics according to the graphics engine used in the current assembly.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source image.
+
+
+
+ Resets the property to identity.
+
+
+
+
+ Multiplies the that represents the local geometric transform of this by the specified by prepending the specified .
+
+ The by which to multiply the geometric transform.
+
+
+
+ Multiplies the that represents the local geometric transform of this by the specified in the specified order.
+
+ The by which to multiply the geometric transform.
+ A that specifies in which order to multiply the two matrices.
+
+
+
+ Translates the local geometric transform by the specified dimensions. This method prepends the translation to the transform.
+
+ The value of the translation in x.
+ The value of the translation in y.
+
+
+
+ Translates the local geometric transform by the specified dimensions in the specified order.
+
+ The value of the translation in x.
+ The value of the translation in y.
+ The order (prepend or append) in which to apply the translation.
+
+
+
+ Scales the local geometric transform by the specified amounts. This method prepends the scaling matrix to the transform.
+
+ The amount by which to scale the transform in the x-axis direction.
+ The amount by which to scale the transform in the y-axis direction.
+
+
+
+ Scales the local geometric transform by the specified amounts in the specified order.
+
+ The amount by which to scale the transform in the x-axis direction.
+ The amount by which to scale the transform in the y-axis direction.
+ A that specifies whether to append or prepend the scaling matrix.
+
+
+
+ Rotates the local geometric transform by the specified amount. This method prepends the rotation to the transform.
+
+ The angle of rotation.
+
+
+
+ Rotates the local geometric transform by the specified amount in the specified order.
+
+ The angle of rotation.
+ A that specifies whether to append or prepend the rotation matrix.
+
+
+
+ Starts caching of the following graphics operations. The graphics effects applied afterwards will not be applied immediately instead the EndUpdate will cause applying all the effects at once.
+
+ Note the effects after BeginUpdate is called will not be applied in case EndUpdate is not called.
+
+
+
+ Finishes caching of the graphics operations started after BeginUpdate was called. The preceding graphics operations will be applied at once when calling this method.
+
+
+
+
+ Clears the graphics surface using the specified color.
+
+ The color to clear the graphics surface by.
+
+
+
+ Draws a line connecting two structures.
+
+
+ that determines the color, width, and style of the line.
+
+ structure that represents the first point to connect.
+
+ structure that represents the second point to connect.
+
+ is null.
+
+
+
+ Draws a line connecting two structures.
+
+
+ that determines the color, width, and style of the line.
+
+ structure that represents the first point to connect.
+
+ structure that represents the second point to connect.
+
+ is null.
+
+
+
+ Draws a line connecting the two points specified by the coordinate pairs.
+
+
+ that determines the color, width, and style of the line.
+ The x-coordinate of the first point.
+ The y-coordinate of the first point.
+ The x-coordinate of the second point.
+ The y-coordinate of the second point.
+
+ is null.
+
+
+
+ Draws a line connecting the two points specified by the coordinate pairs.
+
+
+ that determines the color, width, and style of the line.
+ The x-coordinate of the first point.
+ The y-coordinate of the first point.
+ The x-coordinate of the second point.
+ The y-coordinate of the second point.
+
+ is null.
+
+
+
+ Draws a series of line segments that connect an array of structures.
+
+
+ that determines the color, width, and style of the line segments.
+ Array of structures that represent the points to connect.
+
+ is null.
+ -or-
+ is null.
+ The array contains less than 2 points.
+
+
+
+ Draws a series of line segments that connect an array of structures.
+
+
+ that determines the color, width, and style of the line segments.
+ Array of structures that represent the points to connect.
+
+ is null.
+ -or-
+ is null.
+ The array contains less than 2 points.
+
+
+
+ Fills the interior of a rectangle specified by a structure.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the rectangle to fill.
+
+ is null.
+
+
+
+ Fills the interior of a rectangle specified by a structure.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the rectangle to fill.
+
+ is null.
+
+
+
+ Fills the interior of a rectangle specified by a pair of coordinates, a width and a height.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the rectangle to fill.
+ The y-coordinate of the upper-left corner of the rectangle to fill.
+ Width of the rectangle to fill.
+ Height of the rectangle to fill.
+
+ is null.
+
+
+
+ Fills the interior of a rectangle specified by a pair of coordinates, a width and a height.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the rectangle to fill.
+ The y-coordinate of the upper-left corner of the rectangle to fill.
+ Width of the rectangle to fill.
+ Height of the rectangle to fill.
+
+ is null.
+
+
+
+ Fills the interiors of a series of rectangles specified by structures.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the rectangles to fill.
+
+ is null or is null.
+
+
+
+ Fills the interiors of a series of rectangles specified by structures.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the rectangles to fill.
+
+ is null or is null.
+
+
+
+ Draws a rectangle specified by a structure.
+
+ A that determines the color, width, and style of the rectangle.
+ A structure that represents the rectangle to draw.
+
+ is null.
+
+
+
+ Draws a rectangle specified by a structure.
+
+ A that determines the color, width, and style of the rectangle.
+ A structure that represents the rectangle to draw.
+
+ is null.
+
+
+
+ Draws a rectangle specified by a coordinate pair, a width, and a height.
+
+ A that determines the color, width, and style of the rectangle.
+ The x-coordinate of the upper-left corner of the rectangle to draw.
+ The y-coordinate of the upper-left corner of the rectangle to draw.
+ The width of the rectangle to draw.
+ The height of the rectangle to draw.
+
+ is null.
+
+
+
+ Draws a rectangle specified by a coordinate pair, a width, and a height.
+
+
+ that determines the color, width, and style of the rectangle.
+ The x-coordinate of the upper-left corner of the rectangle to draw.
+ The y-coordinate of the upper-left corner of the rectangle to draw.
+ Width of the rectangle to draw.
+ Height of the rectangle to draw.
+
+ is null.
+
+
+
+ Draws a series of rectangles specified by structures.
+
+
+ that determines the color, width, and style of the outlines of the rectangles.
+ Array of structures that represent the rectangles to draw.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a series of rectangles specified by structures.
+
+
+ that determines the color, width, and style of the outlines of the rectangles.
+ Array of structures that represent the rectangles to draw.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws an ellipse defined by a bounding .
+
+
+ that determines the color, width, and style of the ellipse.
+
+ structure that defines the boundaries of the ellipse.
+
+ is null.
+
+
+
+ Draws an ellipse defined by a bounding rectangle specified by a pair of coordinates, a height, and a width.
+
+
+ that determines the color, width, and style of the ellipse.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ Width of the bounding rectangle that defines the ellipse.
+ Height of the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Draws an ellipse specified by a bounding structure.
+
+
+ that determines the color, width, and style of the ellipse.
+
+ structure that defines the boundaries of the ellipse.
+
+ is null.
+
+
+
+ Draws an ellipse defined by a bounding rectangle specified by a pair of coordinates, a height, and a width.
+
+
+ that determines the color, width, and style of the ellipse.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ Width of the bounding rectangle that defines the ellipse.
+ Height of the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Draws a polygon defined by an array of structures.
+
+
+ that determines the color, width, and style of the polygon.
+ Array of structures that represent the vertices of the polygon.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a polygon defined by an array of structures.
+
+
+ that determines the color, width, and style of the polygon.
+ Array of structures that represent the vertices of the polygon.
+
+ is null.
+
+
+
+ Draws the specified , using its original physical size, at the specified location.
+
+ The image to draw with.
+
+ structure that represents the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified , using its original physical size, at the specified location.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+
+ structure that specifies the location and size of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The destination rectangle.
+ The graphics unit.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The destination rectangle.
+ The graphics unit.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The destination rectangle.
+ The graphics unit.
+ The image attributes.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The destination rectangle to draw in.
+ The graphics unit.
+ The image attributes.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The rect source.
+ The rect destination.
+ The graphics unit.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The rect source.
+ The rect destination.
+ The graphics unit.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The rect source.
+ The rect destination.
+ The graphics unit.
+ The image attributes.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The source rectangle.
+ The destination rectangle.
+ The graphics unit to use.
+ The image attributes to use.
+
+ is null.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+ The units of measure.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+ The units of measure.
+ The image attributes.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ image
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+ The units of measure.
+
+
+
+ Draws the specified portion of the specified at the specified location and with the specified size.
+
+ The image to draw.
+ Array of three PointF structures that define a parallelogram.
+ The source rectangle.
+ The units of measure.
+ The image attributes.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+ Width of the drawn image.
+ Height of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified , using its original physical size, at the specified location.
+
+ The image to draw with.
+
+ structure that represents the location of the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified image, using its original physical size, at the location specified by a coordinate pair.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+
+ structure that specifies the location and size of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified at the specified location and with the specified size.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+ Width of the drawn image.
+ Height of the drawn image.
+
+ is null.
+
+
+
+ Draws a specified image using its original physical size at a specified location.
+
+ The image to draw with.
+
+ structure that specifies the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws the specified image using its original physical size at the location specified by a coordinate pair.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+
+ is null.
+
+
+
+ Draws a specified image using its original physical size at a specified location.
+
+ The image to draw with.
+
+ that specifies the upper-left corner of the drawn image. The X and Y properties of the rectangle specify the upper-left corner. The Width and Height properties are ignored.
+
+ is null.
+
+
+
+ Draws a specified image using its original physical size at a specified location.
+
+ The image to draw with.
+ The x-coordinate of the upper-left corner of the drawn image.
+ The y-coordinate of the upper-left corner of the drawn image.
+ The parameter is not used.
+ The parameter is not used.
+
+ is null.
+
+
+
+ Draws the specified image without scaling and clips it, if necessary, to fit in the specified rectangle.
+
+ The image to draw with.
+ The in which to draw the image.
+
+ is null.
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a pair of coordinates, a width, and a height.
+
+
+ that determines the color, width, and style of the arc.
+ The x-coordinate of the upper-left corner of the rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the rectangle that defines the ellipse.
+ Width of the rectangle that defines the ellipse.
+ Height of the rectangle that defines the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the parameter to ending point of the arc.
+
+ is null.
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a structure.
+
+
+ that determines the color, width, and style of the arc.
+
+ structure that defines the boundaries of the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the parameter to ending point of the arc.
+
+ is null
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a pair of coordinates, a width, and a height.
+
+
+ that determines the color, width, and style of the arc.
+ The x-coordinate of the upper-left corner of the rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the rectangle that defines the ellipse.
+ Width of the rectangle that defines the ellipse.
+ Height of the rectangle that defines the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the parameter to ending point of the arc.
+
+ is null.
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a structure.
+
+
+ that determines the color, width, and style of the arc.
+
+ structure that defines the boundaries of the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the parameter to ending point of the arc.
+
+ is null.
+
+
+
+ Draws a pie shape defined by an ellipse specified by a structure and two radial lines.
+
+
+ that determines the color, width, and style of the pie shape.
+
+ structure that represents the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Angle measured in degrees clockwise from the x-axis to the first side of the pie shape.
+ Angle measured in degrees clockwise from the parameter to the second side of the pie shape.
+
+ is null.
+
+
+
+ Draws a pie shape defined by an ellipse specified by a coordinate pair, a width, a height, and two radial lines.
+
+
+ that determines the color, width, and style of the pie shape.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Width of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Height of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Angle measured in degrees clockwise from the x-axis to the first side of the pie shape.
+ Angle measured in degrees clockwise from the parameter to the second side of the pie shape.
+
+ is null.
+
+
+
+ Draws a pie shape defined by an ellipse specified by a structure and two radial lines.
+
+
+ that determines the color, width, and style of the pie shape.
+
+ structure that represents the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Angle measured in degrees clockwise from the x-axis to the first side of the pie shape.
+ Angle measured in degrees clockwise from the parameter to the second side of the pie shape.
+
+ is null.
+
+
+
+ Draws a pie shape defined by an ellipse specified by a coordinate pair, a width, a height, and two radial lines.
+
+
+ that determines the color, width, and style of the pie shape.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Width of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Height of the bounding rectangle that defines the ellipse from which the pie shape comes.
+ Angle measured in degrees clockwise from the x-axis to the first side of the pie shape.
+ Angle measured in degrees clockwise from the parameter to the second side of the pie shape.
+
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures. This method uses a default tension of 0.5.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures using a specified tension.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that represent the points that define the curve.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures. The drawing begins offset from the beginning of the array.
+ This method uses a default tension of 0.5.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Offset from the first element in the array of the parameter to the starting point in the curve.
+ Number of segments after the starting point to include in the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures using a specified tension. The drawing begins offset from the beginning of the array.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Offset from the first element in the array of the parameter to the starting point in the curve.
+ Number of segments after the starting point to include in the curve.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures using a specified tension.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a cardinal spline through a specified array of structures using a specified tension.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Offset from the first element in the array of the parameter to the starting point in the curve.
+ Number of segments after the starting point to include in the curve.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a closed cardinal spline defined by an array of structures. This method uses a default tension of 0.5 and fill mode.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a closed cardinal spline defined by an array of structures using a specified tension. This method uses a default fill mode.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a closed cardinal spline defined by an array of structures. This method uses a default tension of 0.5 and fill mode.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a closed cardinal spline defined by an array of structures using a specified tension. This method uses a default fill mode.
+
+
+ that determines the color, width, and height of the curve.
+ Array of structures that define the spline.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a Bézier spline defined by four ordered pairs of coordinates that represent points.
+
+
+ that determines the color, width, and style of the curve.
+ The x-coordinate of the starting point of the curve.
+ The y-coordinate of the starting point of the curve.
+ The x-coordinate of the first control point of the curve.
+ The y-coordinate of the first control point of the curve.
+ The x-coordinate of the second control point of the curve.
+ The y-coordinate of the second control point of the curve.
+ The x-coordinate of the ending point of the curve.
+ The y-coordinate of the ending point of the curve.
+
+ is null.
+
+
+
+ Draws a Bézier spline defined by four structures.
+
+
+ that determines the color, width, and style of the curve.
+
+ structure that represents the starting point of the curve.
+
+ structure that represents the first control point for the curve.
+
+ structure that represents the second control point for the curve.
+
+ structure that represents the ending point of the curve.
+
+ is null.
+
+
+
+ Draws a Bézier spline defined by four structures.
+
+
+ structure that determines the color, width, and style of the curve.
+
+ structure that represents the starting point of the curve.
+
+ structure that represents the first control point for the curve.
+
+ structure that represents the second control point for the curve.
+
+ structure that represents the ending point of the curve.
+
+ is null.
+
+
+
+ Draws a series of Bézier splines from an array of structures.
+
+
+ that determines the color, width, and style of the curve.
+ Array of structures that represent the points that determine the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a series of Bézier splines from an array of structures.
+
+
+ that determines the color, width, and style of the curve.
+ Array of structures that represent the points that determine the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string at the specified location with the specified and objects.
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+ The x-coordinate of the upper-left corner of the drawn text.
+ The y-coordinate of the upper-left corner of the drawn text.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string at the specified location with the specified and objects.
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+
+ structure that specifies the upper-left corner of the drawn text.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string at the specified location with the specified and objects using the formatting attributes of the specified .
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+ The x-coordinate of the upper-left corner of the drawn text.
+ The y-coordinate of the upper-left corner of the drawn text.
+
+ that specifies formatting attributes, such as line spacing and alignment, that are applied to the drawn text.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string at the specified location with the specified and objects using the formatting attributes of the specified .
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+
+ structure that specifies the upper-left corner of the drawn text.
+
+ that specifies formatting attributes, such as line spacing and alignment, that are applied to the drawn text.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string in the specified rectangle with the specified and objects.
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+
+ structure that specifies the location of the drawn text.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws the specified text string in the specified rectangle with the specified and objects using the formatting attributes of the specified .
+
+ String to draw.
+
+ that defines the text format of the string.
+
+ that determines the color and texture of the drawn text.
+
+ structure that specifies the location of the drawn text.
+
+ that specifies formatting attributes, such as line spacing and alignment, that are applied to the drawn text.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of an ellipse defined by a bounding rectangle specified by a structure.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Fills the interior of an ellipse defined by a bounding rectangle specified by a pair of coordinates, a width, and a height.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ Width of the bounding rectangle that defines the ellipse.
+ Height of the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Fills the interior of an ellipse defined by a bounding rectangle specified by a structure.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Fills the interior of an ellipse defined by a bounding rectangle specified by a pair of coordinates, a width, and a height.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.
+ Width of the bounding rectangle that defines the ellipse.
+ Height of the bounding rectangle that defines the ellipse.
+
+ is null.
+
+
+
+ Fills the interior of a pie section defined by an ellipse specified by a structure and two radial lines.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the bounding rectangle that defines the ellipse from which the pie section comes.
+ Angle in degrees measured clockwise from the x-axis to the first side of the pie section.
+ Angle in degrees measured clockwise from the parameter to the second side of the pie section.
+
+ is null.
+
+
+
+ Fills the interior of a pie section defined by an ellipse specified by a structure and two radial lines.
+
+
+ that determines the characteristics of the fill.
+
+ structure that represents the bounding rectangle that defines the ellipse from which the pie section comes.
+ Angle in degrees measured clockwise from the x-axis to the first side of the pie section.
+ Angle in degrees measured clockwise from the parameter to the second side of the pie section.
+
+ is null.
+
+
+
+ Fills the interior of a pie section defined by an ellipse specified by a pair of coordinates, a width, a height, and two radial lines.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Width of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Height of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Angle in degrees measured clockwise from the x-axis to the first side of the pie section.
+ Angle in degrees measured clockwise from the parameter to the second side of the pie section.
+
+ is null.
+
+
+
+ Fills the interior of a pie section defined by an ellipse specified by a pair of coordinates, a width, a height, and two radial lines.
+
+
+ that determines the characteristics of the fill.
+ The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.
+ The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Width of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Height of the bounding rectangle that defines the ellipse from which the pie section comes.
+ Angle in degrees measured clockwise from the x-axis to the first side of the pie section.
+ Angle in degrees measured clockwise from the parameter to the second side of the pie section.
+
+ is null.
+
+
+
+ Fills the interior of a polygon defined by an array of points specified by structures and .
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the vertices of the polygon to fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a polygon defined by an array of points specified by structures using the specified fill mode.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the vertices of the polygon to fill.
+ Member of the enumeration that determines the style of the fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a polygon defined by an array of points specified by structures and .
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the vertices of the polygon to fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a polygon defined by an array of points specified by structures using the specified fill mode.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that represent the vertices of the polygon to fill.
+ Member of the enumeration that determines the style of the fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures. This method uses a default tension of 0.5 and fill mode.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures using the specified fill mode. This method uses a default tension of 0.5.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that define the spline.
+ Member of the enumeration that determines how the curve is filled.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures using the specified fill mode and tension.
+
+ A that determines the characteristics of the fill.
+ Array of structures that define the spline.
+ Member of the enumeration that determines how the curve is filled.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures. This method uses a default tension of 0.5 and fill mode.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that define the spline.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures using the specified fill mode. This method uses a default tension of 0.5.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that define the spline.
+ Member of the enumeration that determines how the curve is filled.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a closed cardinal spline curve defined by an array of structures using the specified fill mode and tension.
+
+
+ that determines the characteristics of the fill.
+ Array of structures that define the spline.
+ Member of the enumeration that determines how the curve is filled.
+ Value greater than or equal to 0.0F that specifies the tension of the curve.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Draws a .
+
+
+ that determines the color, width, and style of the path.
+
+ to draw.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a .
+
+
+ that determines the characteristics of the fill.
+
+ that represents the path to fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Fills the interior of a .
+
+
+ that determines the characteristics of the fill.
+
+ that represents the area to fill.
+
+ is null.
+ -or-
+ is null.
+
+
+
+ Gets the horizontal resolution of this Aspose.Imaging.Graphics.
+
+
+ The value, in dots per inch, for the horizontal resolution supported by this Aspose.Imaging.Graphics.
+
+
+
+
+ Gets the vertical resolution of this Aspose.Imaging.Graphics.
+
+
+ The value, in dots per inch, for the vertical resolution supported by this Aspose.Imaging.Graphics.
+
+
+
+
+ Gets or sets the unit of measure used for page coordinates in this Aspose.Imaging.Graphics.
+
+
+ The unit of measure used for page coordinates in this Aspose.Imaging.Graphics.
+
+
+
+
+ Gets or sets the scaling between world units and page units for this Aspose.Imaging.Graphics.
+
+
+ The scaling between world units and page units for this Aspose.Imaging.Graphics.
+
+
+
+
+ Gets or sets the clip region.
+
+
+ The clip region.
+
+
+
+
+ Gets or sets a copy of the geometric world transformation for this .
+
+
+ A copy of the that represents the geometric world transformation for this .
+
+
+
+
+ Gets a value indicating whether graphics is in BeginUpdate call state.
+
+
+ True if graphics is in BeginUpdate call state; otherwise, false.
+
+
+
+
+ Gets the image.
+
+ The graphics image.
+
+
+
+ Gets or sets the compositing quality.
+
+ The compositing quality.
+
+
+
+ Gets or sets the interpolation mode.
+
+ The interpolation mode.
+
+
+
+ Gets or sets the smoothing mode.
+
+ The smoothing mode.
+
+
+
+ Gets or sets the text rendering hint.
+
+ The text rendering hint.
+
+
+
+ Represents a series of connected lines and curves. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The figures to initialize from.
+
+
+
+ Initializes a new instance of the class.
+
+ The figures to initialize from.
+ The fill mode.
+
+
+
+ Initializes a new instance of the class.
+
+ The fill mode.
+
+
+
+ Empties the graphics path and sets the to .
+
+
+
+
+ Reverses the order of figures, shapes, and points in each shape of this .
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ A that represents the point to test.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ A that represents the point to test.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this in the visible clip region of the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ A that represents the point to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within this; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this , using the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within this .
+
+ A that represents the point to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The to test.
+
+ This method returns true if the specified point is contained within the outline of this when drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified .
+
+ A that specifies the location to test.
+ The to test.
+
+ This method returns true if the specified point is contained within the outline of this when drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified and using the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within (under) the outline of this as drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified and using the specified .
+
+ A that specifies the location to test.
+ The to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within (under) the outline of this as drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The to test.
+
+ This method returns true if the specified point is contained within the outline of this when drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified .
+
+ A that specifies the location to test.
+ The to test.
+
+ This method returns true if the specified point is contained within the outline of this when drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified and using the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ The to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within the outline of this as drawn with the specified ; otherwise, false.
+
+
+
+
+ Indicates whether the specified point is contained within (under) the outline of this when drawn with the specified and using the specified .
+
+ A that specifies the location to test.
+ The to test.
+ The for which to test visibility.
+
+ This method returns true if the specified point is contained within the outline of this as drawn with the specified ; otherwise, false.
+
+
+
+
+ Converts each curve in this path into a sequence of connected line segments.
+
+
+
+
+ Applies the specified transform and then converts each curve in this into a sequence of connected line segments.
+
+ A by which to transform this before flattening.
+
+
+
+ Converts each curve in this into a sequence of connected line segments.
+
+ A by which to transform this before flattening.
+ Specifies the maximum permitted error between the curve and its flattened approximation. A value of 0.25 is the default. Reducing the flatness value will increase the number of line segments in the approximation.
+
+
+
+ Adds an additional outline to the path.
+
+ A that specifies the width between the original outline of the path and the new outline this method creates.
+
+
+
+ Adds an additional outline to the .
+
+ A that specifies the width between the original outline of the path and the new outline this method creates.
+ A that specifies a transform to apply to the path before widening.
+
+
+
+ Replaces this with curves that enclose the area that is filled when this path is drawn by the specified pen.
+
+ A that specifies the width between the original outline of the path and the new outline this method creates.
+ A that specifies a transform to apply to the path before widening.
+ A value that specifies the flatness for curves.
+
+
+
+ Applies a warp transform, defined by a rectangle and a parallelogram, to this .
+
+ An array of structures that define a parallelogram to which the rectangle defined by is transformed. The array can contain either three or four elements. If the array contains three elements, the lower-right corner of the parallelogram is implied by the first three points.
+ A that represents the rectangle that is transformed to the parallelogram defined by .
+
+
+
+ Applies a warp transform, defined by a rectangle and a parallelogram, to this .
+
+ An array of structures that define a parallelogram to which the rectangle defined by is transformed. The array can contain either three or four elements. If the array contains three elements, the lower-right corner of the parallelogram is implied by the first three points.
+ A that represents the rectangle that is transformed to the parallelogram defined by .
+ A that specifies a geometric transform to apply to the path.
+
+
+
+ Applies a warp transform, defined by a rectangle and a parallelogram, to this .
+
+ An array of structures that defines a parallelogram to which the rectangle defined by is transformed. The array can contain either three or four elements. If the array contains three elements, the lower-right corner of the parallelogram is implied by the first three points.
+ A that represents the rectangle that is transformed to the parallelogram defined by .
+ A that specifies a geometric transform to apply to the path.
+ A enumeration that specifies whether this warp operation uses perspective or bilinear mode.
+
+
+
+ Applies a warp transform, defined by a rectangle and a parallelogram, to this .
+
+ An array of structures that define a parallelogram to which the rectangle defined by is transformed. The array can contain either three or four elements. If the array contains three elements, the lower-right corner of the parallelogram is implied by the first three points.
+ A that represents the rectangle that is transformed to the parallelogram defined by .
+ A that specifies a geometric transform to apply to the path.
+ A enumeration that specifies whether this warp operation uses perspective or bilinear mode.
+ A value from 0 through 1 that specifies how flat the resulting path is. For more information, see the methods.
+
+
+
+ Adds a new figure.
+
+ The figure to add.
+
+
+
+ Adds new figures.
+
+ The figures to add.
+
+
+
+ Removes a figure.
+
+ The figure to remove.
+
+
+
+ Removes figures.
+
+ The figures to remove.
+
+
+
+ Appends the specified to this path.
+
+ The to add.
+
+
+
+ Appends the specified to this path.
+
+ The to add.
+ A Boolean value that specifies whether the first figure in the added path is part of the last figure in this path. A value of true specifies that the first figure in the added path is part of the last figure in this path. A value of false specifies that the first figure in the added path is separate from the last figure in this path.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Performs a deep clone of this graphics path.
+
+ A deep clone of the graphics path.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets or sets a enumeration that determines how the interiors of shapes in this are filled.
+
+ The fill mode.
+
+ A enumeration that specifies how the interiors of shapes in this are filled.
+
+
+
+
+
+
+
+ Gets the path figures.
+
+ The path figures.
+
+
+
+ Gets or sets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Specifies the unit of measure for the given data.
+
+
+
+
+ Specifies the world coordinate system unit as the unit of measure.
+
+
+
+
+ Specifies the unit of measure of the display device. Typically pixels for video displays, and 1/100 inch for printers.
+
+
+
+
+ Specifies a device pixel as the unit of measure.
+
+
+
+
+ Specifies a printer's point (1/72 inch) as the unit of measure.
+
+
+
+
+ Specifies the inch as the unit of measure.
+
+
+
+
+ Specifies the document unit (1/300 inch) as the unit of measure.
+
+
+
+
+ Specifies the millimeter as the unit of measure.
+
+
+
+
+ Specifies the different patterns available for objects.
+
+
+
+
+ A pattern of horizontal lines.
+
+
+
+
+ Specifies hatch style Horizontal.
+
+
+
+
+ A pattern of vertical lines.
+
+
+
+
+ A pattern of lines on a diagonal from upper left to lower right.
+
+
+
+
+ A pattern of lines on a diagonal from upper right to lower left.
+
+
+
+
+ Specifies horizontal and vertical lines that cross.
+
+
+
+
+ Specifies the hatch style Cross.
+
+
+
+
+ Specifies hatch style SolidDiamond.
+
+
+
+
+ A pattern of crisscross diagonal lines.
+
+
+
+
+ Specifies a 5-percent hatch. The ratio of foreground color to background color is 5:95.
+
+
+
+
+ Specifies a 10-percent hatch. The ratio of foreground color to background color is 10:90.
+
+
+
+
+ Specifies a 20-percent hatch. The ratio of foreground color to background color is 20:80.
+
+
+
+
+ Specifies a 25-percent hatch. The ratio of foreground color to background color is 25:75.
+
+
+
+
+ Specifies a 30-percent hatch. The ratio of foreground color to background color is 30:70.
+
+
+
+
+ Specifies a 40-percent hatch. The ratio of foreground color to background color is 40:60.
+
+
+
+
+ Specifies a 50-percent hatch. The ratio of foreground color to background color is 50:50.
+
+
+
+
+ Specifies a 60-percent hatch. The ratio of foreground color to background color is 60:40.
+
+
+
+
+ Specifies a 70-percent hatch. The ratio of foreground color to background color is 70:30.
+
+
+
+
+ Specifies a 75-percent hatch. The ratio of foreground color to background color is 75:25.
+
+
+
+
+ Specifies a 80-percent hatch. The ratio of foreground color to background color is 80:100.
+
+
+
+
+ Specifies a 90-percent hatch. The ratio of foreground color to background color is 90:10.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top points to bottom points and are spaced 50 percent closer together than ForwardDiagonal, but are not antialiased.
+
+
+
+
+ Specifies diagonal lines that slant to the left from top points to bottom points and are spaced 50 percent closer together than BackwardDiagonal, but they are not antialiased.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top points to bottom points, are spaced 50 percent closer together than, and are twice the width of ForwardDiagonal. This hatch pattern is not antialiased.
+
+
+
+
+ Specifies diagonal lines that slant to the left from top points to bottom points, are spaced 50 percent closer together than BackwardDiagonal, and are twice its width, but the lines are not antialiased.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top points to bottom points, have the same spacing as hatch style ForwardDiagonal, and are triple its width, but are not antialiased.
+
+
+
+
+ Specifies diagonal lines that slant to the left from top points to bottom points, have the same spacing as hatch style BackwardDiagonal, and are triple its width, but are not antialiased.
+
+
+
+
+ Specifies vertical lines that are spaced 50 percent closer together than Vertical.
+
+
+
+
+ Specifies horizontal lines that are spaced 50 percent closer together than Horizontal.
+
+
+
+
+ Specifies vertical lines that are spaced 75 percent closer together than hatch style Vertical (or 25 percent closer together than LightVertical).
+
+
+
+
+ Specifies horizontal lines that are spaced 75 percent closer together than hatch style Horizontal (or 25 percent closer together than LightHorizontal).
+
+
+
+
+ Specifies vertical lines that are spaced 50 percent closer together than Vertical and are twice its width.
+
+
+
+
+ Specifies horizontal lines that are spaced 50 percent closer together than Horizontal and are twice the width of Horizontal.
+
+
+
+
+ Specifies dashed diagonal lines, that slant to the right from top points to bottom points.
+
+
+
+
+ Specifies dashed diagonal lines, that slant to the left from top points to bottom points.
+
+
+
+
+ Specifies dashed horizontal lines.
+
+
+
+
+ Specifies dashed vertical lines.
+
+
+
+
+ Specifies a hatch that has the appearance of confetti.
+
+
+
+
+ Specifies a hatch that has the appearance of confetti, and is composed of larger pieces than SmallConfetti.
+
+
+
+
+ Specifies horizontal lines that are composed of zigzags.
+
+
+
+
+ Specifies horizontal lines that are composed of tildes.
+
+
+
+
+ Specifies a hatch that has the appearance of layered bricks that slant to the left from top points to bottom points.
+
+
+
+
+ Specifies a hatch that has the appearance of horizontally layered bricks.
+
+
+
+
+ Specifies a hatch that has the appearance of a woven material.
+
+
+
+
+ Specifies a hatch that has the appearance of a plaid material.
+
+
+
+
+ Specifies a hatch that has the appearance of divots.
+
+
+
+
+ Specifies horizontal and vertical lines, each of which is composed of dots, that cross.
+
+
+
+
+ Specifies forward diagonal and backward diagonal lines, each of which is composed of dots, that cross.
+
+
+
+
+ Specifies a hatch that has the appearance of diagonally layered shingles that slant to the right from top points to bottom points.
+
+
+
+
+ Specifies a hatch that has the appearance of a trellis.
+
+
+
+
+ Specifies a hatch that has the appearance of spheres laid adjacent to one another.
+
+
+
+
+ Specifies horizontal and vertical lines that cross and are spaced 50 percent closer together than hatch style Cross.
+
+
+
+
+ Specifies a hatch that has the appearance of a checkerboard.
+
+
+
+
+ Specifies a hatch that has the appearance of a checkerboard with squares that are twice the size of SmallCheckerBoard.
+
+
+
+
+ Specifies forward diagonal and backward diagonal lines that cross but are not antialiased.
+
+
+
+
+ Specifies a hatch that has the appearance of a checkerboard placed diagonally.
+
+
+
+
+ Specifies the type of display for hot-key prefixes that relate to text.
+
+
+
+
+ No hot-key prefix.
+
+
+
+
+ Display the hot-key prefix.
+
+
+
+
+ Do not display the hot-key prefix.
+
+
+
+
+ Progress event handler function reference
+
+ The progress event handler data.
+
+
+
+ An object contains information about how bitmap and metafile colors are manipulated during rendering. An object maintains several color-adjustment settings, including color-adjustment matrices, grayscale-adjustment matrices, gamma-correction values, color-map tables, and color-threshold values. During rendering, colors can be corrected, darkened, lightened, and removed. To apply such manipulations, initialize an object and pass the path of that object (along with the path of an ) to the DrawImage method.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Sets the color-adjustment matrix for the default category.
+
+ The color-adjustment matrix.
+
+
+
+ Sets the color-adjustment matrix for the default category.
+
+ The color-adjustment matrix.
+ An element of that specifies the type of image and color that will be affected by the color-adjustment matrix.
+
+
+
+ Sets the color-adjustment matrix for a specified category.
+
+ The color-adjustment matrix.
+ An element of that specifies the type of image and color that will be affected by the color-adjustment matrix.
+ An element of that specifies the category for which the color-adjustment matrix is set.
+
+
+
+ Clears the color-adjustment matrix for the default category.
+
+
+
+
+ Clears the color-adjustment matrix for a specified category.
+
+ An element of that specifies the category for which the color-adjustment matrix is cleared.
+
+
+
+ Sets the color-adjustment matrix and the grayscale-adjustment matrix for the default category.
+
+ The color-adjustment matrix.
+ The grayscale-adjustment matrix.
+
+
+
+ Sets the color-adjustment matrix and the grayscale-adjustment matrix for the default category.
+
+ The color-adjustment matrix.
+ The grayscale-adjustment matrix.
+ An element of that specifies the type of image and color that will be affected by the color-adjustment and grayscale-adjustment matrices.
+
+
+
+ Sets the color-adjustment matrix and the grayscale-adjustment matrix for a specified category.
+
+ The color-adjustment matrix.
+ The grayscale-adjustment matrix.
+ An element of that specifies the type of image and color that will be affected by the color-adjustment and grayscale-adjustment matrices.
+ An element of that specifies the category for which the color-adjustment and grayscale-adjustment matrices are set.
+
+
+
+ Sets the threshold (transparency range) for the default category.
+
+ A real number that specifies the threshold value.
+
+
+
+ Sets the threshold (transparency range) for a specified category.
+
+ A threshold value from 0.0 to 1.0 that is used as a breakpoint to sort colors that will be mapped to either a maximum or a minimum value.
+ An element of that specifies the category for which the color threshold is set.
+
+
+
+ Clears the threshold value for the default category.
+
+
+
+
+ Clears the threshold value for a specified category.
+
+ An element of that specifies the category for which the threshold is cleared.
+
+
+
+ Sets the gamma value for the default category.
+
+ The gamma correction value.
+
+
+
+ Sets the gamma value for a specified category.
+
+ The gamma correction value.
+ An element of the enumeration that specifies the category for which the gamma value is set.
+
+
+
+ Disables gamma correction for the default category.
+
+
+
+
+ Disables gamma correction for a specified category.
+
+ An element of that specifies the category for which gamma correction is disabled.
+
+
+
+ Turns off color adjustment for the default category.
+
+
+
+
+ Turns off color adjustment for a specified category.
+
+ An element of that specifies the category for which color correction is turned off.
+
+
+
+ Clears the NoOp setting for the default category.
+
+
+
+
+ Clears the NoOp setting for a specified category.
+
+ An element of that specifies the category for which the NoOp setting is cleared.
+
+
+
+ Sets the color key for the default category.
+
+ The low color-key value.
+ The high color-key value.
+
+
+
+ Sets the color key (transparency range) for a specified category.
+
+ The low color-key value.
+ The high color-key value.
+ An element of that specifies the category for which the color key is set.
+
+
+
+ Clears the color key (transparency range) for the default category.
+
+
+
+
+ Clears the color key (transparency range) for a specified category.
+
+ An element of that specifies the category for which the color key is cleared.
+
+
+
+ Sets the CMYK (cyan-magenta-yellow-black) output channel for the default category.
+
+ An element of that specifies the output channel.
+
+
+
+ Sets the CMYK (cyan-magenta-yellow-black) output channel for a specified category.
+
+ An element of that specifies the output channel.
+ An element of that specifies the category for which the output channel is set.
+
+
+
+ Clears the CMYK (cyan-magenta-yellow-black) output channel setting for the default category.
+
+
+
+
+ Clears the (cyan-magenta-yellow-black) output channel setting for a specified category.
+
+ An element of that specifies the category for which the output channel setting is cleared.
+
+
+
+ Sets the output channel color-profile file for the default category.
+
+ The path name of a color-profile file. If the color-profile file is in the %SystemRoot%\System32\Spool\Drivers\Color directory, this parameter can be the file name. Otherwise, this parameter must be the fully qualified path name.
+
+
+
+ Sets the output channel color-profile file for a specified category.
+
+ The path name of a color-profile file. If the color-profile file is in the %SystemRoot%\System32\Spool\Drivers\Color directory, this parameter can be the file name. Otherwise, this parameter must be the fully qualified path name.
+ An element of that specifies the category for which the output channel color-profile file is set.
+
+
+
+ Clears the output channel color profile setting for the default category.
+
+
+
+
+ Clears the output channel color profile setting for a specified category.
+
+ An element of that specifies the category for which the output channel profile setting is cleared.
+
+
+
+ Sets the color-remap table for the default category.
+
+ An array of color pairs of type . Each color pair contains an existing color (the first value) and the color that it will be mapped to (the second value).
+
+
+
+ Sets the color-remap table for a specified category.
+
+ An array of color pairs of type . Each color pair contains an existing color (the first value) and the color that it will be mapped to (the second value).
+ An element of that specifies the category for which the color-remap table is set.
+
+
+
+ Clears the color-remap table for the default category.
+
+
+
+
+ Clears the color-remap table for a specified category.
+
+ An element of that specifies the category for which the remap table is cleared.
+
+
+
+ Sets the color-remap table for the brush category.
+
+ An array of objects.
+
+
+
+ Clears the brush color-remap table of this object.
+
+
+
+
+ Sets the wrap mode that is used to decide how to tile a texture across a shape, or at shape boundaries. A texture is tiled across a shape to fill it in when the texture is smaller than the shape it is filling.
+
+ An element of that specifies how repeated copies of an image are used to tile an area.
+
+
+
+ Sets the wrap mode and color used to decide how to tile a texture across a shape, or at shape boundaries. A texture is tiled across a shape to fill it in when the texture is smaller than the shape it is filling.
+
+ An element of that specifies how repeated copies of an image are used to tile an area.
+ An object that specifies the color of pixels outside of a rendered image. This color is visible if the mode parameter is set to and the source rectangle passed to DrawImage is larger than the image itself.
+
+
+
+ Sets the wrap mode and color used to decide how to tile a texture across a shape, or at shape boundaries. A texture is tiled across a shape to fill it in when the texture is smaller than the shape it is filling.
+
+ An element of that specifies how repeated copies of an image are used to tile an area.
+ A color object that specifies the color of pixels outside of a rendered image. This color is visible if the mode parameter is set to and the source rectangle passed to DrawImage is larger than the image itself.
+ This parameter has no effect. Set it to false.
+
+
+
+ JPEG2000 load options
+
+
+
+
+ Represents the loading options.
+
+
+
+
+ Gets or sets the data recovery mode.
+
+
+ The data recovery mode.
+
+
+
+
+ Gets or sets the background .
+
+
+ The background color.
+
+ Typically the background color is set whenever pixel value cannot be recovered due to data corruption.
+
+
+
+ Gets or sets a value indicating whether ICC profile conversion should be applied.
+
+
+
+
+ Gets or sets the buffer size hint which is defined max allowed size for all internal buffers.
+
+
+ The buffer size hint, in megabytes.
+ Non-positive value means no memory limitation for internal buffers
+
+
+
+
+ Gets or sets the progress event handler.
+
+
+ The progress event handler.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the maximum decoding time in seconds (this option can be used on very slow on memory machines to prevent hanging on process on very big images - resolution more than 5500x6500 pixels).
+
+
+ The maximum decoding time.
+
+
+
+
+ The namespace contains classes suitable for export, save or creation of different file formats.
+
+
+
+
+ The enumeration specifies the algorithm that is used when images are scaled or rotated.
+
+
+
+
+ Invalid interpolation mode.
+
+
+
+
+ Specifies default mode.
+
+
+
+
+ Specifies low quality interpolation.
+
+
+
+
+ Specifies high quality interpolation.
+
+
+
+
+ Specifies bilinear interpolation. No prefiltering is done. This mode is not suitable for shrinking an image below 50 percent of its original size.
+
+
+
+
+ Specifies bicubic interpolation. No prefiltering is done. This mode is not suitable for shrinking an image below 25 percent of its original size.
+
+
+
+
+ Specifies nearest-neighbor interpolation.
+
+
+
+
+ Specifies high-quality, bilinear interpolation. Prefiltering is performed to ensure high-quality shrinking.
+
+
+
+
+ Specifies high-quality, bicubic interpolation. Prefiltering is performed to ensure high-quality shrinking. This mode produces the highest quality transformed images.
+
+
+
+
+ Specifies the known system colors.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ A system-defined color.
+
+
+
+
+ Specifies the available cap styles with which a object can end a line.
+
+
+
+
+ Specifies a flat line cap.
+
+
+
+
+ Specifies a square line cap.
+
+
+
+
+ Specifies a round line cap.
+
+
+
+
+ Specifies a triangular line cap.
+
+
+
+
+ Specifies no anchor.
+
+
+
+
+ Specifies a square anchor line cap.
+
+
+
+
+ Specifies a round anchor cap.
+
+
+
+
+ Specifies a diamond anchor cap.
+
+
+
+
+ Specifies an arrow-shaped anchor cap.
+
+
+
+
+ Specifies a custom line cap.
+
+
+
+
+ Specifies a mask used to check whether a line cap is an anchor cap.
+
+
+
+
+ Specifies how to join consecutive line or curve segments in a figure (subpath) contained in a object.
+
+
+
+
+ Specifies a mitered join. This produces a sharp corner or a clipped corner, depending on whether the length of the miter exceeds the miter limit.
+
+
+
+
+ Specifies a beveled join. This produces a diagonal corner.
+
+
+
+
+ Specifies a circular join. This produces a smooth, circular arc between the lines.
+
+
+
+
+ Specifies a mitered join. This produces a sharp corner or a beveled corner, depending on whether the length of the miter exceeds the miter limit.
+
+
+
+
+ Replaces the GDI+ Matrix.
+
+
+ Most algorithms taken from Sun's AffineTransform.java.
+ Java's names for matrix elements used internally.
+ Map of java names to .net ones to description:
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+
+
+
+ An identity transform is one in which the output coordinates are
+ always the same as the input coordinates.
+ If this transform is anything other than the identity transform,
+ the type will either be the constant GENERAL_TRANSFORM or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+
+
+ A translation moves the coordinates by a constant amount in x
+ and y without changing the length or angle of vectors.
+
+
+
+
+ A uniform scale multiplies the length of vectors by the same amount
+ in both the x and y directions without changing the angle between
+ vectors.
+ This flag bit is mutually exclusive with the TypeGeneralScale flag.
+
+
+
+
+ A general scale multiplies the length of vectors by different
+ amounts in the x and y directions without changing the angle
+ between perpendicular vectors.
+ This flag bit is mutually exclusive with the TypeUniformScale flag.
+
+
+
+
+ This constant is a bit mask for any of the scale flag bits.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a mirror image flip about some axis which changes the
+ normally right handed coordinate system into a left handed
+ system in addition to the conversions indicated by other flag bits.
+ A right handed coordinate system is one where the positive X
+ axis rotates counterclockwise to overlay the positive Y axis
+ similar to the direction that the fingers on your right hand
+ curl when you stare end on at your thumb.
+ A left handed coordinate system is one where the positive X
+ axis rotates clockwise to overlay the positive Y axis similar
+ to the direction that the fingers on your left hand curl.
+ There is no mathematical way to determine the angle of the
+ original flipping or mirroring transformation since all angles
+ of flip are identical given an appropriate adjusting rotation.
+ NOTE: TypeFlip was added after GENERAL_TRANSFORM was in public
+ circulation and the flag bits could no longer be conveniently
+ renumbered without introducing binary incompatibility in outside
+ code.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a quadrant rotation by some multiple of 90 degrees in
+ addition to the conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the TypeGeneralRotation flag.
+
+
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a rotation by an arbitrary angle in addition to the
+ conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the
+
+
+
+
+ This constant is a bit mask for any of the rotation flag bits.
+
+
+
+
+ This constant indicates that the transform defined by this object
+ performs an arbitrary conversion of the input coordinates.
+ If this transform can be classified by any of the above constants,
+ the type will either be the constant TypeIdentity or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+
+
+ Initializes a new instance of the Matrix class as the identity matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+
+
+ Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.
+
+ A structure that represents the rectangle to be transformed.
+ An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
+
+
+
+ Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.
+
+ A structure that represents the rectangle to be transformed.
+ An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
+
+
+
+ Makes a copy of the class.
+
+ A base matrix for coping
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the copy of matrix elements.
+
+
+ A matrix elements copy.
+
+
+
+
+ Applies the geometric transform represented by this to a specified array of points.
+
+ The points.
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this using the specified order.
+
+ The scale X.
+ The scale Y.
+ The order.
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this Matrix using (default) Prepend order.
+
+ The sx. The sx. The sx.
+ The sy. The sy. The sy.
+
+
+
+ Applies the specified translation vector to this Matrix in the specified order.
+
+ The offset X.
+ The offset Y.
+ The order.
+
+
+
+ Applies the specified translation vector to this using (default) Prepend order.
+
+ The tx. The tx. The tx.
+ The ty. The ty. The ty.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter, and in the order specified in the order parameter.
+
+ The tx. The tx. The tx.
+ The order. The order. The order.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter using (default) Prepend order.
+
+ The matrix to multiply with.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin (zero x and y coordinates) for this Matrix in the specified order.
+
+ The rotate angle.
+ The matrix order.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin (zero x and y coordinates) for this Matrix in the default (Prepend) order.
+
+ The rotate angle.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the specified order.
+
+ The angle.
+ The point.
+ The order.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the default (Prepend) order.
+
+ The angle.
+ The point.
+
+
+
+ Resets this Matrix to have the elements of the identity matrix.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Determines whether two matrixes are equal.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ True if matrixes are equal.
+
+
+
+ Gets an array of floating-point values that represents the elements of this .
+
+ An array of floating-point values that represents the elements of this .
+
+
+
+ Gets the matrix element at first row first column. Represents scale along X axis.
+
+
+
+
+ Gets the matrix element at first row second column. Represents shear along Y axis.
+
+
+
+
+ Gets the matrix element at second row first column. Represents shear along X axis.
+
+
+
+
+ Gets the matrix element at second row second column. Represents scale along Y axis.
+
+
+
+
+ Gets the matrix element at third row first column. Represents translation along X axis.
+
+
+
+
+ Gets the matrix element at third row first column. Represents translation along Y axis.
+
+
+
+
+ Specifies the order for matrix transform operations.
+
+
+
+
+ The new operation is applied before the old operation.
+
+
+
+
+ The new operation is applied after the old operation.
+
+
+
+
+ The namespace is the core for nested namespaces and the most basic objects used for Aspose.Imaging processing.
+
+
+
+
+ Defines an object used to draw lines, curves and figures.
+
+
+
+
+ The object supporting transparency.
+
+
+
+
+ Gets or sets the object's opacity. The value should be between 0 and 1. Value of 0 means that object is fully visible, value of 1 means the object is fully opaque.
+
+ The opacity value.
+
+
+
+ Initializes a new instance of the class with the specified color.
+
+ A structure that indicates the color of this .
+
+
+
+ Initializes a new instance of the class with the specified and properties.
+
+ A structure that indicates the color of this .
+ A value indicating the width of this .
+
+
+
+ Initializes a new instance of the class with the specified .
+
+ A that determines the fill properties of this .
+
+ is null.
+
+
+
+ Initializes a new instance of the class with the specified and .
+
+ A that determines the characteristics of this .
+ The width of the new .
+
+ is null.
+
+
+
+ Sets the values that determine the style of cap used to end lines drawn by this .
+
+ A that represents the cap style to use at the beginning of lines drawn with this .
+ A that represents the cap style to use at the end of lines drawn with this .
+ A that represents the cap style to use at the beginning or end of dashed lines drawn with this .
+
+
+
+ Resets the geometric transformation matrix for this to identity.
+
+
+
+
+ Multiplies the transformation matrix for this by the specified .
+
+ The object by which to multiply the transformation matrix.
+
+
+
+ Multiplies the transformation matrix for this by the specified in the specified order.
+
+ The by which to multiply the transformation matrix.
+ The order in which to perform the multiplication operation.
+
+
+
+ Translates the local geometric transformation by the specified dimensions. This method prepends the translation to the transformation.
+
+ The value of the translation in x.
+ The value of the translation in y.
+
+
+
+ Translates the local geometric transformation by the specified dimensions in the specified order.
+
+ The value of the translation in x.
+ The value of the translation in y.
+ The order (prepend or append) in which to apply the translation.
+
+
+
+ Scales the local geometric transformation by the specified factors. This method prepends the scaling matrix to the transformation.
+
+ The factor by which to scale the transformation in the x-axis direction.
+ The factor by which to scale the transformation in the y-axis direction.
+
+
+
+ Scales the local geometric transformation by the specified factors in the specified order.
+
+ The factor by which to scale the transformation in the x-axis direction.
+ The factor by which to scale the transformation in the y-axis direction.
+ A that specifies whether to append or prepend the scaling matrix.
+
+
+
+ Rotates the local geometric transformation by the specified angle. This method prepends the rotation to the transformation.
+
+ The angle of rotation.
+
+
+
+ Rotates the local geometric transformation by the specified angle in the specified order.
+
+ The angle of rotation.
+ A that specifies whether to append or prepend the rotation matrix.
+
+
+
+ Gets or sets the width of this , in units of the Graphics object used for drawing.
+
+ The width of this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the cap style used at the beginning of lines drawn with this .
+
+ One of the values that represents the cap style used at the beginning of lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the cap style used at the end of lines drawn with this .
+
+ One of the values that represents the cap style used at the end of lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the cap style used at the end of the dashes that make up dashed lines drawn with this .
+
+ One of the values that represents the cap style used at the beginning and end of the dashes that make up dashed lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the join style for the ends of two consecutive lines drawn with this .
+
+ A that represents the join style for the ends of two consecutive lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets a custom cap to use at the beginning of lines drawn with this .
+
+ A that represents the cap used at the beginning of lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets a custom cap to use at the end of lines drawn with this .
+
+ A that represents the cap used at the end of lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the limit of the thickness of the join on a mitered corner.
+
+ The limit of the thickness of the join on a mitered corner.
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the alignment for this .
+
+ A that represents the alignment for this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets a copy of the geometric transformation for this .
+
+ A copy of the that represents the geometric transformation for this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets the style of lines drawn with this .
+
+ A enumeration that specifies the style of lines drawn with this .
+
+
+
+ Gets or sets the color of this .
+
+ A structure that represents the color of this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the that determines attributes of this .
+
+ A that determines attributes of this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the style used for dashed lines drawn with this .
+
+ A that represents the style used for dashed lines drawn with this .
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets the distance from the start of a line to the beginning of a dash pattern.
+
+ The distance from the start of a line to the beginning of a dash pattern.
+
+
+
+ Gets or sets an array of custom dashes and spaces.
+
+ An array of real numbers that specifies the lengths of alternating dashes and spaces in dashed lines.
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Gets or sets an array of values that specifies a compound pen. A compound pen draws a compound line made up of parallel lines and spaces.
+
+ An array of real numbers that specifies the compound array. The elements in the array must be in increasing order, not less than 0, and not greater than 1.
+ The property is set on an immutable , such as those returned by the class.
+
+
+
+ Specifies the alignment of a object in relation to the theoretical, zero-width line.
+
+
+
+
+ Specifies that the object is centered over the theoretical line.
+
+
+
+
+ Specifies that the is positioned on the inside of the theoretical line.
+
+
+
+
+ Specifies the is positioned on the outside of the theoretical line.
+
+
+
+
+ Specifies the is positioned to the left of the theoretical line.
+
+
+
+
+ Specifies the is positioned to the right of the theoretical line.
+
+
+
+
+ Specifies the type of fill a object uses to fill lines.
+
+
+
+
+ Specifies a solid fill.
+
+
+
+
+ Specifies a hatch fill.
+
+
+
+
+ Specifies a bitmap texture fill.
+
+
+
+
+ Specifies a path gradient fill.
+
+
+
+
+ Specifies a linear gradient fill.
+
+
+
+
+ The pixel data format. This is an immutable object.
+
+
+
+
+ Gets Grayscale color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The Grayscale color.
+
+
+
+ Gets GrayscaleAlpha color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The GrayscaleAlpha color.
+
+
+
+ Gets RGB color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The RGB color.
+
+
+
+ Gets RGBA color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The RGBA color.
+
+
+
+ Gets BGRA color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The BGRA color.
+
+
+
+ Gets BGR color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The BGR color.
+
+
+
+ Gets YCbCr color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The YCbCr color.
+
+
+
+ Gets CMYK color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The CMYK color.
+
+
+
+ Gets YCCK color with a specified number of bits per sample.
+
+ The number of bits per sample.
+ The YCCK color.
+
+
+
+ Returns result of non-equality for two classes.
+
+ The first to compare.
+ The second to compare.
+ True if both and contain non-equal data or one of the parameters is null.
+
+
+
+ Returns result of equality for two classes.
+
+ The first to compare.
+ The second to compare.
+ True if both and contain equal data or both parameters are null.
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the cyan, magenta, yellow and black.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the cyan, magenta, yellow and black.
+
+
+
+
+ Gets the acmyk.
+
+
+ The defined for 40 bits per pixel with 8 bits for each of the alpha, cyan, magenta, yellow and black.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for 16 bits per pixel with 5 bits for each of the red, green and blue, alpha is not defined.
+
+
+ The defined for 16 bits per pixel with 5 bits for each of the red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for 16 bits per pixel with 5 bits for red, 6 bits for green and 5 bits for blue, alpha is not defined.
+
+
+ The defined for 16 bits per pixel with 5 bits for red, 6 bits for green and 5 bits for blue, alpha is not defined.
+
+
+
+
+ Gets the defined for indexed 8 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 8 bit per color.
+
+
+
+
+ Gets the defined for indexed 4 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 4 bit per color.
+
+
+
+
+ Gets the defined for indexed 2 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 2 bit per color.
+
+
+
+
+ Gets the defined for indexed 1 bit per color.
+ The indexed pixel data storage is intended to allow data storage and retrieval everywhere the color palette is used.
+ Use with caution, because may require conversion from one palette to another or from RGBA to indexed color model.
+
+
+ The defined for indexed 1 bit per color.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the luma, blue-difference and red-difference chroma components.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the luma, blue-difference and red-difference chroma components.
+
+
+
+
+ Gets the defined for 8 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval.
+
+
+ The defined for 8 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the luma, blue-difference, red-difference and black chroma components.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the luma, blue-difference, red-difference and black chroma components.
+
+
+
+
+ Gets the defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+ The defined for 32 bits per pixel with 8 bits for each of the alpha, red, green and blue.
+
+
+
+
+ Gets the defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+ The defined for 24 bits per pixel with 8 bits for each of the alpha, red, green and blue, alpha is not defined.
+
+
+
+
+ Gets the defined for 16 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval and additional 8 bit alpha component.
+
+
+ The defined for 16 bits per pixel with 8 bits representing grayscale intensity in the 0-255 interval and additional 8 bit alpha component.
+
+
+
+
+ Gets the pixel format.
+
+
+ The pixel format.
+
+
+
+
+ Gets the bits per pixel.
+
+
+ The bits per pixel.
+
+
+
+
+ Gets the channels count.
+
+
+ The channels count.
+
+
+
+
+ Gets the bits count for each channel.
+
+
+ The channel bits.
+
+
+
+
+ Gets the pixel data format caption.
+
+
+
+
+ The pixel data format actual meaning.
+
+
+
+
+ The grayscale color space
+
+
+
+
+ The BGR color space.
+
+
+
+
+ The RGB color space.
+
+
+
+
+ The YCbCr color space.
+
+
+
+
+ The CMYK color space.
+
+
+
+
+ The YCCK color space.
+
+
+
+
+ Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional plane.
+
+
+
+
+ Initializes a new instance of the structure with the specified coordinates.
+
+ The horizontal position of the point.
+ The vertical position of the point.
+
+
+
+ Initializes a new instance of the structure from the structure.
+
+ Contains the new point coordinates.
+
+
+
+ Initializes a new instance of the structure using coordinates specified by an integer value.
+
+ A 32-bit integer that specifies the coordinates for the new point.
+
+
+
+ Performs an explicit conversion from to .
+
+ The point
+
+ The result of the conversion.
+
+
+
+
+ Adds the specified to the specified .
+
+ The to add to.
+ The to add to the .
+ The that is the result of the addition operation.
+
+
+
+ Returns the result of subtracting specified from the specified .
+
+ The to be subtracted from.
+ The to subtract from the .
+ The that is the result of the subtraction operation.
+
+
+
+ Converts the specified to a by rounding the values of the to the next higher integer values.
+
+ The to convert.
+ The this method converts to.
+
+
+
+ Converts the specified to a object by rounding the values to the nearest integer.
+
+ The to convert.
+ The this method converts to.
+
+
+
+ Converts the specified to a by truncating the values of the .
+
+ The to convert.
+ The this method converts to.
+
+
+
+ Translates a by a given .
+
+ The to translate.
+ A that specifies the pair of numbers to add to the coordinates of .
+ The translated .
+
+
+
+ Translates a by the negative of a given .
+
+ The to translate.
+ A that specifies the pair of numbers to subtract from the coordinates of .
+ A structure that is translated by the negative of a given structure.
+
+
+
+ Compares two objects. The result specifies whether the values of the and properties of the two objects are equal.
+
+ A first to compare.
+ A second to compare.
+ True if the and values of and are equal; otherwise, false.
+
+
+
+ Compares two objects. The result specifies whether the values of the or properties of the two objects are unequal.
+
+ A first to compare.
+ A second to compare.
+ True if the values of either the properties or the properties of and differ; otherwise, false.
+
+
+
+ Converts the specified structure to a structure.
+
+ The to be converted.
+ The that results from the conversion.
+
+
+
+ Converts the specified structure to the structure.
+
+ The to be converted.
+ The that results from the conversion.
+
+
+
+ Translates this by the specified .
+
+ The used to offset this .
+
+
+
+ Translates this by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+
+
+
+ Specifies whether this contains the same coordinates as the specified .
+
+ The to test.
+ True if is a and has the same coordinates as this .
+
+
+
+ Returns a hash code for this .
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+ Converts this to a human-readable string.
+
+ A that represents this instance.
+
+
+
+ Gets a new instance of the structure that has and values set to zero.
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+ True if both and are 0; otherwise, false.
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane.
+
+
+
+
+ Initializes a new instance of the structure with the specified coordinates.
+
+ The horizontal position of the point.
+ The vertical position of the point.
+
+
+
+ Translates a by a given .
+
+ The to translate.
+ A that specifies the pair of numbers to add to the coordinates of .
+ Returns the translated .
+
+
+
+ Translates a by the negative of a given .
+
+ A to translate.
+ A that specifies the numbers to subtract from the x- and y-coordinates of the .
+ The translated .
+
+
+
+ Translates the by the specified .
+
+ The to translate.
+ The that specifies the numbers to add to the x- and y-coordinates of the .
+ The translated .
+
+
+
+ Translates a by the negative of a specified .
+
+ The to translate.
+ The that specifies the numbers to subtract from the coordinates of .
+ The translated .
+
+
+
+ Compares two structures. The result specifies whether the values of the and properties of the two structures are equal.
+
+ A first to compare.
+ A second to compare.
+ True if the and values of the first and second structures are equal; otherwise, false.
+
+
+
+ Determines whether the coordinates of the specified points are not equal.
+
+ A first to compare.
+ A second to compare.
+ True to indicate the and values of and are not equal; otherwise, false.
+
+
+
+ Performs an explicit conversion from to .
+
+ The point
+
+ The result of the conversion.
+
+
+
+
+ Performs an explicit conversion from arr to arr.
+
+ The points
+
+ The result of the conversion.
+
+
+
+
+ Translates a given by the specified .
+
+ The to translate.
+ The that specifies the numbers to add to the coordinates of .
+ The translated .
+
+
+
+ Translates a by the negative of a specified size.
+
+ The to translate.
+ The that specifies the numbers to subtract from the coordinates of .
+ The translated .
+
+
+
+ Translates a given by a specified .
+
+ The to translate.
+ The that specifies the numbers to add to the coordinates of .
+ The translated .
+
+
+
+ Translates a by the negative of a specified size.
+
+ The to translate.
+ The that specifies the numbers to subtract from the coordinates of .
+ The translated .
+
+
+
+ Specifies whether this contains the same coordinates as the specified .
+
+ The to test.
+ This method returns true if is a and has the same coordinates as this .
+
+
+
+ Returns a hash code for this structure.
+
+ An integer value that specifies a hash value for this structure.
+
+
+
+ Converts this to a human readable string.
+
+ A string that represents this .
+
+
+
+ Gets a new instance of the structure that has and values set to zero.
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+ True if both and are 0; otherwise, false.
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Contains the current build version information.
+
+
+
+
+ The assembly version.
+
+
+
+
+ The file version.
+
+
+
+
+ The product title.
+
+
+
+
+ The major product version.
+
+
+
+
+ The minor product version.
+
+
+
+
+ The product release date.
+
+
+
+
+ Represents a raster image supporting raster graphics operations. This image caches pixel data when required.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Rotates, flips, or rotates and flips the image.
+
+ The rotate flip type.
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+ The size of s x s window of pixels centered around this pixel
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Updates the image dimensions.
+
+ The new image width.
+ The new image height.
+
+
+
+ Called when data is cached and all related resources may be de-allocated.
+
+
+
+
+ Saves pixels (format specific method).
+
+ The rectangle to save pixels to.
+ The 32-bit ARGB pixels array.
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets a value indicating whether image data is cached currently.
+
+
+ true if image data is cached; otherwise, false.
+
+
+
+
+ The raw data settings
+
+
+
+
+ Gets or sets the pixel data format
+
+
+ The pixel data format
+
+
+
+
+ Gets or sets the color palette
+
+
+ The color palette
+
+
+
+
+ Gets or sets the dithering method to use for raw data conversion
+
+
+ The dithering method to use for raw data conversion
+
+
+
+
+ Gets or sets the indexed color converter
+
+
+ The indexed color converter
+
+
+
+
+ Gets or sets the custom color converter
+
+
+ The custom color converter
+
+
+
+
+ Gets or sets the fallback index to use when palette index is out of bounds
+
+
+ The fallback index to use when palette index is out of bounds
+
+
+
+
+ Gets or sets the pixels line size in bytes for raw data processing
+
+
+ The pixels line size in bytes for raw data processing
+
+
+
+
+ Stores a set of four integers that represent the location and size of a rectangle.
+
+
+
+
+ Initializes a new instance of the structure with the specified location and size.
+
+ The x-coordinate of the upper-left corner of the rectangle.
+ The y-coordinate of the upper-left corner of the rectangle.
+ The width of the rectangle.
+ The height of the rectangle.
+
+
+
+ Initializes a new instance of the structure with the specified location and size.
+
+ A that represents the upper-left corner of the rectangular region.
+ A that represents the width and height of the rectangular region.
+
+
+
+ Creates a new from two points specified. Two verticales of the created will be equal to the passed and . These would be typically the opposite vertices.
+
+ The first for the new rectangle.
+ The second for the new rectangle.
+ A newly created .
+
+
+
+ Converts the specified structure to a structure by rounding the values to the next higher integer values.
+
+ The structure to be converted.
+ Returns a .
+
+
+
+ Converts the specified to a by truncating the values.
+
+ The to be converted.
+ A new .
+
+
+
+ Converts the specified to a by rounding the values to the nearest integer values.
+
+ The to be converted.
+ A new .
+
+
+
+ Creates and returns an inflated copy of the specified structure. The copy is inflated by the specified amount. The original structure remains unmodified.
+
+ The with which to start. This rectangle is not modified.
+ The amount to inflate this horizontally.
+ The amount to inflate this vertically.
+ The inflated .
+
+
+
+ Returns a third structure that represents the intersection of two other structures. If there is no intersection, an empty is returned.
+
+ A first rectangle to intersect.
+ A second rectangle to intersect.
+ A that represents the intersection of and .
+
+
+
+ Gets a structure that contains the union of two structures.
+
+ A first rectangle to union.
+ A second rectangle to union.
+ A structure that bounds the union of the two structures.
+
+
+
+ Tests whether two structures have equal location and size.
+
+ The structure that is to the left of the equality operator.
+ The structure that is to the right of the equality operator.
+ This operator returns true if the two structures have equal , , , and properties.
+
+
+
+ Tests whether two structures differ in location or size.
+
+ The structure that is to the left of the inequality operator.
+ The structure that is to the right of the inequality operator.
+ This operator returns true if any of the , , or properties of the two structures are unequal; otherwise false.
+
+
+
+ Creates a structure with the specified edge locations.
+
+ The x-coordinate of the upper-left corner of this structure.
+ The y-coordinate of the upper-left corner of this structure.
+ The x-coordinate of the lower-right corner of this structure.
+ The y-coordinate of the lower-right corner of this structure.
+ The new that this method creates.
+
+
+
+ Determines if the specified point is contained within this structure.
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ This method returns true if the point defined by and is contained within this structure; otherwise false.
+
+
+
+ Determines if the specified point is contained within this structure.
+
+ The to test.
+ This method returns true if the point represented by is contained within this structure; otherwise false.
+
+
+
+ Determines if the rectangular region represented by is entirely contained within this structure.
+
+ The to test.
+ This method returns true if the rectangular region represented by is entirely contained within this structure; otherwise false.
+
+
+
+ Inflates this by the specified amount.
+
+ The amount to inflate this horizontally.
+ The amount to inflate this vertically.
+
+
+
+ Inflates this by the specified amount.
+
+ The amount to inflate this rectangle.
+
+
+
+ Replaces this with the intersection of itself and the specified .
+
+ The with which to intersect.
+
+
+
+ Determines if this rectangle intersects with .
+
+ The rectangle to test.
+ This method returns true if there is any intersection, otherwise false.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ Amount to offset the location.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The horizontal offset.
+ The vertical offset.
+
+
+
+ Normalizes the rectangle by making it's width and height positive, left less than right and top less than bottom.
+
+
+
+
+ Tests whether is a structure with the same location and size of this structure.
+
+ The to test.
+ This method returns true if is a structure and its , , , and properties are equal to the corresponding properties of this structure; otherwise, false.
+
+
+
+ Returns the hash code for this structure.
+
+ An integer that represents the hash code for this rectangle.
+
+
+
+ Converts the attributes of this to a human-readable string.
+
+ A string that contains the position, width, and height of this structure.
+
+
+
+ Gets a new instance of the structure that has , , and values set to zero.
+
+
+
+
+ Gets or sets the coordinates of the upper-left corner of this structure.
+
+ A that represents the upper-left corner of this structure.
+
+
+
+ Gets or sets the size of this .
+
+ A that represents the width and height of this structure.
+
+
+
+ Gets or sets the x-coordinate of the upper-left corner of this structure.
+
+ The x-coordinate of the upper-left corner of this structure.
+
+
+
+ Gets or sets the y-coordinate of the upper-left corner of this structure.
+
+ The y-coordinate of the upper-left corner of this structure.
+
+
+
+ Gets or sets the width of this structure.
+
+ The width of this structure.
+
+
+
+ Gets or sets the height of this structure.
+
+ The height of this structure.
+
+
+
+ Gets or sets the x-coordinate of the left edge of this structure.
+
+ The x-coordinate of the left edge of this structure.
+
+
+
+ Gets or sets the y-coordinate of the top edge of this structure.
+
+
+ The y-coordinate of the top edge of this structure.
+
+
+
+
+ Gets or sets the x-coordinate that is the sum of and property values of this structure.
+
+
+ The x-coordinate that is the sum of and of this .
+
+
+
+
+ Gets or sets the y-coordinate that is the sum of the and property values of this structure.
+
+
+ The y-coordinate that is the sum of and of this .
+
+
+
+
+ Gets a value indicating whether all numeric properties of this have values of zero.
+
+ This property returns true if the , , , and properties of this all have values of zero; otherwise, false.
+
+
+
+ Stores a set of four floating-point numbers that represent the location and size of a rectangle.
+
+
+
+
+ Initializes a new instance of the structure with the specified location and size.
+
+ The x-coordinate of the upper-left corner of the rectangle.
+ The y-coordinate of the upper-left corner of the rectangle.
+ The width of the rectangle.
+ The height of the rectangle.
+
+
+
+ Initializes a new instance of the structure with the specified location and size.
+
+ A that represents the upper-left corner of the rectangular region.
+ A that represents the width and height of the rectangular region.
+
+
+
+ Creates a new from two points specified. Two verticles of the created will be equal to the passed and . These would be typically the opposite vertices.
+
+ The first for the new rectangle.
+ The second for the new rectangle.
+ A newly created .
+
+
+
+ Creates and returns an inflated copy of the specified structure. The copy is inflated by the specified amount. The original rectangle remains unmodified.
+
+ The to be copied. This rectangle is not modified.
+ The amount to inflate the copy of the rectangle horizontally.
+ The amount to inflate the copy of the rectangle vertically.
+ The inflated .
+
+
+
+ Returns a structure that represents the intersection of two rectangles. If there is no intersection, and empty is returned.
+
+ A first rectangle to intersect.
+ A second rectangle to intersect.
+ A third structure the size of which represents the overlapped area of the two specified rectangles.
+
+
+
+ Creates the smallest possible third rectangle that can contain both of two rectangles that form a union.
+
+ A first rectangle to union.
+ A second rectangle to union.
+ A third structure that contains both of the two rectangles that form the union.
+
+
+
+ Tests whether two structures have equal location and size.
+
+ The structure that is to the left of the equality operator.
+ The structure that is to the right of the equality operator.
+ This operator returns true if the two specified structures have equal , , , and properties.
+
+
+
+ Tests whether two structures differ in location or size.
+
+ The structure that is to the left of the inequality operator.
+ The structure that is to the right of the inequality operator.
+ This operator returns true if any of the , , , or properties of the two structures are unequal; otherwise false.
+
+
+
+ Converts the specified structure to a structure.
+
+ The structure to convert.
+ The structure that is converted from the specified structure.
+
+
+
+ Creates a structure with upper-left corner and lower-right corner at the specified locations.
+
+ The x-coordinate of the upper-left corner of the rectangular region.
+ The y-coordinate of the upper-left corner of the rectangular region.
+ The x-coordinate of the lower-right corner of the rectangular region.
+ The y-coordinate of the lower-right corner of the rectangular region.
+ The new that this method creates.
+
+
+
+ Normalizes the rectangle by making it's width and height positive, left less than right and top less than bottom.
+
+
+
+
+ Determines if the specified point is contained within this structure.
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ This method returns true if the point defined by and is contained within this structure; otherwise false.
+
+
+
+ Determines if the specified point is contained within this structure.
+
+ The to test.
+ This method returns true if the point represented by the parameter is contained within this structure; otherwise false.
+
+
+
+ Determines if the rectangular region represented by is entirely contained within this structure.
+
+ The to test.
+ This method returns true if the rectangular region represented by is entirely contained within the rectangular region represented by this ; otherwise false.
+
+
+
+ Inflates this structure by the specified amount.
+
+ The amount to inflate this structure horizontally.
+ The amount to inflate this structure vertically.
+
+
+
+ Inflates this by the specified amount.
+
+ The amount to inflate this rectangle.
+
+
+
+ Replaces this structure with the intersection of itself and the specified structure.
+
+ The rectangle to intersect.
+
+
+
+ Determines if this rectangle intersects with .
+
+ The rectangle to test.
+ This method returns true if there is any intersection.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The amount to offset the location.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The amount to offset the location horizontally.
+ The amount to offset the location vertically.
+
+
+
+ Tests whether is a with the same location and size of this .
+
+ The to test.
+ This method returns true if is a and its X, Y, Width, and Height properties are equal to the corresponding properties of this ; otherwise, false.
+
+
+
+ Gets the hash code for this structure.
+
+ The hash code for this .
+
+
+
+ Converts the attributes of this to a human-readable string.
+
+ A string that contains the position, width, and height of this structure.
+
+
+
+ Gets a new instance of the structure that has , , and values set to zero.
+
+
+
+
+ Gets or sets the coordinates of the upper-left corner of this structure.
+
+ A that represents the upper-left corner of this structure.
+
+
+
+ Gets or sets the size of this .
+
+ A that represents the width and height of this structure.
+
+
+
+ Gets or sets the x-coordinate of the upper-left corner of this structure.
+
+ The x-coordinate of the upper-left corner of this structure.
+
+
+
+ Gets or sets the y-coordinate of the upper-left corner of this structure.
+
+ The y-coordinate of the upper-left corner of this structure.
+
+
+
+ Gets or sets the width of this structure.
+
+ The width of this structure.
+
+
+
+ Gets or sets the height of this structure.
+
+ The height of this structure.
+
+
+
+ Gets or sets the x-coordinate of the left edge of this structure.
+
+ The x-coordinate of the left edge of this structure.
+
+
+
+ Gets or sets the y-coordinate of the top edge of this structure.
+
+ The y-coordinate of the top edge of this structure.
+
+
+
+ Gets or sets the x-coordinate that is the sum of and of this structure.
+
+ The x-coordinate that is the sum of and of this structure.
+
+
+
+ Gets or sets the y-coordinate that is the sum of and of this structure.
+
+ The y-coordinate that is the sum of and of this structure.
+
+
+
+ Gets a value indicating whether the or property of this has a value of zero.
+
+ This property returns true if the or property of this has a value of zero; otherwise, false.
+
+
+
+ Describes the interior of a graphics shape composed of rectangles and paths. This class cannot be inherited.
+
+
+
+
+ Initializes a new .
+
+
+
+
+ Initializes a new from the specified structure.
+
+ A structure that defines the interior of the new .
+
+
+
+ Initializes a new from the specified structure.
+
+ A structure that defines the interior of the new .
+
+
+
+ Initializes a new with the specified .
+
+ A that defines the new .
+
+ is null.
+
+
+
+ Creates an exact deep copy of this .
+
+ The that this method creates.
+
+
+
+ Initializes this object to an infinite interior.
+
+
+
+
+ Initializes this to an empty interior.
+
+
+
+
+ Updates this to the intersection of itself with the specified structure.
+
+ The structure to intersect with this .
+
+
+
+ Updates this to the intersection of itself with the specified structure.
+
+ The structure to intersect with this .
+
+
+
+ Updates this to the intersection of itself with the specified .
+
+ The to intersect with this .
+
+
+
+ Updates this to the intersection of itself with the specified .
+
+ The to intersect with this .
+
+
+
+ Updates this to the union of itself and the specified structure.
+
+ The structure to unite with this .
+
+
+
+ Updates this to the union of itself and the specified structure.
+
+ The structure to unite with this .
+
+
+
+ Updates this to the union of itself and the specified .
+
+ The to unite with this .
+
+ is null.
+
+
+
+ Updates this to the union of itself and the specified .
+
+ The to unite with this .
+
+ is null.
+
+
+
+ Updates this to the union minus the intersection of itself with the specified structure.
+
+ The structure to xor with this .
+
+
+
+ Updates this to the union minus the intersection of itself with the specified structure.
+
+ The structure to xor with this .
+
+
+
+ Updates this to the union minus the intersection of itself with the specified .
+
+ The to xor with this .
+
+ is null.
+
+
+
+
+ Updates this to the union minus the intersection of itself with the specified .
+
+ The to xor with this .
+
+ is null.
+
+
+
+
+ Updates this to contain only the portion of its interior that does not intersect with the specified structure.
+
+ The structure to exclude from this .
+
+
+
+ Updates this to contain only the portion of its interior that does not intersect with the specified structure.
+
+ The structure to exclude from this .
+
+
+
+ Updates this to contain only the portion of its interior that does not intersect with the specified .
+
+ The to exclude from this .
+
+ is null.
+
+
+
+
+ Updates this to contain only the portion of its interior that does not intersect with the specified .
+
+ The to exclude from this .
+
+ is null.
+
+
+
+
+ Updates this to contain the portion of the specified structure that does not intersect with this .
+
+ The structure to complement this .
+
+
+
+ Updates this to contain the portion of the specified structure that does not intersect with this .
+
+ The structure to complement this .
+
+
+
+ Updates this to contain the portion of the specified that does not intersect with this .
+
+ The to complement this .
+
+ isnull.
+
+
+
+
+ Updates this to contain the portion of the specified that does not intersect with this .
+
+ The object to complement this object.
+
+ isnull.
+
+
+
+
+ Offsets the coordinates of this by the specified amount.
+
+ The amount to offset this horizontally.
+ The amount to offset this vertically.
+
+
+
+ Offsets the coordinates of this by the specified amount.
+
+ The amount to offset this horizontally.
+ The amount to offset this vertically.
+
+
+
+ Transforms this by the specified .
+
+ The by which to transform this .
+
+ is null.
+
+
+
+ Tests whether this has an empty interior on the specified drawing surface.
+
+ A that represents a drawing surface.
+
+ true if the interior of this is empty when the transformation associated with is applied; otherwise, false.
+
+
+ is null.
+
+
+
+
+ Tests whether this has an infinite interior on the specified drawing surface.
+
+ A that represents a drawing surface.
+
+ true if the interior of this is infinite when the transformation associated with is applied; otherwise, false.
+
+
+ is null.
+
+
+
+
+ Tests whether the specified is identical to this on the specified drawing surface.
+
+ The to test.
+ A that represents a drawing surface.
+
+ True if the interior of region is identical to the interior of this region when the transformation associated with the parameter is applied; otherwise, false.
+
+
+ or is null.
+
+
+
+ Tests whether the specified point is contained within this .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+
+ True when the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified structure is contained within this .
+
+ The structure to test.
+
+ true when is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified point is contained within this when drawn using the specified .
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ A that represents a graphics context.
+
+ True when the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified structure is contained within this when drawn using the specified .
+
+ The structure to test.
+ A that represents a graphics context.
+
+ true when is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified rectangle is contained within this .
+
+ The x-coordinate of the upper-left corner of the rectangle to test.
+ The y-coordinate of the upper-left corner of the rectangle to test.
+ The width of the rectangle to test.
+ The height of the rectangle to test.
+
+ true when any portion of the specified rectangle is contained within this object; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified structure is contained within this .
+
+ The structure to test.
+
+ true when any portion of is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified rectangle is contained within this when drawn using the specified .
+
+ The x-coordinate of the upper-left corner of the rectangle to test.
+ The y-coordinate of the upper-left corner of the rectangle to test.
+ The width of the rectangle to test.
+ The height of the rectangle to test.
+ A that represents a graphics context.
+
+ true when any portion of the specified rectangle is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified structure is contained within this when drawn using the specified .
+
+ The structure to test.
+ A that represents a graphics context.
+
+ true when is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified point is contained within this object when drawn using the specified object.
+
+ The x-coordinate of the point to test.
+ The y-coordinate of the point to test.
+ A that represents a graphics context.
+
+ true when the specified point is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified structure is contained within this .
+
+ The structure to test.
+
+ true when is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether the specified structure is contained within this when drawn using the specified .
+
+ The structure to test.
+ A that represents a graphics context.
+
+ true when is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified rectangle is contained within this .
+
+ The x-coordinate of the upper-left corner of the rectangle to test.
+ The y-coordinate of the upper-left corner of the rectangle to test.
+ The width of the rectangle to test.
+ The height of the rectangle to test.
+
+ true when any portion of the specified rectangle is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified structure is contained within this .
+
+ The structure to test.
+
+ This method returns true when any portion of is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified rectangle is contained within this when drawn using the specified .
+
+ The x-coordinate of the upper-left corner of the rectangle to test.
+ The y-coordinate of the upper-left corner of the rectangle to test.
+ The width of the rectangle to test.
+ The height of the rectangle to test.
+ A that represents a graphics context.
+
+ true when any portion of the specified rectangle is contained within this ; otherwise, false.
+
+
+
+
+ Tests whether any portion of the specified structure is contained within this when drawn using the specified .
+
+ The structure to test.
+ A that represents a graphics context.
+
+ true when any portion of the is contained within this ; otherwise, false.
+
+
+
+
+ Specifies the resize type.
+
+
+
+
+ The pixels are not preserved during resize operation.
+
+
+
+
+ Left top point of the new image will coincide with the left top point of the original image. Crop will occur if required.
+
+
+
+
+ Right top point of the new image will coincide with the right top point of the original image. Crop will occur if required.
+
+
+
+
+ Right bottom point of the new image will coincide with the right bottom point of the original image. Crop will occur if required.
+
+
+
+
+ Left bottom point of the new image will coincide with the left bottom point of the original image. Crop will occur if required.
+
+
+
+
+ Center of the new image will coincide with the center of the original image. Crop will occur if required.
+
+
+
+
+ Resample using lanczos algorithm with a=3.
+
+
+
+
+ Resample using nearest neighbour algorithm.
+
+
+
+
+ Resample using adaptive algorithm based on weighted and blended rational function and lanczos3 interpolation algorithms.
+
+
+
+
+ Resample using bilinear interpolation. Image pre-filtering is allowed to remove the noice before resample, when needed
+
+
+
+
+ The high quality resample
+
+
+
+
+ The resolution setting for image save options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The horizontal resolution.
+
+
+ The vertical resolution.
+
+
+
+
+ Gets or sets the horizontal resolution.
+
+
+
+
+ Gets or sets the vertical resolution.
+
+
+
+
+ Provides the fields that represent reference points in for seeking.
+
+
+
+
+ Specifies the beginning of a stream.
+
+
+
+
+ Specifies the current position within a stream.
+
+
+
+
+ Specifies the end of a stream.
+
+
+
+
+ The shape. A continuous set of points connected using a specific rule.
+
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Gets a value indicating whether shape has segments.
+
+
+ True if shape has segments; otherwise, false.
+
+
+
+
+ Represents a shape segment. A segment is a line or curve connecting two points.
+
+
+
+
+ Gets the starting point.
+
+ The starting point.
+
+
+
+ Gets the ending point.
+
+ The ending point.
+
+
+
+ The bezier segment going from one point to the next point and using two control points.
+
+
+
+
+ Represents a segment leading derectly from a specific point to the next point.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The end point.
+
+
+
+ Gets the starting point.
+
+ The starting point.
+
+
+
+ Gets the ending point.
+
+ The ending point.
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The first control point.
+ The second control point.
+ The end point.
+
+
+
+ Gets the first control point of a bezier spline.
+
+ The first control point.
+
+
+
+ Gets the second control point of a bezier spline.
+
+ The second control point.
+
+
+
+ The namespace contains different shape segments which combine shapes.
+
+
+
+
+ Represents an arc shape.
+
+
+
+
+ Represents a pie shape.
+
+
+
+
+ Represents an ellipse shape.
+
+
+
+
+ Represents a rectangular shape.
+
+
+
+
+ Represents a shape which is projected over rectangle turned to a particular orientation.
+ Specified by four points which can be rotated in space maintaining the same edges length and 90 degrees between adjacent edges.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle to initialize from.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets the left top rectangle point.
+
+ The left top rectangle point.
+
+
+
+ Gets the right top rectangle point.
+
+ The right top rectangle point.
+
+
+
+ Gets the left bottom rectangle point.
+
+ The left bottom rectangle point.
+
+
+
+ Gets the right bottom rectangle point.
+
+ The right bottom rectangle point.
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets the rectangle width.
+
+ The rectangle width.
+
+
+
+ Gets the rectangle height.
+
+ The rectangle height.
+
+
+
+ Gets a value indicating whether shape has segments.
+
+
+ True if shape has segments; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+ The start angle.
+ The sweep angle.
+
+
+
+ Gets or sets the start angle.
+
+ The start angle.
+
+
+
+ Gets or sets the sweep angle.
+
+ The sweep angle.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+ The start angle.
+ The sweep angle.
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+ The start angle.
+ The sweep angle.
+ If set to true the arc is closed. The closed arc is actually degenereates to an ellipse.
+
+
+
+ Reverses the order of points for this shape.
+
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Gets the starting shape point.
+
+ The starting shape point.
+
+
+
+ Gets the ending shape point.
+
+ The ending shape point.
+
+
+
+ Gets or sets a value indicating whether ordered shape is closed. When processing closed ordered shape the starting and ending points have no meaning.
+
+
+ True if this ordered shape is closed; otherwise, false.
+
+
+
+
+ Represents a bezier spline.
+
+
+
+
+ Represents a polygon shape.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+ If set to true the polygon is closed.
+
+
+
+ Reverses the order of points for this shape.
+
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets or sets the curve points.
+
+ The curve points.
+
+
+
+ Gets or sets a value indicating whether shape is closed.
+
+
+ true if shape is closed; otherwise, false.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Gets a value indicating whether shape has segments.
+
+
+ True if shape has segments; otherwise, false.
+
+
+
+ Gets the starting shape point.
+
+ The starting shape point.
+
+
+
+ Gets the ending shape point.
+
+ The ending shape point.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+ If set to true the bezier spline is closed.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Gets a value indicating whether shape has segments.
+
+
+ True if shape has segments; otherwise, false.
+
+
+
+ Gets the ending shape point.
+
+ The ending shape point.
+
+
+
+ Represents a curved spline shape.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class. The default tension of 0.5 is used.
+
+ The points array.
+
+
+
+ Initializes a new instance of the class. The default tension of 0.5 is used.
+
+ The points array.
+ /// if set to true the curve is closed.
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+ The curve tension.
+
+
+
+ Initializes a new instance of the class.
+
+ The points array.
+ The curve tension.
+ if set to true the curve is closed.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Gets or sets the curve tension.
+
+ The curve tension.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ The namespace contains different shapes combined from shape segments.
+
+
+
+
+ Represents a text shape.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The text to draw.
+ The text rectangle.
+ The font to use.
+ The string format.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The estimated object's bounds.
+
+
+
+ Gets the object's bounds.
+
+ The matrix to apply before bounds will be calculated.
+ The pen to use for object. This can influence the object's bounds size.
+ The estimated object's bounds.
+
+
+
+ Applies the specified transformation to the shape.
+
+ The transformation to apply.
+
+
+
+ Gets or sets the drawn text.
+
+ The drawn text.
+
+
+
+ Gets or sets the font used to draw the text.
+
+ The font used to draw the text.
+
+
+
+ Gets or sets the text format.
+
+ The text format.
+
+
+
+ Gets the shape's center.
+
+ The shape's center.
+
+
+
+ Gets the object's bounds.
+
+ The object's bounds.
+
+
+
+ Gets the shape segments.
+
+ The shape segments.
+
+
+
+ Gets a value indicating whether shape has segments.
+
+
+ True if shape has segments; otherwise, false.
+
+
+
+ Represents size.
+
+
+
+
+ Initializes a new instance of the structure from the specified .
+
+ The from which to initialize this .
+
+
+
+ Initializes a new instance of the structure from the specified dimensions.
+
+ The width component of the new .
+ The height component of the new .
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+ The structure to which this operator converts.
+
+
+
+ Adds the width and height of one structure to the width and height of another structure.
+
+ The first to add.
+ The second to add.
+ A structure that is the result of the addition operation.
+
+
+
+ Subtracts the width and height of one structure from the width and height of another structure.
+
+ The structure on the left side of the subtraction operator.
+ The structure on the right side of the subtraction operator.
+ A structure that is the result of the subtraction operation.
+
+
+
+ Tests whether two structures are equal.
+
+ The structure on the left side of the equality operator.
+ The structure on the right of the equality operator.
+ True if and have equal width and height; otherwise, false.
+
+
+
+ Tests whether two structures are different.
+
+ The structure on the left of the inequality operator.
+ The structure on the right of the inequality operator.
+ True if and differ either in width or height; false if and are equal.
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+ The structure to which this operator converts.
+
+
+
+ Adds the width and height of one structure to the width and height of another structure.
+
+ The first to add.
+ The second to add.
+ A structure that is the result of the addition operation.
+
+
+
+ Converts the specified structure to a structure by rounding the values of the structure to the next higher integer values.
+
+ The structure to convert.
+ The structure this method converts to.
+
+
+
+ Subtracts the width and height of one structure from the width and height of another structure.
+
+ The structure on the left side of the subtraction operator.
+ The structure on the right side of the subtraction operator.
+ The that is a result of the subtraction operation.
+
+
+
+ Converts the specified structure to a structure by truncating the values of the structure to the next lower integer values.
+
+ The structure to convert.
+ The structure this method converts to.
+
+
+
+ Converts the specified structure to a structure by rounding the values of the structure to the nearest integer values.
+
+ The structure to convert.
+ The structure this method converts to.
+
+
+
+ Tests to see whether the specified object is a with the same dimensions as this .
+
+ The to test.
+ True if is a and has the same width and height as this ; otherwise, false.
+
+
+
+ Returns a hash code for this structure.
+
+ An integer value that specifies a hash value for this structure.
+
+
+
+ Creates a human-readable string that represents this .
+
+ A string that represents this .
+
+
+
+ Gets a new instance of the structure that has and values set to zero.
+
+
+
+
+ Gets a value indicating whether this has width and height of 0.
+
+
+
+
+ Gets or sets the horizontal component of this .
+
+
+
+
+ Gets or sets the vertical component of this .
+
+
+
+
+ Stores an ordered pair of floating-point numbers, typically the width and height of a rectangle.
+
+
+
+
+ Initializes a new instance of the structure from the specified .
+
+ The from which to create the new .
+
+
+
+ Initializes a new instance of the structure from the specified .
+
+ The from which to initialize this .
+
+
+
+ Initializes a new instance of the structure from the specified dimensions.
+
+ The width component of the new .
+ The height component of the new .
+
+
+
+ Adds the width and height of one structure to the width and height of another structure.
+
+ The first to add.
+ The second to add.
+ A structure that is the result of the addition operation.
+
+
+
+ Subtracts the width and height of one structure from the width and height of another structure.
+
+ The on the left side of the subtraction operator.
+ The on the right side of the subtraction operator.
+ A that is the result of the subtraction operation.
+
+
+
+ Tests whether two structures are equal.
+
+ The structure on the left side of the equality operator.
+ The structure on the right of the equality operator.
+ This operator returns true if and have equal width and height; otherwise, false.
+
+
+
+ Tests whether two structures are different.
+
+ The structure on the left of the inequality operator.
+ The structure on the right of the inequality operator.
+ This operator returns true if and differ either in width or height; false if and are equal.
+
+
+
+ Converts the specified to a .
+
+ The structure to be converted
+ The structure to which this operator converts.
+
+
+
+ Adds the width and height of one structure to the width and height of another structure.
+
+ The first to add.
+ The second to add.
+ A structure that is the result of the addition operation.
+
+
+
+ Subtracts the width and height of one structure from the width and height of another structure.
+
+ The structure on the left side of the subtraction operator.
+ The structure on the right side of the subtraction operator.
+ The that is a result of the subtraction operation.
+
+
+
+ Converts a to a .
+
+ Returns a structure.
+
+
+
+ Converts a to a structure with truncated size values.
+
+ Returns a structure.
+
+
+
+ Tests to see whether the specified object is a with the same dimensions as this .
+
+ The to test.
+ This method returns true if is a and has the same width and height as this ; otherwise, false.
+
+
+
+ Returns a hash code for this structure.
+
+ An integer value that specifies a hash value for this structure.
+
+
+
+ Creates a human-readable string that represents this .
+
+ A string that represents this .
+
+
+
+ Gets a new instance of the structure that has and values set to zero.
+
+
+
+
+ Gets a value indicating whether this has zero width and height.
+
+ This property returns true when this has both a width and height of zero; otherwise, false.
+
+
+
+ Gets or sets the horizontal component of this .
+
+ The horizontal component of this , typically measured in pixels.
+
+
+
+ Gets or sets the vertical component of this .
+
+ The vertical component of this , typically measured in pixels.
+
+
+
+ Specifies whether smoothing (antialiasing) is applied to lines and curves and the edges of filled areas.
+
+
+
+
+ Specifies an invalid mode.
+
+
+
+
+ Specifies no antialiasing.
+
+
+
+
+ Specifies no antialiasing.
+
+
+
+
+ Specifies antialiased rendering.
+
+
+
+
+ Specifies no antialiasing.
+
+
+
+
+ Specifies antialiased rendering.
+
+
+
+
+ The source is used to contain all relevant information for an object pipe.
+
+
+
+
+ Gets the stream container.
+
+ the stream container.
+ Use with caution. You will need to dispose the stream container after retrieval.
+
+
+
+ Represents a file source for creation.
+
+
+
+
+ Represents a file source which is capable of files manipulation.
+
+
+
+
+ Gets a value indicating whether file will be temporal.
+
+
+ true if file will be temporal; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The file path to create.
+
+
+
+ Initializes a new instance of the class.
+
+ The file path to create.
+ If set to true the created file will be temporal.
+
+
+
+ Gets the stream container.
+
+ the stream container.
+ Use with caution. You will need to dispose the stream container after retrieval.
+
+
+
+ Gets the file path to create.
+
+ The file path to create.
+
+
+
+ Gets a value indicating whether file will be temporal.
+
+
+ true if file will be temporal; otherwise, false.
+
+
+
+ Represents a file source for opening.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The file path to open.
+
+
+
+ Gets the stream container.
+
+ the stream container.
+ Use with caution. You will need to dispose the stream container after retrieval.
+
+
+
+ Gets the file path to open.
+
+ The file path to open.
+
+
+
+ Gets a value indicating whether file will be temporal.
+
+
+ true if file will be temporal; otherwise, false.
+
+
+
+ Namespace contains different stream sources which are suitable for input or output data flow.
+
+
+
+
+ Represents a stream source.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to open.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to open.
+ if set to true the stream will be disposed.
+
+
+
+ Gets the stream container.
+
+ the stream container.
+ Use with caution. You will need to dispose the stream container after retrieval.
+
+
+
+ Gets the stream.
+
+
+ The source stream.
+
+
+
+
+ Gets a value indicating whether stream should be disposed whenever container gets disposed.
+
+
+ true if stream should be disposed; otherwise, false.
+
+
+
+ Represents split stream container which contains the stream and provides stream processing routines.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The data stream.
+ if set to true the stream will be disposed when container is disposed.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream container.
+ if set to true disposes stream.
+
+
+
+ Inserts the stream container into specified position.
+
+ The position to insert to.
+ The stream container to insert.
+ if set to true disposes stream.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+
+
+ Writes all of the specified bytes to the stream.
+
+ The bytes to write.
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+
+
+ Reads bytes to fill the specified bytes buffer.
+
+ The bytes to fill.
+ The number of bytes read. This value can be less than the number of bytes in the buffer if there is not enough bytes in the stream.
+
+
+
+ Converts the stream data to the array.
+
+
+ The stream data converted to the array.
+
+
+
+
+ Converts the stream data to the array.
+
+ The position to start reading bytes from.
+ The bytes count to read.
+
+ The stream data converted to the array.
+
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an Int32, or -1 if at the end of the stream.
+
+
+
+
+ Sets the position within the current stream.
+
+ A byte offset relative to the parameter. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+ A value of type indicating the reference point used to obtain the new position.
+ The new position within the current stream.
+
+
+
+ Sets the stream position to the beginning of the stream. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+
+
+ Saves (copies) the stream's data to the specified stream.
+
+ The stream to save the data to.
+ The buffer size. By default value is used.
+ The stream data length to copy. By default the length is set to value.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Disposes the stream.
+
+
+
+
+ Gets an object that can be used to synchronize access to the synchronized resource.
+
+
+ The object that can be used to synchronize access to the synchronized resource.
+
+
+
+
+ Gets or sets the current position within the stream. This value represents offset from the starting stream position passed in the StreamContainer constructor.
+
+ The current stream position.
+
+
+
+ Gets the data stream.
+
+ The data stream.
+
+
+
+ Gets or sets the stream length in bytes. This value is less than the by the starting stream position passed in the StreamContainer constructor.
+
+ The stream length.
+
+
+
+ Gets a value indicating whether stream supports reading.
+
+
+ true if stream supports reading; otherwise, false.
+
+
+
+ Gets a value indicating whether stream supports seeking.
+
+
+ true if stream supports seeking; otherwise, false.
+
+
+
+ Gets a value indicating whether stream supports writing.
+
+
+ true if stream supports writing; otherwise, false.
+
+
+
+ Specifies the alignment of a text string relative to its layout rectangle.
+
+
+
+
+ Specifies the text be aligned near the layout. In a left-to-right layout, the near position is left. In a right-to-left layout, the near position is right.
+
+
+
+
+ Specifies that text is aligned in the center of the layout rectangle.
+
+
+
+
+ Specifies that text is aligned far from the origin position of the layout rectangle. In a left-to-right layout, the far position is right. In a right-to-left layout, the far position is left.
+
+
+
+
+ The enumeration specifies how to substitute digits in a string according to a user's locale or language.
+
+
+
+
+ Specifies a user-defined substitution scheme.
+
+
+
+
+ Specifies to disable substitutions.
+
+
+
+
+ Specifies substitution digits that correspond with the official national language of the user's locale.
+
+
+
+
+ Specifies substitution digits that correspond with the user's native script or language, which may be different from the official national language of the user's locale.
+
+
+
+
+ Encapsulates text layout information (such as alignment, orientation and tab stops) display manipulations (such as ellipsis insertion and national digit substitution) and OpenType features. This class cannot be inherited.
+
+
+
+
+ Initializes a new object.
+
+
+
+
+ Initializes a new object with the specified enumeration and language.
+
+ The enumeration for the new object.
+
+
+
+ Initializes a new object from the specified existing object.
+
+ The object from which to initialize the new object.
+
+ is null.
+
+
+
+ Creates a deep clone of this object.
+
+
+ The deep clone of the current .
+
+
+
+
+ Sets tab stops for this object.
+
+ The number of spaces between the beginning of a line of text and the first tab stop.
+ An array of distances between tab stops in the units specified by the property.
+
+
+
+ Converts this object to a human-readable string.
+
+
+ A string representation of this object.
+
+
+
+
+ Gets a generic default object.
+
+ The generic default object.
+
+
+
+ Gets a generic typographic object.
+
+ A generic typographic object.
+
+
+
+ Gets or sets a enumeration that contains formatting information.
+
+ A enumeration that contains formatting information.
+
+
+
+ Gets or sets text alignment information on the vertical plane.
+
+ A enumeration that specifies text alignment information.
+
+
+
+ Gets or sets the line alignment on the horizontal plane.
+
+ A enumeration that represents the line alignment.
+
+
+
+ Gets or sets the object for this object.
+
+ The object for this object, the default is .
+
+
+
+ Gets or sets the enumeration for this object.
+
+ A enumeration that indicates how text drawn with this object is trimmed when it exceeds the edges of the layout rectangle.
+
+
+
+ Gets or sets the method to be used for digit substitution.
+
+ A enumeration value that specifies how to substitute characters in a string that cannot be displayed because they are not supported by the current font.
+ The setter is introduced for the obsolete method SetDigitSubstitution.
+
+
+
+ Gets or sets the language that is used when local digits are substituted for western digits.
+
+ A National Language Support (NLS) language identifier that identifies the language that will be used when local digits are substituted for western digits.
+ You can pass the property of a object as the NLS language identifier.
+ For example, suppose you create a object by passing the string "ar-EG" to a constructor.
+ If you pass the property of that object along with.
+ to the method,
+ then Arabic-Indic digits will be substituted for western digits at display time.
+ The setter is introduced for the obsolete method SetDigitSubstitution.
+
+
+
+ Gets the number of spaces between the beginning of a line of text and the first tab stop.
+
+ The first tab offset.
+ The property is introduced for removed method GetTabStops.
+
+
+
+ Gets an array of distances between tab stops in the units specified by the property.
+
+ The tab stops.
+ The property is introduced for removed method GetTabStops.
+
+
+
+ Specifies the display and layout information for text strings.
+
+
+
+
+ Text is displayed from right to left.
+
+
+
+
+ Text is vertically aligned.
+
+
+
+
+ Parts of characters are allowed to overhang the string's layout rectangle. By default, characters are repositioned to avoid any overhang.
+
+
+
+
+ Control characters such as the left-to-right mark are shown in the output with a representative glyph.
+
+
+
+
+ Fallback to alternate fonts for characters not supported in the requested font is disabled. Any missing characters are displayed with the fonts missing glyph, usually an open square.
+
+
+
+
+ Includes the trailing space at the end of each line. By default the boundary rectangle returned by the MeasureString method excludes the space at the end of each line. Set this flag to include that space in measurement.
+
+
+
+
+ Text wrapping between lines when formatting within a rectangle is disabled. This flag is implied when a point is passed instead of a rectangle, or when the specified rectangle has a zero line length.
+
+
+
+
+ Only entire lines are laid out in the formatting rectangle. By default layout continues until the end of the text, or until no more lines are visible as a result of clipping, whichever comes first.
+ Note that the default settings allow the last line to be partially obscured by a formatting rectangle that is not a whole multiple of the line height. To ensure that only whole lines are seen,
+ specify this value and be careful to provide a formatting rectangle at least as tall as the height of one line.
+
+
+
+
+ Overhanging parts of glyphs, and unwrapped text reaching outside the formatting rectangle are allowed to show. By default all text and glyph parts reaching outside the formatting rectangle are clipped.
+
+
+
+
+ Specifies how to trim characters from a string that does not completely fit into a layout shape.
+
+
+
+
+ Specifies no trimming.
+
+
+
+
+ Specifies that the text is trimmed to the nearest character.
+
+
+
+
+ Specifies that text is trimmed to the nearest word.
+
+
+
+
+ Specifies that the text is trimmed to the nearest character, and an ellipsis is inserted at the end of a trimmed line.
+
+
+
+
+ Specifies that text is trimmed to the nearest word, and an ellipsis is inserted at the end of a trimmed line.
+
+
+
+
+ The center is removed from trimmed lines and replaced by an ellipsis. The algorithm keeps as much of the last slash-delimited segment of the line as possible.
+
+
+
+
+ Specifies the quality of text rendering.
+
+
+
+
+ Each character is drawn using its glyph bitmap, with the system default rendering hint. The text will be drawn using whatever font-smoothing settings the user has selected for the system.
+
+
+
+
+ Each character is drawn using its glyph bitmap. Hinting is used to improve character appearance on stems and curvature.
+
+
+
+
+ Each character is drawn using its glyph bitmap. Hinting is not used.
+
+
+
+
+ Each character is drawn using its antialiased glyph bitmap with hinting. Much better quality due to antialiasing, but at a higher performance cost.
+
+
+
+
+ Each character is drawn using its antialiased glyph bitmap without hinting. Better quality due to antialiasing. Stem width differences may be noticeable because hinting is turned off.
+
+
+
+
+ Each character is drawn using its glyph ClearType bitmap with hinting. The highest quality setting. Used to take advantage of ClearType font features.
+
+
+
+
+ Specifies the type of warp transformation applied.
+
+
+
+
+ Specifies a perspective warp.
+
+
+
+
+ Specifies a bilinear warp.
+
+
+
+
+ Specifies how much an image is rotated and the axis used to flip the image.
+
+
+
+
+ Specifies no clockwise rotation and no flipping.
+
+
+
+
+ Specifies a 90-degree clockwise rotation without flipping.
+
+
+
+
+ Specifies a 180-degree clockwise rotation without flipping.
+
+
+
+
+ Specifies a 270-degree clockwise rotation without flipping.
+
+
+
+
+ Specifies no clockwise rotation followed by a horizontal flip.
+
+
+
+
+ Specifies a 90-degree clockwise rotation followed by a horizontal flip.
+
+
+
+
+ Specifies a 180-degree clockwise rotation followed by a horizontal flip.
+
+
+
+
+ Specifies a 270-degree clockwise rotation followed by a horizontal flip.
+
+
+
+
+ Specifies no clockwise rotation followed by a vertical flip.
+
+
+
+
+ Specifies a 90-degree clockwise rotation followed by a vertical flip.
+
+
+
+
+ Specifies a 180-degree clockwise rotation followed by a vertical flip.
+
+
+
+
+ Specifies a 270-degree clockwise rotation followed by a vertical flip.
+
+
+
+
+ Specifies no clockwise rotation followed by a horizontal and vertical flip.
+
+
+
+
+ Specifies a 90-degree clockwise rotation followed by a horizontal and vertical flip.
+
+
+
+
+ Specifies a 180-degree clockwise rotation followed by a horizontal and vertical flip.
+
+
+
+
+ Specifies a 270-degree clockwise rotation followed by a horizontal and vertical flip.
+
+
+
+
+ Specifies how a texture or gradient is tiled when it is smaller than the area being filled.
+
+
+
+
+ Tiles the gradient or texture.
+
+
+
+
+ Reverses the texture or gradient horizontally and then tiles the texture or gradient.
+
+
+
+
+ Reverses the texture or gradient vertically and then tiles the texture or gradient.
+
+
+
+
+ Reverses the texture or gradient horizontally and vertically and then tiles the texture or gradient.
+
+
+
+
+ The texture or gradient is not tiled.
+
+
+
+
+ Helper to operate of encodings
+
+
+
+
+ Installing of codepages
+
+
+
+
+ Get encoding by name
+
+ The encoding name.
+ Returns encoding
+
+
+
+ Get encoding by id
+
+ The encoding id.
+ Returns encoding
+
+
+
+ Get encoding body name
+
+ The encoding
+ Returns encoding body name
+
+
+
+ Encapsulates operations for bands of double values.
+
+
+
+
+ The maximum of the band
+
+
+
+
+ The minimum of the band
+
+
+
+
+ Initializes a new instance of the class.
+
+ The minimum of the band.
+ The maximum of the band.
+ min - Minimum must be less than maximum
+
+
+
+ Creates new band in [0, 255]
+
+ New instance of
+
+
+
+ Creates new band in [0, 1]
+
+ New instance of
+
+
+
+ Converts the value between bands.
+
+ The value in the first band.
+ The value band.
+ The new band.
+ The value which reduced to the new band.
+
+ valueBand is null.
+ or
+ newBand is null.
+
+ value is out of range
+
+
+
+ Determines whether current band contains the specified value.
+
+ The value.
+
+ true if current band contains the specified value; otherwise, false.
+
+
+
+
+ Cuts the specified value by current band.
+
+ The value.
+ Cut by band value.
+
+
+
+ Gets the length of band.
+
+
+ The length of band.
+
+
+
+
+ Interruption token
+
+
+
+
+
+
+ Throws exception if interruption is requested
+
+
+
+
+ Check to see if interruption is requested
+
+
+
+
+ Interruption source
+
+
+
+
+ Creates the source
+
+
+
+
+ Disposes the event
+
+
+
+
+ Triggers the execution event
+
+
+
+
+ Returns the interruption token
+
+
+
+
+ Operation to be invoked in LongOperationHandler
+
+
+
+
+ Handler for long operations - required to be used for operations interruptible with InterruptionToken, as approach differs for different frameworks
+
+
+
+
+ Executes provided interruptible operation
+
+ Operation that can be interrupted
+ Timeout for operation
+ Token to interrupt the operation
+
+
+
+ Reference wrapper for value type
+
+ Value type
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The wrapper.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The value.
+
+ The result of the conversion.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance has value.
+
+
+ true if this instance has value; otherwise, false.
+
+
+
+
+ Encapsulates the 2D vector operations.
+
+
+
+
+ The X value of the vector.
+
+
+
+
+ The Y value of the vector.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The X value of the vector.
+ The Y value of the vector.
+
+
+
+ Implements the operator * for pair of vectors.
+
+ The first vector.
+ The second vector.
+
+ Scalar product of vectors.
+
+
+
+
+ Returns the vector length.
+
+ The vector length.
+
+
+
+ Returns the angle of current vector.
+ Measured in radians.
+
+ The angle of current vector.
+
+
+
+ Returns the angle between current and specified vector in radians.
+
+ The other vector.
+ The angle between vectors in radians.
+
+
+
+ Returns the new negated to the current one.
+
+ Negated vector.
+
+
+
+ Returns new , angled to current one.
+
+ The angle between current vector and new one.
+ Length of the new vector.
+ New instance of
+
+
+
+ Base interface for CRC
+
+
+
+
+ Calculate with type int32.
+
+ The value
+ crc
+
+
+
+ Calculate with type int16.
+
+ The value
+ crc
+
+
+
+ Calculate with type string.
+
+ The value
+ crc
+
+
+
+ Calculate with type byte[].
+
+ The value
+ crc
+
+
+
+ CRC8
+
+
+
+
+ Calculate with type int32.
+
+ The value
+ crc
+
+
+
+ Calculate with type int16.
+
+ The value
+ crc
+
+
+
+ Calculate with type string.
+
+ The value
+ crc
+
+
+
+ Calculate with type byte[].
+
+ The value
+ crc
+
+
+
+ Supported types of CRC
+
+
+
+
+ 8-bit CRC
+
+
+
+
+ 32-bit CRC
+
+
+
+
+ 64-bit CRC
+
+
+
+
+ CadCrcFactory
+
+
+
+
+ Create Cad CRC by version
+
+
+
+
+
+
+ Represents xml builder.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Stream to write to.
+ Encoding to use.
+ True to use pretty formatting for the output XML.
+
+
+
+ Ctor. Uses UTF8 encoding.
+
+ The stream.
+ if set to true [is pretty format].
+
+
+
+ Starts the XML document and the root element.
+
+ Name of the root element.
+
+
+
+ Ends the root element and the XML document itself and flushes it to the stream.
+
+
+
+
+ Writes start of the element with the specified name.
+
+ Name of the element.
+
+
+
+ Writes end of the current element.
+
+
+
+
+ Writes end of the current element.
+ In debug mode checks the closing element name.
+
+ Name of the element.
+
+
+
+ Writes the full end tag of the current element.
+
+
+
+
+ Writes the full end tag of the current element.
+ In debug mode checks the closing element name.
+
+ Name of the element.
+
+
+
+ Writes text as is without entetizing or filtering invalid chars.
+
+ Writes the text
+
+
+
+ Writes empty element with the specified name.
+
+ Name of the element.
+
+
+
+ Writes element with the specified name and value.
+
+ Name of the element.
+ The value.
+
+
+
+ Writes element with the specified name and a string value if the string is not null or empty.
+
+ Name of the element.
+ The value.
+
+
+
+ Writes element with the specified name and a DateTime value.
+ DateTime is validated (year value should be greater than 1).
+ If DateTime is invalid the element is not written.
+
+ Name of the element.
+ The value.
+
+
+
+ Writes element with the specified name and an integer value.
+
+ Name of the element.
+ The value.
+
+
+
+ Writes the given text content. Filters out invalid characters.
+
+ The value.
+
+
+
+ Writes an attribute string. Always. Filters out invalid characters.
+
+ The name of the attribute.
+ The value of the attribute.
+
+
+
+ Writes MIME-compliant Base64 data. Compliance means that Base64 string is broken into lines, containing
+ exactly 76 characters each. Only the last line of base64 data can contain less than 76 characters.
+
+ The stream.
+
+
+
+ Writes MIME-compliant Base64 data. Compliance means that Base64 string is broken into lines, containing
+ exactly 76 characters each. Only the last line of base64 data can contain less than 76 characters.
+
+ The buffer.
+ The index.
+ The count.
+
+
+
+ Removes all characters that are invalid in XML.
+
+ The text for filterring.
+ Filtered string
+
+
+
+ Translates any given set of unique IDs to set of IDs valid for XML.
+ See this specification:
+ http://www.w3.org/TR/REC-xml/#NT-Name
+ If an ID doesn't match criteria then adds mapping to the output dictionary.
+
+ Key is case insensitive string with original ID, value is anything
+ Key is case insensitive string with original ID, value is string with new ID.
+ If all IDs are already good and mapping is not needed then returns null.
+
+
+
+ Provides access to the underlying XmlWriter object.
+
+
+
+
+ Specifies (in an autoportable way) how text, ignorable and significant whitespace
+ will be returned by AnyXmlReader.
+
+
+
+
+ No text and whitespace is returned to the caller. Only elements are returned.
+
+
+
+
+ The text mode.
+
+
+
+
+ The significant whitespace mode
+
+
+
+
+ The whitespace mode
+
+
+
+
+ Text and significant whitespace is returned.
+ This is the mode to read most of the "normal" XML documents.
+
+
+
+
+ Text, significant and ignorable whitespace is returned to the caller.
+ Returning ignorable whitespace to the caller is used when reading ODT because ODT rules for whitespace are different from .NET.
+
+
+
+
+ Array related utility functions.
+
+
+
+
+ Compares two arrays.
+
+ The first array.
+ The second array.
+
+ true if [is array equal] [the specified array1]; otherwise, false.
+
+
+
+
+ Determines whether [is array equal] [the specified array1].
+
+ The first array.
+ The second array.
+
+ true if [is array equal] [the specified array1]; otherwise, false.
+
+
+
+
+ Determines whether [is array equal] [the specified array1].
+
+ The first array.
+ The second array.
+
+ true if [is array equal] [the specified array1]; otherwise, false.
+
+
+
+
+ Determines whether [is array equal] [the specified array1].
+
+ The first array.
+ The second array.
+
+ true if [is array equal] [the specified array1]; otherwise, false.
+
+
+
+
+ Dumps byte array into a string for debugging.
+
+ The data for dumping.
+ Returns string
+
+
+
+ Dumps the array.
+
+ The data for dump.
+ The start possition.
+ The count to dump.
+ Returns string
+
+
+
+ Dumps the array.
+
+ The data for dump.
+ Returns string
+
+
+
+ This code was copied and modified from Rotor.
+ Performs a binary search without boxing elements of the array.
+
+ Array to search in
+ Start index
+ Length of search area
+ Value to search for
+ Index of the found value or negated index of possible insertion
+
+
+
+ Analogue of C memset.
+
+ The array to set.
+ The value to set.
+ The offset in the array.
+ The length in the array.
+
+
+
+ Analogue of C memcmp.
+
+ The array to compare.
+ The second array to compare.
+ The length to compare.
+ [true] if arrays are equals
+
+
+
+ Checks the arrays equal.
+
+ The first array.
+ The second array.
+
+
+
+ Checks the arrays equal.
+
+ The first array.
+ The second array.
+
+
+
+ Checks the arrays equal.
+
+ The first array.
+ The second array.
+
+
+
+ Checks the arrays equal.
+
+ The first array.
+ The second array.
+ The delta value.
+
+
+
+ Checks the arrays equal.
+
+ The first array.
+ The second array.
+ The delta value.
+
+
+
+ Prints the array diff.
+
+ The first array.
+ The second array.
+
+
+
+ Creates a new byte array and copies first elemtns of the source array to it. Number of copied elements is
+ min(source array length, destination array length).
+
+ Source array.
+ New array length.
+ New array.
+
+
+
+ Use this instead of ArrayList.ToArray for autoporting to work.
+
+ The src list.
+ Returns int array
+
+
+
+ We need this class because we sometimes need to write different line breaks
+ to match what MS Word is writing. Yet .NET only allows one type of line breaks in the Convert class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data to split.
+ The index in data.
+ The count of the data.
+
+
+
+ Gets the next.
+
+ Returns next string
+
+
+
+ Converts the specified data.
+
+ The data to convert.
+ The separator.
+ Returns converted string
+
+
+
+ Gets a value indicating whether this instance is EOF.
+
+
+ true if this instance is EOF; otherwise, false.
+
+
+
+
+ Big-Endian byte order binary reader.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Reads the int32.
+
+ Returns integer
+
+
+
+ Reads the U int32.
+
+ Returns uint.
+
+
+
+ Reads the int16.
+
+ Returns short
+
+
+
+ Reads the U int16.
+
+ Returns ushort
+
+
+
+ Reads the single.
+
+ Returns float
+
+
+
+ Reads the boolean.
+
+ Returns boolean
+
+
+
+ Reads the char.
+
+ Returns char
+
+
+
+ Reads the chars.
+
+ The count to read.
+ Returns char array
+
+
+
+ We return short to allow autoporting to Java. byte in .NET is unsignged, whereas in Java it is always signed.
+
+ Returns byte
+
+
+
+ Reads the bytes.
+
+ The count to read.
+ Returns byte array
+
+
+
+ Reads the S byte.
+
+ Returns sbyte
+
+
+
+ Reads the specified buff.
+
+ The buff to read.
+ The offset.
+ The count to read.
+ Returns int
+
+
+
+ Reads the byte chars.
+
+ The count to read.
+ Returns char array
+
+
+
+ Gets the base stream.
+
+
+
+
+ Big-Endian byte order binary writer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Writes the int32.
+
+ The int value.
+
+
+
+ Writes the U int32.
+
+ The inut value.
+
+
+
+ Writes the U int16.
+
+ The uint value.
+
+
+
+ Writes the int16.
+
+ The int value.
+
+
+
+ Writes the byte.
+
+ The byte value.
+
+
+
+ Writes the bytes.
+
+ The buffer to write.
+ The index in the buffer.
+ The count to write.
+
+
+
+ Flushes this instance.
+
+
+
+
+ Gets the base stream.
+
+
+
+
+ Bit utility functions.
+ Functions that operate on bits within values of integral types.
+
+
+
+
+ Changes byte order.
+
+ The int value.
+ Returns int
+
+
+
+ Changes byte order.
+
+ The uint value.
+ Returns uint
+
+
+
+ Changes byte order.
+
+ The short value.
+ Returns short
+
+
+
+ Changes byte order.
+
+ The ushort value.
+ Returns ushort
+
+
+
+ Sets bit(s) specified by the bitmask to 0 or 1 in the specified value.
+
+ The cur value.
+ The bit mask.
+ if set to true [new value].
+ Returns int
+
+
+
+ Returns true if the bit is set, false otherwise
+
+ The cur value.
+ The bit mask.
+
+ true if the specified cur value is set; otherwise, false.
+
+
+
+
+ Inverts the bit.
+
+ The cur value.
+ The bit mask.
+ Returns int
+
+
+
+ This is from http://everything2.com/index.pl?node=counting%201%20bits
+
+ The integer
+ Returns bit count
+
+
+
+ This is from http://everything2.com/index.pl?node=counting%201%20bits
+ Expanded to 64 bit.
+
+ The long value
+ Returns bit count
+
+
+
+ Constants and utility methods for code pages and font character sets.
+
+
+
+
+ Symbol char set.
+
+
+
+
+ 437 MS-DOS Latin US
+
+
+
+
+ 850 MS-DOS Latin 1
+
+
+
+
+ Code page 1200
+
+
+
+
+ Code page 1201
+
+
+
+
+ 1252 Windows ANSI code page.
+
+
+
+
+ Code page 10000
+
+
+
+
+ Code page 12000
+
+
+
+
+ Code page 12001
+
+
+
+
+ Code page 65000
+
+
+
+
+ Code page 65001
+
+
+
+
+ Returns the default value if cannot find a mapping.
+
+ The char set.
+ The default code page.
+ Returns code page
+
+
+
+ Encodings from bom.
+
+ The data to validate.
+ The bytes read.
+ Size of the bom.
+ Returns encoding
+
+
+
+ Returns BOM for UTF-7. .NET doesn't know it. See gUtf7Bom.
+
+
+
+
+ Provides helper functions to convert between various measurement units.
+
+
+
+
+ http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/IntroductionToFixedPointMath
+
+
+
+
+ Represents min fixed value
+
+
+
+
+ Represents mm per inch.
+
+
+
+
+ Represents point per inch
+
+
+
+
+ Represents point per inch
+
+
+
+
+ Represents point per mm
+
+
+
+
+ Represents point per mm
+
+
+
+
+ Represents point per mm
+
+
+
+
+ Represents twip per point
+
+
+
+
+ Represents point per twip
+
+
+
+
+ Represents emus per point
+
+
+
+
+ Represents lis per point
+
+
+
+
+ Represents lis per twip
+
+
+
+
+ This is widely used in Word as maximum size in points for an object.
+
+
+
+
+ Represents maximus size in lis
+
+
+
+
+ Represents DML angles per degree
+
+
+
+
+ Converts points to pixels at 96 dpi.
+
+ The value to convert.
+ Returns pixels
+ Converts points to pixels.
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts points to pixels at the specified pixel resolution.
+
+ The value to convert.
+ The dpi (dots per inch) resolution.
+ Returns double
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts points to pixels at 96 dpi and rounds to int.
+
+ The points.
+ Returns int
+
+
+
+ Converts points to pixels at the specified pixel resolution and rounds to int.
+
+ The points.
+ The resolution.
+ Returns int
+
+
+
+ Converts points to pixels at the specified pixel resolution and rounds to int.
+ Makes the value not less than 1.
+
+ The points.
+ The resolution.
+ Returns int
+
+
+
+ Converts points to pixels at the specified pixel resolution and rounds to int.
+ Makes the value not less than 1.
+
+ The size points.
+ The scale value.
+ The dpi value.
+ Returns size
+
+
+
+ Converts points to microns (1 thousandth of mm).
+
+ The points.
+ Returns double
+
+
+
+ Converts points to microns and rounds to int (1 thousandth of mm).
+
+ The points.
+ Returns int
+
+
+
+ Converts pixels to points at 96 dpi.
+
+ The value to convert.
+ Returns double
+ Converts pixels to points.
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts pixels to points at 96 dpi.
+
+ The rect in pixel.
+ Returns rectangle
+ Converts pixels to points.
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts pixels to points at the specified pixel resolution.
+
+ The value to convert.
+ The dpi (dots per inch) resolution.
+ Returns double
+
+ 1 inch equals 72 points.
+
+
+
+
+ Pixels to twip.
+
+ The pixels.
+ The resolution.
+ Returns int
+
+
+
+ Converts pixels from one resolution to another.
+
+ The value to convert.
+ The current dpi (dots per inch) resolution.
+ The new dpi (dots per inch) resolution.
+ Returns int
+
+
+
+ Converts inches to points.
+
+ The value to convert.
+ Returns double
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts points to inches.
+
+ The value to convert.
+ Returns double
+
+ 1 inch equals 72 points.
+
+
+
+
+ Converts millimeters to points.
+
+ The value to convert.
+ Returns double
+
+ 1 inch equals 25.4 millimeters. 1 inch equals 72 points.
+
+
+
+
+ Mms to twip.
+
+ The mm to convert.
+ Returns twip
+
+
+
+ Converts mm to pixels at 96 dpi and rounds to int.
+
+ The mm to convert.
+ Returns int
+
+
+
+ Mms to pixel.
+
+ The mm to convert.
+ Returns double
+
+
+
+ Inches to pixel.
+
+ The inches.
+ Returns double
+
+
+
+ Converts centimeters to points.
+
+ The cm to convert.
+ Returns double
+
+
+
+ 1 line is 12 points.
+
+ The lines to convert.
+ Returns double
+
+
+
+ 1 line is 12 points.
+
+ The line hundredths.
+ Returns int
+
+
+
+ Points to line.
+
+ The points.
+ Returns double
+
+
+
+ Points to half point.
+
+ The points.
+ Returns int
+
+
+
+ Halfs the point to point.
+
+ The half points.
+ Returns double
+
+
+
+ Points to eights point.
+
+ The points.
+ Returns int
+
+
+
+ Eightses the point to point.
+
+ The eights points.
+ Returns int
+
+
+
+ Eightses the point to twip.
+
+ The eights point.
+ Returns int
+
+
+
+ Points to twip.
+
+ The points.
+ Returns int
+
+
+
+ Twips to point.
+
+ The twips to convert.
+ Returns int
+
+
+
+ Twips to point.
+
+ The twips.
+ Returns int
+
+
+
+ Twips to mm.
+
+ The twips.
+ Returns double
+
+
+
+ 1 line is 12 points.
+
+ The twips.
+ Returns int
+
+
+
+ Converts twips to pixels at 96 dpi.
+
+ The twips.
+ Returns int
+
+
+
+ Inches to twip.
+
+ The inches to convert.
+ Returns int
+
+
+
+ Emus to twip.
+
+ The emus to convert.
+ Returns int
+
+
+
+ Twips to emu.
+
+ The twips to convert.
+ Returns int
+
+
+
+ Points to emu.
+
+ The points.
+ Returns int
+
+
+
+ Points to emu.
+
+ The rect in points.
+ Returns rectangle
+
+
+
+ Emus to point.
+
+ The emus value.
+ Returns double
+
+
+
+ Emus to point.
+
+ The emus to convert.
+ Returns double
+
+
+
+ Emus to point.
+
+ The rect in emu.
+ Returns rectangle
+
+
+
+ Pixels to emu.
+
+ The pixels.
+ Returns double
+
+
+
+ Pixels to emu.
+
+ The pixels.
+ The resolution.
+ Returns double
+
+
+
+ Pixels to emu.
+
+ The rect in pixels.
+ The resolution.
+ Returns rectangle
+
+
+
+ Pixels to emu.
+
+ The rect in pixels.
+ Returns rectangle
+
+
+
+ Emus to inch.
+
+ The emus to convert.
+ Returns inch
+
+
+
+ Emus to pixel.
+
+ The emu to convert.
+ Returns pixel
+
+
+
+ Emus to pixel.
+
+ The rect in emu.
+ Returns pixel
+
+
+
+ Emus to millimeter.
+
+ The emus to convert.
+ Returns millimeter
+
+
+
+ Lis to pixel.
+
+ The lis to convert.
+ The resolution.
+ Returns pixel
+
+
+
+ Converts lis to pixels at 96 dpi.
+
+ The width.
+ Returns pixel
+
+
+
+ Converts points to layout integers (custom scale value).
+ This method accepts a double because it is mostly used for conversion
+ from model public values into layout and in the model such values are doubles.
+
+ The points.
+ Returns li value
+
+
+
+ Converts layout integers (custom scale value) to points.
+ The result is float because the result is used for the APS model where values are floats.
+
+ The lis value.
+ Returns point
+
+
+
+ Converts twips to layout integers (custom scale value).
+
+ The twips to convert.
+ Returns li value
+
+
+
+ Converts layout integers (custom scale value) to twips.
+
+ The lis value.
+ Returns twip
+
+
+
+ Converts half points to layout integers (custom scale value).
+
+ The half points.
+ Returns li value
+
+
+
+ Converts layout integers (custom scale value) to half points.
+
+ The lis value.
+ Returns point
+
+
+
+ Lis to point.
+
+ The li value.
+ Returns point
+
+
+
+ Lis to point.
+
+ The li value.
+ Returns point
+
+
+
+ Lis to point.
+
+ The li value.
+ Returns point
+
+
+
+ Points to li.
+
+ The point value.
+ Returns li value
+
+
+
+ Points to li.
+
+ The point value.
+ Returns li value
+
+
+
+ Converts layout integers (custom scale value) to lines,
+ each line is 12 points.
+
+ The lis value.
+ Returns line value
+
+
+
+ Converts color returned as attrbute of document model
+ into color which can be rendered correctly.
+
+ The color to fix.
+ Fixed color.
+
+
+
+ Converts 16.16 fixed point into floating point number.
+
+ The value to fix.
+ Fixed value.
+
+
+
+ Converts a floating point number into 16.16 fixed point number.
+
+ The value to fix.
+ Fixed value.
+
+
+
+ DMLs the angles to radians.
+
+ The DML angle.
+ Returns radians
+
+
+
+ Radianses to DML angles.
+
+ The radian value.
+ Returns angles
+
+
+
+ Degreeses to DML angles.
+
+ The degree value.
+ Returns angles
+
+
+
+ DMLs the angles to degrees.
+
+ The dml angle value.
+ Returns degree
+
+
+
+ Class contains list of document properties.
+
+
+
+
+ Get or set name of document generator.
+ If the document was converted to PDF/XPS/SWF or other format from another format, the
+ name of the application (for example, Acrobat Distiller) that converted it.
+
+
+
+
+ The document’s title.
+
+
+
+
+ The name of the person who created the document.
+
+
+
+
+ The subject of the document.
+
+
+
+
+ If the document was converted to PDF/XPS/SWF or other format from another format, the
+ name of the application (for example, Adobe FrameMaker®) that created the
+ original document from which it was converted.
+
+
+
+
+ Keywords associated with the document.
+
+
+
+
+ Brief description of document.
+
+
+
+
+ The name of the person who modified the document last time.
+
+
+
+
+ Gets or sets the document revision number.
+
+
+
+
+ Gets or sets the category of the document.
+
+
+
+
+ Gets or sets the date when the document was last printed.
+
+
+
+
+ Gets or sets date of the document creation.
+
+
+
+
+ Gets or sets the time of the last save.
+
+
+
+
+ Provides utility functions for converting from and into enums for different
+ document format readers and writers.
+
+
+
+
+ Builds import and export maps from the specified array.
+
+ Nth entry is key, Nth + 1 entry is value.
+ Map of Nth entry into Nth + 1 entry.
+ Map of Nth + 1 entry into Nth entry. Can be null if you want import only.
+
+
+
+ Looks up a source value in the map and returns a corresponding value.
+ If the source value is not found in the map and default value is not null,
+ returns the default value.
+ If the source value is not found and default value is null, throws an exception.
+
+ The map to translate.
+ The source value.
+ The default value.
+ Translate object
+
+
+
+ Looks up a source value in the map and returns a corresponding value.
+ Throws if the value is not found.
+
+ The map to translate.
+ The source value.
+ Translate object
+
+
+
+ Looks up a source value in the map and returns a corresponding value.
+ If the source value is not found, returns null.
+
+ The map to translate.
+ The source value.
+ Translate object
+
+
+
+ Determines whether the specified enum value has flag.
+
+ The enum value.
+ The flag to check.
+
+ true if the specified value has flags; otherwise, false.
+
+
+
+
+ Basic font utility methods.
+
+
+
+
+ Returns True if specified font name belongs to known symbolic fonts.
+ It is of course better to look at the font char set, but it is not always accurate.
+
+ Name of the font.
+
+ true if the specified font name is symbolic; otherwise, false.
+
+
+
+
+ Converts some old well known raster font names into modern true type font names.
+
+ Name of the font.
+ Returns new name
+
+
+
+ If the Unicode character is in the Private Use Area 0xF020-0xF0FF, converts it into 0x0020 - 0x00FF.
+ This is needed when converting from Unicode characters formatted using the Symbol font into Symbol encoding.
+ There is no code page for Symbol encoding in .NET, therefore one needs to use this method.
+
+ The unicode symbol.
+ Returns symbol
+
+
+
+ If some of Unicode characters of the string are in the Private Use Area 0xF020-0xF0FF, converts them into
+ 0x0020 - 0x00FF. This is needed when converting from Unicode characters formatted using the Symbol font
+ into Symbol encoding. There is no code page for Symbol encoding in .NET, therefore one needs to use this method.
+
+ The unicode string.
+ Returns symbol
+
+
+
+ Returns True if specified character is in the Private Use Area (0xF020-0xF0FF).
+
+ The symbol to check.
+
+ true if [is private unicode] [the specified c]; otherwise, false.
+
+
+
+
+ Converts a character encoded using the Symbol encoding into a Unicode character.
+ See comments above.
+
+ The symbol.
+ Returns unicode symbol
+
+
+
+ ApsCompositeNodeCanModifyGraphicsState
+
+
+
+
+
+
+ Base class for nodes of the fixed document model that can contain other nodes.
+
+
+
+
+ Base class for all nodes of a fixed document model.
+ Fixed document model is basically a set of page drawing commands.
+ The concept is based on the FixedDocument model defined in the MS Metro specification.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Gets or sets a value indicating whether display node by drawing engine.
+
+
+ true if display node by drawing engine; otherwise, false.
+
+
+
+
+ Gets or sets the unique identifier.
+
+
+ The unique identifier.
+
+
+
+
+ Gets or sets a parent node.
+
+
+ The parent.
+
+
+
+
+ Gets the node attributes.
+
+
+ The attributes.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Inserts the specified index.
+
+ The index.
+ The aps node.
+
+
+
+ Adds the specified node.
+
+ The aps node.
+ Returns index
+
+
+
+ Removes the specified node.
+
+ The aps node.
+
+
+
+ Adds the range.
+
+ The nodes.
+
+
+
+ Clears this instance.
+
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Removes APS primitives that are completely out of visible\clipping area
+
+ left top corner of visible\clip area
+ right bottom corner of visible\clip area
+ Current transformation matrix
+ Width of non-exclusion area around visible area - to preserve thick lines which defining points are out of visible area but the stroke is visible
+ Removal mode of parent node
+ True if node is out of visible area, false if any part of it is visible
+
+
+
+ Gets width of non-exclusion area around visible area - equal to half of linewidth
+
+ Margin provided from agove nodes
+ Current margin
+
+
+
+ Scales margin to current scale
+
+ Margin to be scaled
+ Transformation matrix
+ Scaled margin
+
+
+
+ Returns removal mode for current entity
+
+ Removal mode of parent node
+ True for immediate removal, false for deferred
+
+
+
+ Get current visible area - smallest overlap of visible area and clip area
+
+ Left top corner of visible area of parent element
+ Right bottom corner of visible area of parent element
+ Current transformation matrix
+ Left top corner of current visible area
+ Left top corner of current visible area
+
+
+
+ Gets current transformation matrix
+
+ Transformation matrix of parent element
+ Current transformation matrix
+
+
+
+ Gets the count.
+
+
+
+
+ Gets the at the specified index.
+
+ The index.
+ The aps node.
+
+
+
+ Implemented by APS nodes which are able to modify graphic state of the renderer so that
+ it should be saved before rendering the node and restored after.
+
+
+
+
+ Specifies an affine matrix transformation to the local coordinate space.
+
+
+
+
+ Gets a region that defines clipping for this object.
+
+
+
+
+ The m render transform
+
+
+
+
+ The m clip
+
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Get current visible area - smallest overlap of visible area and clip area
+
+ Left top corner of visible area of parent element
+ Right bottom corner of visible area of parent element
+ Current transformation matrix
+ Left top corner of current visible area
+ Left top corner of current visible area
+
+
+
+ Gets current transformation matrix
+
+ Transformation matrix of parent element
+ Current transformation matrix
+
+
+
+ Specifies an affine matrix transformation to the local coordinate space.
+
+
+
+
+ Gets or sets a region that defines clipping for this object.
+
+
+
+
+ Responsible for registering of additional encodings for NET Standard
+
+
+
+
+ Gets the encoding.
+
+ The name.
+ The encoding
+
+
+
+ Gets the encoding.
+
+ The code page.
+
+ The encoding
+
+
+
+
+ Gets the default encoding.
+
+
+ The default.
+
+
+
+
+ document root for APS
+
+
+
+
+ Gets or sets the source image path.
+
+
+ The source image path.
+
+
+
+
+ Represents update operation for ApsImage
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the image pixel.
+ The aps image.
+
+
+
+ Updates the image bitmap.
+
+ The pixels.
+ The bounds.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Represents ApsNode attribute.
+
+
+
+
+ The layer attribute name for APS object attributes.
+
+
+
+
+ The name of attribute for source object IDs.
+
+
+
+
+ Returns the name of this attribute.
+
+
+
+
+ Gets or sets the attribute value.
+
+
+ The attribute value.
+
+
+
+
+ Represents ApsNode attributes collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The owner.
+
+
+
+ Determines whether [contains] [the specified name].
+
+ The node name.
+ returns true if node was found
+
+
+
+ Adds the attribute to the collection with a specified name and value.
+
+ The attribute name.
+ The attribute value.
+
+
+
+ Removes the attribute from collection.
+
+ The node name.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Gets or sets the with the specified name.
+
+
+ The .
+
+ The node name.
+
+
+
+
+
+ Gets the attributes count.
+
+
+
+
+ APS point class
+
+
+
+
+ The empty
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x.
+ The y.
+
+
+
+ Initializes a new instance of the class.
+
+ The x.
+ The y.
+ The z.
+
+
+
+ To the points list.
+
+ The points.
+
+
+
+
+ To the points list.
+
+ The points.
+
+
+
+
+ To the point f.
+
+
+
+
+
+ Performs an explicit conversion from to .
+
+ The point f.
+
+ The result of the conversion.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets or sets the x.
+
+
+ The x.
+
+
+
+
+ Gets or sets the y.
+
+
+ The y.
+
+
+
+
+ Gets or sets the z.
+
+
+ The z.
+
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+ true if this instance is empty; otherwise, false.
+
+
+
+
+ Contains information about progress of conversion
+
+
+
+
+ Initializes a new instance of the class.
+
+ The page number.
+ The percent.
+ The type of operation.
+
+
+
+ Gets the page number.
+
+
+ The page number.
+
+
+
+
+ Gets the percent.
+
+
+ The percent.
+
+
+
+
+ Gets the type of operation.
+
+
+ The type of operation.
+
+
+
+
+ The type of operation
+
+
+
+
+ The layout building
+
+
+
+
+ The conversion
+
+
+
+
+ This inteface returns inforation about progress of conversion
+
+
+
+
+ Called when the specified operation for page is completed.
+
+ The information obout progress.
+
+
+
+ This is a copy of .NET's ArrayList taken from Rotor source.
+ It was modified to store array of integers, not as objects for performance.
+
+ The coding standard is not like ours and not many unit tests basically because this is 3rd party source.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The capacity.
+
+
+
+ Adds the specified value.
+
+ The value.
+ Returns size
+
+
+
+ Binaries the search.
+
+ The index.
+ The count.
+ The value.
+ Returns index
+
+
+
+ Binaries the search.
+
+ The value.
+ Returns index
+
+
+
+ Clears this instance.
+
+
+
+
+ Clones this instance.
+
+ Returns list
+
+
+
+ Determines whether [contains] [the specified item].
+
+ The item to search.
+
+ true if [contains] [the specified item]; otherwise, false.
+
+
+
+
+ Indexes the of.
+
+ The value.
+ Returns index
+
+
+
+ Indexes the of.
+
+ The value.
+ The start index.
+ Returns index
+
+
+
+ Indexes the of.
+
+ The value.
+ The start index.
+ The count.
+ Returns index
+
+
+
+ Inserts the specified index.
+
+ The index.
+ The value.
+
+
+
+ Lasts the index of.
+
+ The value.
+ Returns index
+
+
+
+ Lasts the index of.
+
+ The value.
+ The start index.
+ Returns index
+
+
+
+ Lasts the index of.
+
+ The value.
+ The start index.
+ The count.
+ Returns index
+
+
+
+ Removes the specified obj.
+
+ The obj to remove.
+
+
+
+ Removes at.
+
+ The index.
+
+
+
+ Removes the range.
+
+ The index.
+ The count.
+
+
+
+ Reverses this instance.
+
+
+
+
+ Reverses the specified index.
+
+ The index.
+ The count.
+
+
+
+ Sorts this instance.
+
+
+
+
+ Sorts the specified index.
+
+ The index.
+ The count.
+
+
+
+ Toes the array.
+
+ Returns list.
+
+
+
+ Trims to size.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets or sets the capacity.
+
+
+ The capacity.
+
+
+
+
+ Gets the count.
+
+
+
+
+ Gets a value indicating whether this instance is fixed size.
+
+
+ true if this instance is fixed size; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ true if this instance is read only; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is synchronized.
+
+
+ true if this instance is synchronized; otherwise, false.
+
+
+
+
+ Gets the sync root.
+
+
+
+
+ Gets or sets the at the specified index.
+
+ The index.
+ Returns item
+
+
+
+ If you use this attribute, then CsPorter will wrap the body of the method into a try/catch block
+ and convert all exceptions into a java.lang.RuntimeException that does not require the throws clause on the method and all of its callers.
+
+
+
+
+ Initializes a new instance of the JavaConvertCheckedExceptionsAttribute class.
+
+
+
+
+ Instucts CsPorter to do not port annotated type or member to java.
+
+
+ The type or member is not applicable to java, for instance a method with COM-related functionality.
+ Or the type used to support autoporting (as this attribute itself), .Net-specific debugging, etc.
+ For types that should be manually ported to java please use JavaManualAttribute.
+
+
+
+
+ Annotated type or member will be skipped in java.
+
+
+
+
+ Annotated type or member will be skipped in java.
+ Comment can be printed in CsPorter and JavaDoc logs.
+
+ The comment.
+
+
+
+ Gets or sets the comment.
+
+
+ The comment.
+
+
+
+
+ Provides various mathematical functions missed from the System.Math class.
+
+
+
+
+ Degreeses to radians.
+
+ The degrees.
+ The radians
+
+
+
+ Radianses to degrees.
+
+ The radians.
+ The degrees
+
+
+
+ General utility functions.
+
+ RK This class is a candidate for splitting. The methods form the following groups:
+ StringUtil
+ writing of integer to byte array or stream
+ writing of ansi string to byte array or stream
+ MathUtil
+ StreamUtil
+ DateTimeUtil?
+ ArgumentUtil?
+ Bytes to hex
+ int to string formatting -> palformatter?
+ compare papersize
+ apply color matrix transform?
+ compare integers -> MathUtil?
+
+
+
+
+ Splits value at delimiter positions. Returns array of substrings and delimiters. Empty entities not included.
+
+ The value.
+ The delimiters.
+ Returns string array
+
+
+
+ Writes 32-bit unsigned integer represented as BigEndian sequence of 4 bytes to byte array at the specified offset.
+
+ The 32-bit unsigned integer value to write to byte array.
+ The one-dimensional array of bytes./>
+ A 32-bit integer that represents the index in the byte array at which copying begins.
+
+
+
+ Writes string in ANSI encoding to stream at the specified offset.
+
+ The string value to write in ANSI encoding to stream.
+ The stream to write to.
+
+
+
+ Returns true if the value is odd (not even).
+
+ The value.
+
+ true if the specified value is odd; otherwise, false.
+
+
+
+
+ Integer divide and round up if necessary so the remainder will be zero.
+
+ The value.
+ The divider.
+ Returns int
+
+
+
+ Rounds up the value to be divisible by divider with zero remainder.
+
+ The value.
+ The divider.
+ Returns int
+
+
+
+ Moves position in the stream to the next boundary of the page of the specified size.
+ Grows the stream if necessary.
+
+ The stream.
+ Size of the page.
+
+
+
+ Reads up to the specified length from the stream and returns the stream position to original.
+
+ The stream.
+ The length.
+ Returns byte array
+
+
+
+ Copies from the current position in src stream till the end.
+ Copies into the current position in dst stream.
+
+ The SRC stream.
+ The DST stream.
+
+
+
+ If the source stream is a memory stream, then returns it.
+ Otherwise copies the source into a new memory stream and returns it.
+
+ The SRC stream.
+ Returns stream
+
+
+
+ Copies a complete stream into a new byte array.
+
+ The SRC stream.
+ Returns byte array
+
+
+
+ Reads the file's content into a stream.
+
+ File to read.
+ Stream to save into.
+
+
+
+ Copies the file to byte array.
+
+ Name of the file.
+ Returns byte array
+
+
+
+ Creates a date time without throwing an exception. Useful when reading documents when we don't want to fail because of an invalid date time.
+ If the date time is invalid returns .
+
+ The year value.
+ The month value.
+ The day value.
+ The hour value.
+ The min value.
+ The sec value.
+ The msec value.
+ returns datetime
+
+
+
+ Use this method instead of DateTime.FromFileTimeUtc because it is only available in .NET 1.1.
+ This code is disassembled from mscorlib.
+
+ The file time.
+ Name of the param.
+ Returns date
+
+
+
+ Use this method instead of DateTime.ToFileTimeUtc because it is only available in .NET 1.1.
+ This code is disassembled from mscorlib.
+
+ The value.
+ Name of the param.
+ Returns utc long
+
+
+
+ Outputs fields of the given object to a string. Used in logging.
+
+ The obj value.
+ The name value.
+
+ Returns string
+
+
+
+
+ Returns true if the string is not null and not empty.
+ We cannot use string.IsNullOrEmpty because it was introduced in .NET 2.0.
+
+ The value.
+
+ true if the specified value has chars; otherwise, false.
+
+
+
+
+ Returns true if the specified string contains ASCII (0..127) characters only; false otherwise.
+ We only consider 0..127 characters because characters 127..255 in Unicode are different
+ from other encodings such as Win1252.
+
+ The text value.
+
+ true if [is ASCII string] [the specified text]; otherwise, false.
+
+
+
+
+ Truncates a string from the right, then appends '...' for the total specified length.
+
+ The string value.
+ The length.
+ Returns string
+
+
+
+ This is a useful method to call before you, for example combine two strings and one of them might be null.
+ In .NET such string addition will work okay, but in Java it will add the string "null". Using this method
+ converts a null string into an empty string and allows to avoid the problem on Java.
+
+ The value.
+ Returns empty string
+
+
+
+ Checks the has chars.
+
+ The value.
+ Name of the param.
+
+
+
+ Checks the not null.
+
+ The value.
+ Name of the param.
+
+
+
+ Checks the range inclusive.
+
+ The value.
+ The min value.
+ The max value.
+ Name of the param.
+
+
+
+ Checks the positive.
+
+ The value.
+ Name of the param.
+
+
+
+ Validates the value in the given range.
+ Either throws an exception or assigns given saturation values if it exceeds.
+
+ The value.
+ The min margin.
+ The min saturation.
+ The max margin.
+ The max saturation.
+ if set to true [is throw].
+ Name of the param.
+ Returns double
+
+
+
+ Rounds a double value and cast it to int in a way that will produce the same result on .NET and Java.
+ Should probably move into into PAL somewhere.
+
+ The value.
+ Returns int value
+
+
+
+ Casts a double to int32 in a way that uint32 are "correctly" casted too (they become negative numbers).
+
+ The value.
+ Returns int value
+
+
+
+ Returns true if the specified string contains ASCII (0..127) characters only; false otherwise.
+ We only consider 0..127 characters because characters 127..255 in Unicode are different
+ from other encodings such as Win1252.
+
+ The text to check.
+ [true] if is 7bit string
+
+
+
+ Check if the text contains the specified string.
+ Works both for .NET 2.0 and .NET 1.1
+
+ The text to search.
+ The search STR.
+ if set to true [ignore case].
+
+ true if [contains] [the specified text]; otherwise, false.
+
+
+
+
+ Detects strings consisting solely of spaces.
+
+ The text to check.
+
+ true if [contains only spaces] [the specified text]; otherwise, false.
+
+
+
+
+ Copy char data using StringBuilder.
+ Works both for .NET 2.0 and .NET 1.1
+
+ The builder.
+ Returns char array
+
+
+
+ Detects strings consisting solely of whitespaces.
+
+ The text to check.
+
+ true if [contains only whitespaces] [the specified text]; otherwise, false.
+
+
+
+
+ Detects strings containing any whitespaces.
+
+ The text to check.
+
+ true if [contains any whitespaces] [the specified text]; otherwise, false.
+
+
+
+
+ Converts hex digit chars 0-9, A-F, a-f to a correspondent digit 0-15.
+ The code for this function is taken from .NET Uri class using Reflector.
+
+ The digit.
+ Returns int value
+
+
+
+ Checks if a character is a valid hex digit character: 0-9, A-F, or a-f.
+
+ The char to check.
+
+ true if [is hex digit] [the specified ch]; otherwise, false.
+
+
+
+
+ Checks if string is valid positive decimal number.
+
+ The value.
+
+ true if the specified value is decimal; otherwise, false.
+
+
+
+
+ Checks if string is valid hexadecimal number.
+
+ The value.
+
+ true if the specified value is hexadecimal; otherwise, false.
+
+
+
+
+ Converts a byte array into the string representation, e.g. "B601FE00".
+
+ Array of bytes to convert.
+ The index of the byte to start the conversion from.
+ Number of bytes to convert.
+ Put bytes to string in reversed order.
+
+ string representation of the sequence of bytes, e.g. "B601FE00".
+
+
+
+
+ Converts a byte into char array (with length of 2) of its string representation, e.g. 0x2A to {'2', 'A'}.
+
+ The byte value.
+ Returns char array
+
+
+
+ Converts byte array into the string representation, e.g. "B601FE00".
+
+ Array of bytes to convert.
+
+ string representation of the sequence of bytes, e.g. "B601FE00".
+
+
+
+
+ Compares strings using case insensitive compare and returns true if they are same.
+ Use this method because it works for .NET 2.0 and .NET 1.1
+
+ The A value.
+ The b value.
+ Returns boolean
+
+
+
+ Returns true if the two sizes are equal within the given tolerance regardless of the orientation.
+
+ The size1.
+ The size2.
+ The tolerance.
+ [true] if is equals
+
+
+
+ This autoportable code allows to workaround the limitation that on Java there is no way to get the current locale list separator.
+
+ Returns chars
+
+
+
+ Converts the rect to points.
+
+ The rectangle.
+ Returns points
+
+
+
+ Gets the stream that contains the red-cross image to represent missing pictures.
+
+
+ The stream. Don't forget to close it when finished.
+
+
+
+
+ Gets the bytes of the red-cross image to represent missing pictures.
+
+ Returns empty image
+
+
+
+ Converts byte to bool array.
+
+ The input.
+ Return boolean array
+
+
+
+ Fills byte array in natural order. It's different from .
+
+ The GUID value.
+
+ Returns byte array
+
+
+
+
+ Checks if reader has enough bytes to read.
+
+ The reader.
+ The bytes count.
+
+ true if [has enough bytes to read] [the specified reader]; otherwise, false.
+
+
+
+
+ Gets the empty byte array.
+
+
+ The empty byte array.
+
+
+
+
+ Specifies the operating system. This enum exists because PlatformID available on .NET is confusing and not enough for our purposes.
+
+
+
+
+ Any Windows OS.
+
+
+
+
+ Any Unix or Linux OS.
+
+
+
+
+ Mac OS X platform.
+
+
+
+
+ A PLCF is two parallel arrays: one array of positions and another array of items.
+ Array or positions usually specifies ranges inside a document. The number of items in the positions
+ array is supposed to be one more than in the items array to designate the end of the last item.
+
+
+
+
+ Adds an item to the PLCF adding both start and end positions.
+
+ The start value.
+ The end value.
+ The item value.
+ Returns index
+
+
+
+ Adds an item to the end of the PLCF.
+ Returns the index of the added item.
+
+ The start value.
+ Could be null, IWritable or int.
+ Returns index
+
+
+
+ Call this to add only a position to the table.
+
+ The position.
+
+
+
+ Removes at.
+
+ The index.
+
+
+
+ Clears this instance.
+
+
+
+
+ Gets the index of the start of the range that contains the specified position.
+ If the position cannot be found, returns the start position of the last range.
+
+ The position.
+ Returns index
+
+
+
+ Gets the index of the position. Returns negative value if cannot find the position.
+
+ The position.
+ Returns index
+
+
+
+ Different from GetIndexOfPosition in that includes last position into search.
+
+ The position.
+ Returns index
+
+
+
+ Same as GetIndexOfPosition, but throws if cannot find the suitable position.
+
+ The position.
+ Returns index
+
+
+
+ Gets an index of a position that is no less than the specified position.
+ If cannot find a suitable result then returns int maxvalue.
+
+ The position.
+ Returns index
+
+
+
+ Gets an item from the Positions array of the PLCF at the specified index.
+
+ The index.
+ Returns position
+
+
+
+ Sets an item in the Positions array to the specified value.
+
+ The index.
+ The position.
+
+
+
+ Gets an item from the Items array of the PLCF at the specified index.
+
+ The index.
+ Returns object
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the first element in the positions array.
+
+
+
+
+ Gets/sets the last element in the positions array.
+
+
+ The end position.
+
+
+
+
+ Gets the number of FC positions in the PLCF.
+
+
+
+
+ Gets the number of items in the PLCF (should be one less than the number of FC positions normally).
+
+
+
+
+ This class represents both index and position (character position) of one entry in a PLCF structure.
+ Used for some performance optimizations as a cache for the last processed PLCF entry
+ to avoid binary search every time.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The PLCF instance.
+ The index.
+ The position.
+
+
+
+ Moves the next.
+
+
+
+
+ The position.
+
+
+
+
+ The index.
+
+
+
+
+ The plcf object
+
+
+
+
+ This is a copy of .NET's taken from Rotor source.
+ Some new methods are added.
+ It was modified to store keys as integers, not as objects for performance.
+
+ The coding standard is not like ours and not many unit tests basically because this is 3rd party source.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial capacity.
+
+
+
+ Adds the specified key.
+
+ The key object.
+ The value.
+
+
+
+ Clears this instance.
+
+
+
+
+ Creates the empty copy.
+
+ Returns empty copy
+
+
+
+ Determines whether [contains] [the specified key].
+
+ The key object.
+
+ true if [contains] [the specified key]; otherwise, false.
+
+
+
+
+ Returns true if specified key is in the list.
+ Performs binary search.
+
+ The key object.
+
+ true if the specified key contains key; otherwise, false.
+
+
+
+
+ Determines whether the specified value contains value.
+
+ The value.
+
+ true if the specified value contains value; otherwise, false.
+
+
+
+
+ Gets the index of the by.
+
+ The index.
+ Returns object
+
+
+
+ Gets the key.
+
+ The index.
+ Returns key
+
+
+
+ Indexes the of key.
+
+ The key object.
+ Returns index
+
+
+
+ Indexes the of value.
+
+ The value.
+ Returns index
+
+
+
+ Removes at.
+
+ The index.
+
+
+
+ Removes the specified key.
+
+ The key object.
+
+
+
+ Sets the index of the by.
+
+ The index.
+ The value.
+
+
+
+ Trims to size.
+
+
+
+
+ Gets or sets the capacity.
+
+
+ The capacity.
+
+
+
+
+ Gets the count.
+
+
+
+
+ Gets or sets the with the specified key.
+
+ The key object.
+ Returns object
+
+
+
+ Uses this class instead of whenever you need a sorted list with string keys.
+ This class simplifies creation and ensures that sort order is same as in Java.
+
+
+
+
+ Creates a case-sensitive sorted list.
+
+
+
+
+ Creates a case-sensitive or case-insensitive string list.
+
+ if set to true [is case sensitive].
+
+
+
+ You need to use this comparer when all of the following is true:
+ 1. You need to create a with case-sensitive string keys.
+ 2. You will export this list to document formats that have text golds.
+
+ This comparer implements string compare using Unicode character values exactly the way strings
+ are sorted in Java. If you don't use this comparer, then golds in .NET and Java could be different
+ because .NET default string sorting algorithm is different (it looks more like case-insensitive).
+
+
+
+
+
+ Compares the specified a.
+
+ The first object.
+ The second object.
+ An integer indicating the lexical relationship between the two comparands.
+
+
+
+ Do not create instances of this class. Use this instance instead.
+
+
+
+
+ A completementary class to .
+ Use this class when you need to create a with case-insensitive
+ string keys and you will export this list to document formats that have text golds.
+
+
+
+
+ Compares the specified a.
+
+ The first object.
+ The second object.
+ An integer indicating the lexical relationship between the two comparands.
+
+
+
+ Do not create instances of this class. Use this instance instead.
+
+
+
+
+ RK I would have preferred using only System.Uri to deal with URIs, but unfortunately
+ System.Uri does not support relative URIs and we can encounter relative URIs in Word documents.
+ This is a set of utility functions that we use to deal with URIs in Word documents.
+
+ There is a problem with naming. Strictly speaking, a URIs are like these:
+ http://example/resource.txt#frag01
+ ../../../resource.txt
+
+ But MS Word can store either a URI, an absolute DOS file path or UNC file path in a single field.
+ Therefore it requires some logic when handling. For example, we should escape/unescape URI only,
+ never DOS or UNC path.
+
+ So how should I call a value that can be URI, DOS or UNC path? In this code, I call them Href.
+
+
+
+
+ Makes full uri path from base uri and given uri. Leaves escaped characters 'as is'.
+ .
+
+ The base URI.
+ The original URI.
+ Returns uri
+
+
+
+ Makes full uri path from base uri and given uri. Unescapes the result.
+ .
+
+ The base URI.
+ The original URI.
+ Returns uri
+
+
+
+ Gets the hyperlink part that is before the "#".
+
+ The href uri.
+ Returns uri
+
+
+
+ Gets the hyperlink part that is after the "#" excluding the "#".
+
+ The href uri.
+ Returns address
+
+
+
+ If subaddress is not empty or null, returns address + "#" + subAddress, otherwise returns just address.
+
+ The address.
+ The sub address.
+ Returns address
+
+
+
+ Returns true if the URI, UNC path or file path is absolute (rooted).
+ This method is useful to call before trying to construct a .NET Uri object because
+ the .NET Uri object will throw if the uri is relative.
+
+ The href uri.
+
+ true if [is absolute href] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string seems to be a URI with a scheme.
+
+ The href uri.
+
+ true if [is href with scheme] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string seems to be a an absolute local file path or UNC path.
+
+ The href uri.
+
+ true if [is file path] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string seems to be an absolute local file path.
+
+ The href path.
+
+ true if [is absolute local file path] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string seems to be a UNC path.
+
+ The href uri.
+
+ true if [is unc path] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string starts with "cid:".
+
+ The href uri.
+
+ true if the specified href is cid; otherwise, false.
+
+
+
+
+ The base uri can be a local or remote uri.
+ I'm not using the Uri class because if baseUri does not end with a slash,
+ its ctor will treat the last subfolder as the file name.
+
+ The base part.
+ The relative part.
+ Returns address
+
+
+
+ Gets directory path from given HREF.
+
+ The href path.
+ Returns address
+
+
+
+ Checks whether HREF represents a path with extension.
+ RK This looks pretty nasty to me. What "path", what "href" you are talking about?
+
+ The href path.
+
+ true if [is path with extension] [the specified href]; otherwise, false.
+
+
+
+
+ Returns true if the string starts with the "#" sign.
+
+ The href path.
+
+ true if [is sub address only] [the specified href]; otherwise, false.
+
+
+
+
+ Escapes the specified string if it needs escaping and is not already escaped.
+
+ The href path.
+ Returns address
+
+
+
+ Escapes the specified string.
+
+ The href path.
+ Returns address
+
+
+
+ Unescapes provided string if it needs unescaping.
+
+ The href path.
+ Returns address
+
+
+
+ Enum is the same as Aspose.Words.WarningType. It is used for renders.
+
+
+
+
+ Data loss warning type
+
+
+
+
+ Major formatting loss warning type
+
+
+
+
+ Minor formatting loss warning type
+
+
+
+
+ Unexpected content warning type
+
+
+
+
+ Represents big integer class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The BigInteger.
+
+
+
+ Initializes a new instance of the class.
+
+ The BigInteger.
+ The length.
+
+
+
+ Initializes a new instance of the class.
+
+ The data array.
+
+
+
+ Initializes a new instance of the class.
+
+ The data array.
+
+
+
+ Initializes a new instance of the class.
+
+ The integer.
+
+
+
+ Initializes a new instance of the class.
+
+ The ulong.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The value.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The value.
+
+ The result of the conversion.
+
+
+
+
+ Implements the operator +.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator -.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator %.
+
+ The BigInteger.
+ The integer.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator %.
+
+ The BigInteger.
+ The uinteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator %.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator /.
+
+ The BigInteger.
+ The integer.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator /.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator *.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator *.
+
+ The BigInteger.
+ The integer.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator <<.
+
+ The BigInteger.
+ The shift value.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator >>.
+
+ The BigInteger.
+ The shift value.
+
+ The result of the operator.
+
+
+
+
+ Bits the count.
+
+ Returns bit count
+
+
+
+ Gets the bytes.
+
+ Returns bytes
+
+
+
+ Implements the operator ==.
+
+ The BigInteger.
+ The uinteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator ==.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator >.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator <.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator >=.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator <=.
+
+ The BigInteger.
+ The BigInteger.
+
+ The result of the operator.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Represents hash utility class
+
+
+
+
+ Calculates MD4 hash of a byte array. MS Word uses this as image GUIDs.
+ If you need to calculate quite a lot of hashes, it could be better to create your own MD4 instance.
+
+ The bytes.
+ Returns md4 hash
+
+
+
+ Calculates MD4 hash of a byte array. MS Word uses this as image GUIDs.
+ If you need to calculate quite a lot of hashes, it could be better to create your own MD4 instance.
+
+ The bytes.
+ The offset.
+ The length.
+ Returns md4 hash
+
+
+
+ RK This code is NOT to be autoported to Java because it does not work when ported.
+ CsPorter gets confused with lots of signed and unsigned integers. Also this code uses lots of ref
+ parameters which results in ugly Java code.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Computes the hash.
+
+ The array.
+ Returns hash
+
+
+
+ Computes the hash.
+
+ The array.
+ The offset.
+ The count.
+ Returns hash
+
+
+
+ Represents data structure for MD5 (Message Digest) computation and provides
+ necessary methods to compute.
+
+
+
+
+ Initializes an implementation of the class.
+
+
+
+
+ When overridden in a derived class, routes data written to the object into the hash algorithm for computing the hash.
+
+ The input to compute the hash code for.
+ The offset into the byte array from which to begin using data.
+ The number of bytes in the byte array to use as data.
+
+
+
+ When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Updates the specified buffer.
+
+ The buffer.
+ The length.
+
+
+
+ Finals the update.
+
+
+
+
+ Gets or sets the digest.
+
+
+ The digest.
+
+
+
+
+ Provides different Public-Key Cryptography Standards methods.
+
+
+
+
+ Os the s2 IP.
+
+ The data array.
+ Returns the IP
+
+
+
+ I2s the OSP.
+
+ The data array.
+ The key size.
+ Returns the IP
+
+
+
+ RSAVs the p1.
+
+ The RSA object.
+ The data array.
+ Returns the RSA
+
+
+
+ In cryptography, RC4 (also known as ARC4 or ARCFOUR meaning Alleged RC4, see below)
+ is the most widely-used software stream cipher and is used in popular protocols such as
+ Secure Sockets Layer (SSL) (to protect Internet traffic) and WEP (to secure wireless networks).
+ While remarkable for its simplicity and speed in software, RC4 has weaknesses that argue
+ against its use in new systems. It is especially vulnerable when the beginning of the
+ output keystream is not discarded, or nonrandom or related keys are used; some ways of using
+ RC4 can lead to very insecure cryptosystems such as WEP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Encrypts the RC4.
+
+ The data array.
+
+
+
+ Encrypts the RC4.
+
+ The data in.
+ The data out.
+
+
+
+ Encrypts the RC4.
+
+ The data array.
+ The offset.
+ The length.
+
+
+
+ Encrypts the RC4.
+
+ The data in.
+ The offset.
+ The length.
+ The data out.
+ The off out.
+
+
+
+ Prepares the RC4 key.
+
+ The data key.
+
+
+
+ Prepares the RC4 key.
+
+ The data key.
+ The offset.
+ The length.
+
+
+
+ Performs RSA encryption.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The modulus bytes.
+ The exponent bytes.
+
+
+
+ Encrypts the specified input bytes.
+
+ The input bytes.
+ Encrypted data
+
+
+
+ Gets the modulus.
+
+
+
+
+ Gets the exponent.
+
+
+
+
+ Represents SHA1 helper
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Computes the hash.
+
+ The input data.
+ Returns hash
+
+
+
+ Represents Color as uint value (combination of alpha, red, greed and blue components).
+ Values taken from Reflector.
+ Why do we need this class here? It is required by , see comments there.
+
+
+
+
+ Empty color
+
+
+
+
+ AliceBlue color
+
+
+
+
+ AntiqueWhite color
+
+
+
+
+ Aqua color
+
+
+
+
+ Aquamarine color
+
+
+
+
+ Azure color
+
+
+
+
+ Beige color
+
+
+
+
+ Bisque color
+
+
+
+
+ Black color
+
+
+
+
+ BlanchedAlmond color
+
+
+
+
+ Blue color
+
+
+
+
+ BlueViolet color
+
+
+
+
+ Brown color
+
+
+
+
+ BurlyWood color
+
+
+
+
+ CadetBlue color
+
+
+
+
+ Chartreuse color
+
+
+
+
+ Chocolate color
+
+
+
+
+ Coral color
+
+
+
+
+ CornflowerBlue color
+
+
+
+
+ Cornsilk color
+
+
+
+
+ Crimson color
+
+
+
+
+ Cyan color
+
+
+
+
+ DarkBlue color
+
+
+
+
+ DarkCyan color
+
+
+
+
+ DarkGoldenrod color
+
+
+
+
+ DarkGray color
+
+
+
+
+ DarkGreen color
+
+
+
+
+ DarkKhaki color
+
+
+
+
+ DarkMagenta color
+
+
+
+
+ DarkOliveGreen color
+
+
+
+
+ DarkOrange color
+
+
+
+
+ DarkOrchid color
+
+
+
+
+ DarkRed color
+
+
+
+
+ DarkSalmon color
+
+
+
+
+ DarkSeaGreen color
+
+
+
+
+ DarkSlateBlue color
+
+
+
+
+ DarkSlateGray color
+
+
+
+
+ DarkTurquoise color
+
+
+
+
+ DarkViolet color
+
+
+
+
+ DeepPink color
+
+
+
+
+ DeepSkyBlue color
+
+
+
+
+ DimGray color
+
+
+
+
+ DodgerBlue color
+
+
+
+
+ Firebrick color
+
+
+
+
+ FloralWhite color
+
+
+
+
+ ForestGreen color
+
+
+
+
+ Fuchsia color
+
+
+
+
+ Gainsboro color
+
+
+
+
+ GhostWhite color
+
+
+
+
+ Gold color
+
+
+
+
+ Goldenrod color
+
+
+
+
+ Gray color
+
+
+
+
+ Green color
+
+
+
+
+ GreenYellow color
+
+
+
+
+ Honeydew color
+
+
+
+
+ HotPink color
+
+
+
+
+ IndianRed color
+
+
+
+
+ Indigo color
+
+
+
+
+ Ivory color
+
+
+
+
+ Khaki color
+
+
+
+
+ Lavender color
+
+
+
+
+ LavenderBlush color
+
+
+
+
+ LawnGreen color
+
+
+
+
+ LemonChiffon color
+
+
+
+
+ LightBlue color
+
+
+
+
+ LightCoral color
+
+
+
+
+ LightCyan color
+
+
+
+
+ LightGoldenrodYellow color
+
+
+
+
+ LightGray color
+
+
+
+
+ LightGreen color
+
+
+
+
+ LightPink color
+
+
+
+
+ LightSalmon color
+
+
+
+
+ LightSeaGreen color
+
+
+
+
+ LightSkyBlue color
+
+
+
+
+ LightSlateGray color
+
+
+
+
+ LightSteelBlue color
+
+
+
+
+ LightYellow color
+
+
+
+
+ Lime color
+
+
+
+
+ LimeGreen color
+
+
+
+
+ Linen color
+
+
+
+
+ Magenta color
+
+
+
+
+ Maroon color
+
+
+
+
+ MediumAquamarine color
+
+
+
+
+ MediumBlue color
+
+
+
+
+ MediumOrchid color
+
+
+
+
+ MediumPurple color
+
+
+
+
+ MediumSeaGreen color
+
+
+
+
+ MediumSlateBlue color
+
+
+
+
+ MediumSpringGreen color
+
+
+
+
+ MediumTurquoise color
+
+
+
+
+ MediumVioletRed color
+
+
+
+
+ MidnightBlue color
+
+
+
+
+ MintCream color
+
+
+
+
+ MistyRose color
+
+
+
+
+ Moccasin color
+
+
+
+
+ NavajoWhite color
+
+
+
+
+ Navy color
+
+
+
+
+ OldLace color
+
+
+
+
+ Olive color
+
+
+
+
+ OliveDrab color
+
+
+
+
+ Orange color
+
+
+
+
+ OrangeRed color
+
+
+
+
+ Orchid color
+
+
+
+
+ PaleGoldenrod color
+
+
+
+
+ PaleGreen color
+
+
+
+
+ PaleTurquoise color
+
+
+
+
+ PaleVioletRed color
+
+
+
+
+ PapayaWhip color
+
+
+
+
+ PeachPuff color
+
+
+
+
+ Peru color
+
+
+
+
+ Pink color
+
+
+
+
+ Plum color
+
+
+
+
+ PowderBlue color
+
+
+
+
+ Purple color
+
+
+
+
+ Red color.
+
+
+
+
+ RosyBrown color
+
+
+
+
+ RoyalBlue color
+
+
+
+
+ SaddleBrown color
+
+
+
+
+ Salmon color
+
+
+
+
+ SandyBrown color
+
+
+
+
+ SeaGreen color
+
+
+
+
+ SeaShell color
+
+
+
+
+ Sienna color
+
+
+
+
+ Silver color
+
+
+
+
+ SkyBlue color
+
+
+
+
+ SlateBlue color
+
+
+
+
+ SlateGray color
+
+
+
+
+ Snow color
+
+
+
+
+ SpringGreen color
+
+
+
+
+ SteelBlue color
+
+
+
+
+ Tan color.
+
+
+
+
+ Teal color
+
+
+
+
+ Thistle color
+
+
+
+
+ Tomato color
+
+
+
+
+ Transparent color
+
+
+
+
+ Turquoise color
+
+
+
+
+ Violet color
+
+
+
+
+ Wheat color
+
+
+
+
+ White color
+
+
+
+
+ WhiteSmoke color
+
+
+
+
+ Yellow color
+
+
+
+
+ YellowGreen color
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior.
+ This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The brush type.
+
+
+
+ Creates an empty brush.
+
+ Returns empty brush.
+
+
+
+ Gets the type of the brush.
+
+
+ The type of the brush.
+
+
+
+
+ Represents enumeration of the brush types.
+
+
+
+
+ Solid brush
+
+
+
+
+ Hatch brush
+
+
+
+
+ Texture brush
+
+
+
+
+ LinearGradient brush
+
+
+
+
+ PathGradient brush
+
+
+
+
+ Use this class instead of GDI+ Color to make code autoportable to Java.
+
+ This is a by-reference object with by-value semantics. It is immutable and can be equality compared.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Color?
+ 1. .NET Color is too convoluted and awkward to use. For example, it is error prone to compare (have to convert to argb first).
+ 2. Even if we decided to implement .NET Color in Java, it would be more convoluted than we need because it uses enum.ToString etc.
+ So it seems best to just implement our own simple color class that is automatically portable.
+
+
+
+
+ Normally such method should not be on an abstraction class, but in this case it is autoportable.
+
+ Returns color.
+
+
+
+ Normally such method should not be on an abstraction class, but in this case it is autoportable.
+
+ The color.
+ Returns color.
+
+
+
+ Same as calling a ctor. Kept to preserve color creation familiar to .NET developers.
+
+ The r channel.
+ The g channel.
+ The b channel.
+ Returns color.
+
+
+
+ Same as calling a ctor. Kept to preserve color creation familiar to .NET developers.
+
+ The A channel.
+ The r channel.
+ The g channel.
+ The b channel.
+ Returns color.
+
+
+
+ Alpha blends the specified foreground and background colors.
+
+ Color of the fore.
+ Color of the back.
+ Returns color.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The ARGB number.
+
+
+
+ Creates a Color from the specified Color, but with the new specified alpha value.
+ Although this method allows a 32-bit value to be passed for the alpha value, the value is limited to 8 bits.
+
+ A channel.
+ The r channel.
+ The g channel.
+ The b channel.
+
+
+
+ Creates a color with the specified alpha.
+
+ The new alpha.
+ The color.
+
+
+
+ Creates a color with 0xff alpha.
+
+ The r channel.
+ The g channel.
+ The b channel.
+
+
+
+ Toes the ARGB.
+
+ Returns color
+
+
+
+ Overridden because equals is overridden.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ The actual implementation.
+
+ The first color.
+ The second color.
+ [true] if colors are equals
+
+
+
+ Implements the operator ==.
+
+ The first color.
+ The second color.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The first color
+ The second color.
+
+ The result of the operator.
+
+
+
+
+ AliceBlue color
+
+
+
+
+ AntiqueWhite color
+
+
+
+
+ Aqua color
+
+
+
+
+ Aquamarine color
+
+
+
+
+ Azure color
+
+
+
+
+ Beige color
+
+
+
+
+ Bisque color
+
+
+
+
+ Black color
+
+
+
+
+ BlanchedAlmond color
+
+
+
+
+ Blue color
+
+
+
+
+ BlueViolet color
+
+
+
+
+ Brown color
+
+
+
+
+ BurlyWood color
+
+
+
+
+ CadetBlue color
+
+
+
+
+ Chartreuse color
+
+
+
+
+ Chocolate color
+
+
+
+
+ Coral color
+
+
+
+
+ CornflowerBlue color
+
+
+
+
+ Cornsilk color
+
+
+
+
+ Crimson color
+
+
+
+
+ Cyan color
+
+
+
+
+ DarkBlue color
+
+
+
+
+ DarkCyan color
+
+
+
+
+ DarkGoldenrod color
+
+
+
+
+ DarkGray color
+
+
+
+
+ DarkGreen color
+
+
+
+
+ DarkKhaki color
+
+
+
+
+ DarkMagenta color
+
+
+
+
+ DarkOliveGreen color
+
+
+
+
+ DarkOrange color
+
+
+
+
+ DarkOrchid color
+
+
+
+
+ DarkRed color
+
+
+
+
+ DarkSalmon color
+
+
+
+
+ DarkSeaGreen color
+
+
+
+
+ DarkSlateBlue color
+
+
+
+
+ DarkSlateGray color
+
+
+
+
+ DarkTurquoise color
+
+
+
+
+ DarkViolet color
+
+
+
+
+ DeepPink color
+
+
+
+
+ DeepSkyBlue color
+
+
+
+
+ DimGray color
+
+
+
+
+ DodgerBlue color
+
+
+
+
+ Firebrick color
+
+
+
+
+ FloralWhite color
+
+
+
+
+ ForestGreen color
+
+
+
+
+ Fuchsia color
+
+
+
+
+ Gainsboro color
+
+
+
+
+ GhostWhite color
+
+
+
+
+ Gold color
+
+
+
+
+ Gray color
+
+
+
+
+ Green color
+
+
+
+
+ GreenYellow color
+
+
+
+
+ Goldenrod color
+
+
+
+
+ Honeydew color
+
+
+
+
+ HotPink color
+
+
+
+
+ IndianRed color
+
+
+
+
+ Indigo color
+
+
+
+
+ Ivory color
+
+
+
+
+ Khaki color
+
+
+
+
+ Lavender color
+
+
+
+
+ LavenderBlush color
+
+
+
+
+ LawnGreen color
+
+
+
+
+ LemonChiffon color
+
+
+
+
+ LightBlue color
+
+
+
+
+ LightCoral color
+
+
+
+
+ LightCyan color
+
+
+
+
+ LightGoldenrodYellow color
+
+
+
+
+ LightGray color
+
+
+
+
+ LightGreen color
+
+
+
+
+ LightPink color
+
+
+
+
+ LightSalmon color
+
+
+
+
+ LightSeaGreen color
+
+
+
+
+ LightSkyBlue color
+
+
+
+
+ LightSlateGray color
+
+
+
+
+ LightSteelBlue color
+
+
+
+
+ LightYellow color
+
+
+
+
+ Lime color
+
+
+
+
+ LimeGreen color
+
+
+
+
+ Linen color
+
+
+
+
+ Magenta color
+
+
+
+
+ Maroon color
+
+
+
+
+ MediumAquamarine color
+
+
+
+
+ MediumBlue color
+
+
+
+
+ MediumOrchid color
+
+
+
+
+ MediumPurple color
+
+
+
+
+ MediumSeaGreen color
+
+
+
+
+ MediumSlateBlue color
+
+
+
+
+ MediumSpringGreen color
+
+
+
+
+ MediumTurquoise color
+
+
+
+
+ MediumVioletRed color
+
+
+
+
+ MidnightBlue color
+
+
+
+
+ MintCream coloor
+
+
+
+
+ MistyRose color
+
+
+
+
+ Moccasin color
+
+
+
+
+ NavajoWhite color
+
+
+
+
+ Navy color
+
+
+
+
+ OldLace color
+
+
+
+
+ Olive color
+
+
+
+
+ OliveDrab color
+
+
+
+
+ Orange color
+
+
+
+
+ OrangeRed color
+
+
+
+
+ Orchid color
+
+
+
+
+ PaleGoldenrod color
+
+
+
+
+ PaleGreen color
+
+
+
+
+ PaleTurquoise color
+
+
+
+
+ PaleVioletRed color
+
+
+
+
+ PapayaWhip color
+
+
+
+
+ PeachPuff color
+
+
+
+
+ Peru color
+
+
+
+
+ Pink color
+
+
+
+
+ Plum color
+
+
+
+
+ PowderBlue color
+
+
+
+
+ Purple color
+
+
+
+
+ Red color.
+
+
+
+
+ RosyBrown color
+
+
+
+
+ RoyalBlue color
+
+
+
+
+ SaddleBrown color
+
+
+
+
+ Salmon color
+
+
+
+
+ SandyBrown color
+
+
+
+
+ SeaGreen color
+
+
+
+
+ SeaShell color
+
+
+
+
+ Sienna color
+
+
+
+
+ Silver color
+
+
+
+
+ SkyBlue color
+
+
+
+
+ SlateBlue color
+
+
+
+
+ SlateGray color
+
+
+
+
+ Snow color
+
+
+
+
+ SpringGreen color
+
+
+
+
+ SteelBlue color
+
+
+
+
+ Tan color.
+
+
+
+
+ Teal color
+
+
+
+
+ Thistle color
+
+
+
+
+ Tomato color
+
+
+
+
+ Turquoise color
+
+
+
+
+ Violet color
+
+
+
+
+ Wheat color
+
+
+
+
+ White color
+
+
+
+
+ WhiteSmoke color
+
+
+
+
+ Yellow color
+
+
+
+
+ YellowGreen color
+
+
+
+
+ Gets Transparent color.
+
+
+
+
+ Gets Empty color. This is full transparency black color used in the AW model.
+
+
+
+
+ Gets the A.
+
+
+
+
+ Gets the R.
+
+
+
+
+ Gets the G.
+
+
+
+
+ Gets the B.
+
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+ true if this instance is empty; otherwise, false.
+
+
+
+
+ Use this class instead of GDI+ Font to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Font?
+ .NET's Font is very tightly related to GDI+ behavior, for example it only allows to use fonts properly installed in Windows.
+ But we need to support Java and Mono and using a class that depends on GDI+ is not possible. Hence an automatically portable abstraction.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The size points.
+ The style.
+ The true type font.
+ The capitals.
+
+
+
+ Initializes a new instance of the class.
+
+ The size points.
+ The style.
+ The true type font.
+
+
+
+ Replace font content
+
+ The source font.
+
+
+
+ Returns width of the character (points).
+
+ The symbol to calculate.
+ Returns width
+
+
+
+ Gets the text width points.
+
+ The text to calculate.
+ Returns width
+
+
+
+ Gets text width including XMax or advanceWidth value for last symbol.
+
+ Text value.
+ Font width.
+
+
+
+ Gets the text width points.
+
+ The text to calculate.
+ The start index.
+ The char count.
+ Returns width
+
+
+
+ Returns measurement text box of the text in points.
+
+ The text to calculate.
+ Returns size
+
+
+
+ Gets the char width lis.
+
+ The symbol to calculate.
+ Returns width
+
+
+
+ Gets the text width lis.
+
+ The text to calculate.
+ Returns width
+
+
+
+ Returns True for "Microsoft Sans Serif" font. This one is poorly rendered by GDI+. See Test286 and Gemini-6959.
+
+ Name of the font.
+
+ true if [is poorly rendered by GDI plus] [the specified font name]; otherwise, false.
+
+
+
+
+ Gets the true type font.
+
+
+
+
+ Gets style of this font.
+
+
+
+
+ Gets a value indicating whether this instance is bold.
+
+
+ true if this instance is bold; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is italic.
+
+
+ true if this instance is italic; otherwise, false.
+
+
+
+
+ Gets the font capitals.
+
+
+
+
+ Gets the SmallCaps scale factor.
+
+
+
+
+ Gets name of this font.
+
+
+ The name of the family.
+
+
+
+
+ Gets size of this font (points).
+
+
+ The size points.
+
+
+
+
+ Returns the cell ascent in points.
+
+
+
+
+ Returns the cell descent in points.
+
+
+
+
+ Shortcut for + .
+
+
+
+
+ Cell ascent of this font (lis).
+ This is a vertical distance from cell top to cell baseline.
+
+
+ This value is also called cell baseline.
+
+
+
+
+ Cell descent of this font (lis).
+ This is a vertical distance from cell bottom to cell baseline.
+
+
+
+
+ Returns cell height of this font (lis).
+ This is a shortcut for + .
+
+
+
+
+ Returns leading of this font (lis).
+ This is a shortcut for - .
+
+
+
+
+ Returns cell spacing of this font (lis).
+ This is a vertical distance between baselines of the two glyphs.
+
+
+
+
+ Returns cell spacing of this font (points).
+ This is a vertical distance between baselines of the two glyphs.
+
+
+
+
+ This property contains additional information about font's style
+
+
+
+
+ Represents a base class for gradient brushes.
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior. This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The brush type.
+
+
+
+ Initializes a new instance of the class.
+
+ The wrap mode.
+ Type of the brush.
+
+
+
+ Gets or sets the transform. The transform defines a local geometric transform for this brush.
+
+
+ The transform.
+
+
+
+
+ Gets or sets the wrap mode. Wrap mode specifies how a texture or gradient is tiled
+ when it is smaller than the area being filled.
+
+
+ The wrap mode.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the brush.
+
+
+
+ Gets or sets the interpolation colors that defines a multicolor linear gradient..
+
+
+ The interpolation colors.
+
+
+
+
+ Gets or sets the blend positions that define a custom falloff for the gradient.
+
+
+ The blend positions.
+
+
+
+
+ Gets or sets the blend factors that define a custom falloff for the gradient.
+
+
+ The blend factors.
+
+
+
+
+ Graphics class wrapper
+
+
+
+
+ Creates this instance.
+
+ The instance
+
+
+
+ Creates this instance
+
+ The graphic unit.
+ The pixel offset mode.
+ The smothing mode.
+ The instance
+
+
+
+ This implementation is a streamlined version of the FxCop rule
+ http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Closes this instance.
+
+
+
+
+ Gets the HDC.
+
+
+ The HDC.
+
+
+
+
+ Measures the string.
+
+ The text.
+ The font GDI.
+ The size.
+ The format.
+
+
+
+
+ Gets the X axis dpi.
+
+
+ The X axis dpi
+
+
+
+
+ Gets the Y axis dpi.
+
+
+ The Y axis dpi
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior.
+ This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The hatch style.
+ Color of the fore.
+ Color of the back.
+
+
+
+ Gets or sets the hatch style.
+
+
+ The hatch style.
+
+
+
+
+ Gets or sets the color of the foreground.
+
+
+ The color of the foreground.
+
+
+
+
+ Gets or sets the color of the background.
+
+
+ The color of the background.
+
+
+
+
+ Represents color point in a multicolor linear gradient.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The position.
+
+
+
+ Gets or sets the color that represents the colors to use at corresponding positions along a gradient.
+
+
+ The color.
+
+
+
+
+ Gets or sets the position along gradient line.
+
+
+ The position.
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior. This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The recttangle.
+ The start color.
+ The end color.
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+ The angle.
+ if set to true [is scaled].
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The end point.
+ The start color.
+ The end color.
+
+
+
+ Gets or sets the rectangle.
+
+
+ The rectangle.
+
+
+
+
+ Gets or sets the start color of the gradient in case of two color gradient.
+
+
+ The start color.
+
+
+
+
+ Gets or sets the end color of the gradient in case of two color gradient.
+
+
+ The end color.
+
+
+
+
+ Gets or sets a value indicating whether the angle is affected by the transform associated with this gradient.
+
+
+ true if this instance is scaled; otherwise, false.
+
+
+
+
+ Gets or sets the angle, measured in degrees clockwise from the x-axis, of the gradient's orientation line.
+
+
+ The angle.
+
+
+
+
+ Gets a Point structure that represents the starting point of the linear gradient.
+
+
+
+
+ Gets a Point structure that represents the endpoint of the linear gradient.
+
+
+
+
+ Replaces .
+
+
+ Most algorithms taken from Sun's AffineTransform.java.
+ Java's names for matrix elements used internally.
+ Map of java names to .net ones to description:
+
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+
+
+ An identity transform is one in which the output coordinates are
+ always the same as the input coordinates.
+ If this transform is anything other than the identity transform,
+ the type will either be the constant GENERAL_TRANSFORM or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+ A translation moves the coordinates by a constant amount in x
+ and y without changing the length or angle of vectors.
+
+
+ A uniform scale multiplies the length of vectors by the same amount
+ in both the x and y directions without changing the angle between
+ vectors.
+ This flag bit is mutually exclusive with the TypeGeneralScale flag.
+
+
+ A general scale multiplies the length of vectors by different
+ amounts in the x and y directions without changing the angle
+ between perpendicular vectors.
+ This flag bit is mutually exclusive with the TypeUniformScale flag.
+
+
+ This constant is a bit mask for any of the scale flag bits.
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a mirror image flip about some axis which changes the
+ normally right handed coordinate system into a left handed
+ system in addition to the conversions indicated by other flag bits.
+ A right handed coordinate system is one where the positive X
+ axis rotates counterclockwise to overlay the positive Y axis
+ similar to the direction that the fingers on your right hand
+ curl when you stare end on at your thumb.
+ A left handed coordinate system is one where the positive X
+ axis rotates clockwise to overlay the positive Y axis similar
+ to the direction that the fingers on your left hand curl.
+ There is no mathematical way to determine the angle of the
+ original flipping or mirroring transformation since all angles
+ of flip are identical given an appropriate adjusting rotation.
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a quadrant rotation by some multiple of 90 degrees in
+ addition to the conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the TypeGeneralRotation flag.
+
+
+ This flag bit indicates that the transform defined by this object
+ performs a rotation by an arbitrary angle in addition to the
+ conversions indicated by other flag bits.
+ A rotation changes the angles of vectors by the same amount
+ regardless of the original direction of the vector and without
+ changing the length of the vector.
+ This flag bit is mutually exclusive with the
+
+
+ This constant is a bit mask for any of the rotation flag bits.
+
+
+ This constant indicates that the transform defined by this object
+ performs an arbitrary conversion of the input coordinates.
+ If this transform can be classified by any of the above constants,
+ the type will either be the constant TypeIdentity or a
+ combination of the appropriate flag bits for the various coordinate
+ conversions that this transform performs.
+
+
+
+ Initializes a new instance of the DrMatrix class as the identity matrix.
+
+
+
+
+ m00 M11 Scale X
+ m10 M12 Shear Y
+ m01 M21 Shear X
+ m11 M22 Scale Y
+ m02 M31 Translate X
+ m12 M32 Translate Y
+
+ The M11 value.
+ The M12 value.
+ The M21 value.
+ The M22 value.
+ The M31 value.
+ The M32 value.
+
+
+
+ Returns copy of matrix elements.
+
+ Returns elements
+
+
+
+ Determines whether [is null or identity] [the specified matrix].
+
+ The matrix.
+
+ true if [is null or identity] [the specified matrix]; otherwise, false.
+
+
+
+
+ Creates the stretch matrix.
+
+ From rectangle.
+ To rectangle.
+ Returns matrix
+
+
+
+ Applies the geometric transform represented by this Matrix to
+ a specified part of array of points.
+
+ The points.
+ The start index.
+ The number of points.
+
+
+
+ Applies the geometric transform represented by this Matrix to
+ a specified point.
+
+ The point.
+ Transformed point
+
+
+
+ Applies the geometric transform represented by this Matrix to a specified array of points.
+
+ The points.
+
+
+
+ Applies the geometric transform represented by this Matrix to a specified rectangle.
+
+ The rectangle.
+ Transformed rectangle
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this Matrix using the specified order.
+
+ The scale X.
+ The scale Y.
+ The order.
+
+
+
+ Applies the specified scale vector (scaleX and scaleY) to this Matrix using (default) Prepend order.
+
+ The scale x.
+ The scale y.
+
+
+
+ Applies the specified translation vector to this Matrix in the specified order.
+
+ The offset X.
+ The offset Y.
+ The order.
+
+
+
+ Applies the specified translation vector to this Matrix using (default) Prepend order.
+
+ The translate x.
+ The translate y.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter, and in the order specified in the order parameter.
+
+ The matrix.
+ The order.
+
+
+
+ Multiplies this Matrix by the matrix specified in the matrix parameter using (default) Prepend order.
+
+ The matrix.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin
+ (zero x and y coordinates) for this Matrix in the specified order.
+
+ The angle.
+ The order.
+
+
+
+ Applies a clockwise rotation of an amount specified in the angle parameter, around the origin
+ (zero x and y coordinates) for this Matrix in the default (Prepend) order.
+
+ The angle.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the specified order.
+
+ The angle.
+ The point.
+ The order.
+
+
+
+ Applies a clockwise rotation about the specified point to this Matrix in the default (Prepend) order.
+
+ The angle.
+ The point.
+
+
+
+ Resets this Matrix to have the elements of the identity matrix.
+
+
+
+
+ Shears the specified x.
+
+ The x.
+ The y.
+
+
+
+ Returns deep copy of this instance.
+
+ Returns cloned matrix
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ The actual implementation.
+
+ The first matrix.
+ The second matrix.
+ [true] if martrix are equals
+
+
+
+ Implements the operator ==.
+
+ The first matrix.
+ The second matrix.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The first matrix.
+ The second matrix.
+
+ The result of the operator.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Inverts this instance.
+
+ The inverted matrix.
+
+
+
+ Gets a value indicating whether this instance is identity.
+
+
+ true if this instance is identity; otherwise, false.
+
+
+
+
+ Gets the M11.
+
+
+
+
+ Gets the M12.
+
+
+
+
+ Gets the M21.
+
+
+
+
+ Gets the M22.
+
+
+
+
+ Gets the M31.
+
+
+
+
+ Gets the M32.
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior. This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The path used to draw a gradient.
+ The center point of the gradient.
+
+
+
+ Gets or sets the path used to draw a gradient.
+
+
+
+
+ Gets or sets the color of the center.
+
+
+ The color of the center.
+
+
+
+
+ Gets or sets the center point of the gradient.
+
+
+
+
+ Gets or sets the focus point for the gradient falloff
+
+
+
+
+ Gets or sets the surround colors.
+
+
+
+
+ Use this class instead of GDI+ Pen to make code autoportable to Java.
+ Why do we have this class instead of implementing ms.System.Drawing.Pen?
+ .NET's Pens are very tightly related to GDI+ behavior. This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+ The line join.
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+ The start cap.
+ The end cap.
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+ The start cap.
+ The end cap.
+ The line join.
+
+
+
+ Initializes a new instance of the class.
+
+ The brush.
+
+
+
+ Initializes a new instance of the class.
+
+ The brush.
+ The start cap.
+ The end cap.
+
+
+
+ Initializes a new instance of the class.
+
+ The brush.
+ The width.
+
+
+
+ Makes a shallow copy.
+
+ Returns cloned pen
+
+
+
+ Gets or sets the alignment.
+
+
+ The alignment.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width.
+
+
+
+
+ Gets or sets the nominal non-scalable width.
+
+
+
+
+ Gets or sets the start cap.
+
+
+ The start cap.
+
+
+
+
+ Gets or sets the end cap.
+
+
+ The end cap.
+
+
+
+
+ Gets or sets the line join.
+
+
+ The line join.
+
+
+
+
+ Gets or sets the brush.
+
+
+ The brush.
+
+
+
+
+ Gets or sets the miter limit.
+
+
+ The miter limit.
+
+
+
+
+ Gets or sets the dash offset.
+
+
+ The dash offset.
+
+
+
+
+ Gets or sets the dash cap.
+
+
+ The dash cap.
+
+
+
+
+ Gets or sets the dash style.
+
+
+ The dash style.
+
+
+
+
+ Avoid directly modifying values in the array returned by this property.
+ For standard dashes it returns a static array. If you modify values in it, it will affect all pens with this pattern.
+
+
+ The dash pattern.
+
+
+
+
+ Gets or sets the compound array.
+
+
+ The compound array.
+
+
+
+
+ Specifies the alignment of a DrPen object in relation to the theoretical, zero-width line.
+
+
+
+
+ Specifies that the Pen object is centered over the theoretical line.
+
+
+
+
+ Specifies that the Pen is positioned on the inside of the theoretical line.
+
+
+
+
+ Specifies the Pen is positioned on the outside of the theoretical line.
+
+
+
+
+ Specifies the Pen is positioned to the left of the theoretical line.
+
+
+
+
+ Specifies the Pen is positioned to the right of the theoretical line.
+
+
+
+
+ This object holds a lot of memory and should not be held in memory for too long.
+
+ This is a very dumb, but very memory expensive object that contains all image pixels values.
+ At the moment it contains pixels in a format suitable for saving to PDF.
+ But I am keeping this class here because I want to put platform-specific image extraction into
+ and I want it to return the parsed pixels in a platform-neutral way.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color values.
+ The alpha values.
+ if set to true [has transparent pixels].
+ The color model.
+ The bits per component.
+
+
+
+ Returns an array containing either RGB values for RGB bitmaps or color indices for indexed bitmaps.
+
+
+
+
+ Returns an array of alpha values of the bitmap if it contains any.
+ If the bitmap does not support alpha channel, then this should return an empty array.
+
+
+
+
+ True if at least one pixel of the image is transparent.
+
+
+ true if this instance has transparent pixels; otherwise, false.
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior. This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+
+
+
+ Gets or sets the color used by the brush to fill objects..
+
+
+ The color.
+
+
+
+
+ Use this class instead of GDI+ Brushes to make code autoportable to Java.
+
+ Why do we have this class instead of implementing ms.System.Drawing.Brush?
+ .NET's Brushes are very tighly related to GDI+ behavior.
+ This simple automatically portable abstractions is much easier to implement.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image bytes.
+
+
+
+ Initializes a new instance of the class.
+
+ The image bytes.
+ The wrap mode.
+
+
+
+ Gets or sets the image used by the brush.
+
+
+ The image bytes.
+
+
+
+
+ Gets or sets the opacity value in a color transform matrix.
+
+
+ The opacity.
+
+
+
+
+ The number of elements must be even. Every even element is old color. Every odd element is new color.
+
+
+ The color map.
+
+
+
+
+ Specifies the portion of the image used by the brush.
+ If it equals RectangleF.Empty then the whole image will be used.
+ Coordinates are in pixels.
+
+
+ The image area.
+
+
+
+
+ Describes the capital letter style for a object.
+
+
+
+
+ Capital letters render normally.
+
+
+
+
+ Lowercase letters are replaced with a glyph form of an uppercase letter with the same approximate height.
+
+
+
+
+ Defines constants used to display control characters when display of formatting marks is turned on
+ e.g. symbols (signs) for paragraph break, non-breaking space and so on.
+
+
+
+
+ In Wingdings 3 font this is a right arrow used to display tabs when hidden chars are on.
+
+
+
+
+ In Wingdings 3 font this is a corner arrow used to display explicit line breaks when hidden chars are on.
+
+
+
+
+ In Wingdings 3 font this is an arrow used to display explicit wrap breaks when hidden chars are on.
+
+
+
+
+ This is a "start" symbol used to display end of cell when hidden chars are on.
+
+
+
+
+ This is the "pi" symbol used to display end of paragraph when hidden chars are on.
+
+
+
+
+ NonBreakingHyphen sing
+
+
+
+
+ OptionalHyphen sing
+
+
+
+
+ EmDash sing
+
+
+
+
+ EnDash Sign
+
+
+
+
+ EmSpace Sign
+
+
+
+
+ EnSpace Sign
+
+
+
+
+ Em14Space Sign
+
+
+
+
+ NonBreakingSpace Sign
+
+
+
+
+ NoWidthOptionalBreak Sign
+
+
+
+
+ NoWidthNonBreak Sign
+
+
+
+
+ Degree Sign char
+
+
+
+
+ Used when display of spaces is turned on in the renderer.
+ Note that it must has same width as the space character!
+
+
+
+
+ Space Sign
+
+
+
+
+ Degree Sign
+
+
+
+
+ Represents type of the document run. This is essential to the layout and editor document.
+ Type encompasses several important characteristics of a run which are used for line wrapping,
+ merging, detecting line properties, etc.
+
+ Value type.
+ Do not change actual integer values! They are arranged to allow bit operations.
+
+
+
+ Type bits.
+
+
+
+
+ Type None.
+
+
+
+
+ Type Text.
+
+
+
+
+ Type Break
+
+
+
+
+ Type Marker
+
+
+
+
+ Break kind bits
+
+
+
+
+ Story break.
+
+
+
+
+ Section break.
+
+
+
+
+ Kind table. Table, Row or Cell break.
+
+
+
+
+ Paragraph break.
+
+
+
+
+ Page, Column, Line and Wrap breaks.
+
+
+
+
+ Strength bits.
+
+
+
+
+ Value bits
+
+
+
+
+ Default value. No type.
+
+
+
+
+ Content run which contains unknown data (this is yet not supported document content).
+
+
+
+
+ Content run containing inline text.
+
+
+
+
+ Symbol run containing 'em space'.
+
+
+
+
+ Symbol run containing 'en space'.
+
+
+
+
+ Symbol run containing '1/4 em space'.
+
+
+
+
+ Symbol run containing 'non breaking space'.
+
+
+
+
+ Symbol run containing 'em dash'.
+
+
+
+
+ Symbol run containing 'en dash'.
+
+
+
+
+ Symbol run containing 'non breaking hyphen'.
+
+
+
+
+ Symbol run containing 'optional hyphen'.
+
+
+
+
+ Symbol run containing 'no-width optional break'.
+
+
+
+
+ Symbol run containing 'no-width non break'.
+
+
+
+
+ Story break. Only last run in the story has this type.
+
+
+
+
+ Section break.
+
+
+
+
+ Table break.
+
+
+
+
+ Row break.
+
+
+
+
+ Cell break.
+
+
+
+
+ Paragraph break run which contains unknown data (this is yet not supported document content).
+
+
+
+
+ Paragraph break.
+
+
+
+
+ Page break.
+
+
+
+
+ Column break.
+
+
+
+
+ Line break.
+
+
+
+
+ Text wrapping break. This is a kind of a line break which forces next line to
+ appear below floating object where there is no need for wrapping.
+
+
+
+
+ Generic marker.
+
+
+
+
+ Comment reference.
+
+
+
+
+ Footnote reference.
+
+
+
+
+ Endnote reference.
+
+
+
+
+ Shape anchor.
+
+
+
+
+ The Document ID;
+
+
+
+
+ Returns True if run is text or symbol.
+
+ The value.
+
+ true if [is text type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run belongs to special symbols.
+
+ The value.
+
+ true if [is symbol type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is break.
+
+ The value.
+
+ true if [is break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is layout break.
+ Layout breaks include line, wrap, column and page breaks.
+
+ The value.
+
+ true if [is layout break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is story break.
+
+ The value.
+
+ true if [is story break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is section break.
+
+ The value.
+
+ true if [is section break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is table break.
+
+ The value.
+
+ true if [is table break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is paragraph break.
+
+ The value.
+
+ true if [is paragraph break type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if run of this type is layout break or not break.
+
+ The value.
+
+ true if [is non breaker] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run breaks section.
+
+ The value.
+
+ true if [is section break] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run breaks paragraph.
+
+ The value.
+
+ true if [is paragraph break] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run breaks cell.
+
+ The value.
+
+ true if [is cell break] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run breaks row.
+
+ The value.
+
+ true if [is row break] [the specified value]; otherwise, false.
+
+
+
+
+ Returns True if this run breaks table.
+
+ The value.
+
+ true if [is table break] [the specified value]; otherwise, false.
+
+
+
+
+ Returns strength of the document or layout break. The higher level of the broken document/layout
+ structure the greater strength is. Only breaks have strength (both layout and document), for
+ other types 0 is returned.
+
+ The value.
+ Returns strength of the document or layout break
+
+
+
+ Returns True if can convert specified value to .
+
+ The value.
+
+ true if [is run type] [the specified value]; otherwise, false.
+
+
+
+
+ Returns string representation of this value.
+
+ The value.
+
+ A that represents this instance.
+
+
+
+
+ Returns value constructed from specified string value.
+
+ The value.
+ Returns value constructed from specified string value
+
+
+
+ Array of valid string value of run type.
+
+
+
+
+ Array contains run type values which corresponds to .
+
+
+
+
+ Array of valid string value of run type.
+
+
+
+
+ Array contains run type values which corresponds to .
+
+
+
+
+ BITMAPFILEHEADER contains information about the type, size, and layout of a file that contains a DIB.
+
+ A BITMAPINFO immediately follows the BITMAPFILEHEADER structure in the DIB file.
+
+
+
+
+ Size of the BITMAPFILEHEADER structure.
+
+
+
+
+ Idea taken from http://www.codeproject.com/KB/GDI-plus/BitonalImageConverter.aspx
+
+
+
+
+ Create bitonal bitmap from the original bitmap. Image rows are aligned on byte boundary.
+
+ The original.
+ Returns bitmap
+
+
+
+ Converts to bitonal.
+
+ The original.
+ Returns bitmap
+
+
+
+ Represents a chroma key region.
+
+
+
+
+ Creates chroma key region with center in color and distance
+ between and /
+ equals .
+
+ The center.
+ The range.
+
+ is calculated by subtracting from
+ components and is calculated by addition
+ to components.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Color of the low.
+ Color of the high.
+
+
+
+ Returns true if lies within this region.
+
+ The color.
+
+ true if [is inside region] [the specified color]; otherwise, false.
+
+
+ A color is considered to be within the region when its R, G and B components are between corresponding
+ components of and .
+ Alpha component of all colors is ignored.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Low bound of the region.
+
+
+ The color of the low.
+
+
+
+
+ Upper bound of the region.
+
+
+ The color of the high.
+
+
+
+
+ Represents color models
+
+
+
+
+ Rgb color model
+
+
+
+
+ Indexed color model
+
+
+
+
+ GrayScale color model
+
+
+
+
+ Converts GDI+ hatch brushes into images suitable for writing to XPS and PDF.
+
+
+
+
+ Returns bytes array of an image (in the PNG format) for the specified brush.
+
+ The brush.
+ Returns hatch pattern
+
+
+
+ Represent image codec registry
+
+
+
+
+ Gets supported codec information for the specified image format.
+
+ The format.
+ return image codec
+
+
+
+ Color modes of an image.
+
+
+
+
+ Empty color modes
+
+
+
+
+ Grayscale color modes
+
+
+
+
+ BlackAndWhite color modes
+
+
+
+
+ Color settings of an image.
+
+
+
+
+ Creates default color settings.
+
+
+
+
+ Constructor.
+
+ Image color mode.
+ Image brightness.
+ Image contrast.
+
+
+
+ Checks if color settings are default.
+
+ True if color settings are default. False otherwise.
+
+
+
+ Determines whether [is default color mode] [the specified color mode].
+
+ The color mode.
+
+ true if [is default color mode] [the specified color mode]; otherwise, false.
+
+
+
+
+ Checks if specified contrast value is default.
+
+ The contrast.
+
+ True if contrast is default. False otherwise.
+
+
+
+
+ Checks if specified brightness value is default.
+
+ Brightness value to check.
+
+ True if brightness is default. False otherwise.
+
+
+
+
+ Image color mode.
+
+
+
+
+ Image brightness.
+
+
+ 0.5 is default value.
+ 0 means minimum brightness.
+ 1 means maximum brightness.
+
+
+
+
+ Image contrast.
+
+
+ 0.5 is default value.
+ 0 means minimum contrast.
+ 1 means maximum contrast.
+
+
+
+
+ Provides methods to deal with MS Word-like image cropping (when crop is specified in fractions of image width).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The crop left.
+ The crop right.
+ The crop top.
+ The crop bottom.
+
+
+
+ Calculates the full "source" crop rectangle.
+ It is a rectangle that is supposed to be in pixels and includes both positive and negative cropping.
+
+ The SRC rect.
+ Cropped rectangle
+
+
+
+ Calculates the rectangle in pixels that you must take from the source image.
+ The maximum is the whole source rectangle (image).
+
+ The SRC rect.
+ Cropped rectangle
+
+
+
+ Calculates the rectangle in world units that you must output the cropped image to.
+ The maximum is the whole destination rectangle (shape).
+
+ The DST rect.
+ Cropped rectangle
+
+
+
+ Chops the image inside according to the crop.
+ Do not call this if the crop has no positive cropping as it might be a waste loading the image into memory.
+ Do not call this for metafiles.
+ The callter is responsible for destroying the returned image.
+
+ The image bytes.
+ Cropped bitmap
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether [is null or empty] [the specified crop].
+
+ The image crop.
+
+ true if [is null or empty] [the specified crop]; otherwise, false.
+
+
+
+
+ Gets the hash code with crop.
+
+ The image bytes.
+ The image crop.
+ return hash code
+
+
+
+ Gets the hash code with crop.
+
+ The image bytes.
+ The image crop.
+ The chroma key.
+ return hash code
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+ true if this instance is empty; otherwise, false.
+
+
+
+
+ Positive cropping is when the crop boundary is moved inside of the image.
+
+
+ true if this instance has positive crop; otherwise, false.
+
+
+
+
+ Negative cropping is when the crop boundary is moved outside of the image.
+
+
+ true if this instance has negative crop; otherwise, false.
+
+
+
+
+ Provides methods to encode and save images into stream using different encoders and encoding parameters.
+
+ RK I think this should all go into PalBitmap.
+
+
+
+
+ Saves an image in JPEG format into a stream using the specified quality value (0 - 100).
+
+ The image.
+ The stream.
+ The quality.
+
+
+
+ Saves an image in TIFF format to a stream as the first frame.
+
+ The frame.
+ The stream.
+ The compression.
+ if set to true [is multiframe].
+ Returns tiff data
+
+
+
+ Saves an image in TIFF format to a stream as an intermediate frame.
+
+ The frame.
+ The tiff data.
+
+
+
+ Flushes and closes the stream the image has been saved to in TIFF format.
+
+ The tiff data.
+
+
+
+ Contains information about image size and resolution.
+
+
+
+
+ Creates zero width and height object, but with 96 dpi resolution.
+
+ return empty size
+
+
+
+ Creates an image size object when you know resolution.
+ But you still can pass resolution zero, it will default to 96 dpi.
+
+ Pixels value.
+ Pixels value.
+ DPI value.
+ DPI value.
+ returns image size
+
+
+
+ Creates an image size object when you know resolution.
+ But you still can pass resolution zero, it will default to 96 dpi.
+
+ Pixels value.
+ Pixels value.
+ Pixels value.
+ Pixels value.
+ DPI value.
+ DPI value.
+ returns image size
+
+
+
+ Creates an image size object when you know physical size (in EMUs).
+
+ Pixels value.
+ Pixels value.
+ Pixels value.
+ Pixels value.
+ EMUs value.
+ EMUs value.
+ returns image size
+
+
+
+ Left bound of the image, pixels. Normally used for metafiles only.
+
+
+
+
+ Top bound of the image, pixels. Normally used for metafiles only.
+
+
+
+
+ Right bound of the image, pixels. Normally used for metafiles only.
+
+
+
+
+ Bottom bound of the image, pixels. Normally used for metafiles only.
+
+
+
+
+ Width of the image in pixels.
+
+
+
+
+ Height of the image in pixels.
+
+
+
+
+ Horizontal resolution in DPI.
+
+
+
+
+ Vertical resolution in DPI.
+
+
+
+
+ Returns true if the resolution was not specified in the image.
+
+ We never returns zero resolution from and
+ to simplify mathematical calculations based on them for the clients, we default to 96 dpi.
+ But sometimes it is important to know if the resolution was actually specified or not in the image.
+
+
+
+
+ Width of the image in points. 1 point is 1/72 inch.
+
+
+
+
+ Height of the image in points. 1 point is 1/72 inch.
+
+
+
+
+ Gets width of the metafile in EMUs.
+
+
+
+
+ Gets height of the metafile in EMUs.
+
+
+
+
+ Gets the width twips.
+
+
+
+
+ Gets the height twips.
+
+
+
+
+ Gets the size.
+
+
+
+
+ Specifies the type (format) of an image.
+
+
+
+
+ An unknown image type.
+
+
+
+
+ Windows Enhanced Metafile.
+
+
+
+
+ Windows Metafile.
+
+
+
+
+ Macintosh PICT.
+
+
+
+
+ JPEG JFIF.
+
+
+
+
+ Portable Network Graphics.
+
+
+
+
+ Windows Bitmap.
+
+
+
+
+ Gif image type.
+
+
+
+
+ Tiff image type.
+
+
+
+
+ Utility functions to deal with images.
+
+
+
+
+ This is the default resolution for images we create.
+ We should specify it on all bitmaps we create because new bitmaps
+ default to the current screen resolution.
+
+
+
+
+ Resolution for bitmap images created from metafiles.
+
+
+
+
+ Gets the type of the image.
+
+ The image data.
+ Returns image type
+
+
+
+ Images the type to string.
+
+ Type of the image.
+ Returns image type
+
+
+
+ Pathes the type of to image.
+
+ The file path.
+
+ Returns image type
+
+
+
+
+ Gets the image size and resolution without invoking GDI+.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Gets the image size and resolution without invoking GDI+.
+
+ The image bytes.
+ Type of the image.
+ Returns image size
+
+
+
+ Documentation for the format is in Aspose.Words\Doc.
+
+ The image data.
+
+ true if the specified data is tiff; otherwise, false.
+
+
+
+
+ Documentation for the format is in Aspose.Words\Doc.
+ Will detect Jfif and Exif files as jpeg.
+
+ The image data.
+
+ true if the specified data is JPEG; otherwise, false.
+
+
+
+
+ http://www.libpng.org/pub/png/spec/iso/index-object.html
+
+ The file data.
+
+ true if the specified data is PNG; otherwise, false.
+
+
+
+
+ Documentation for the format is in Aspose.Words\Doc.
+ Also here is a good description of OS/2 BMP headers:
+ http://www.fileformat.info/format/os2bmp/egff.htm
+
+ The file data.
+
+ true if the specified data is BMP; otherwise, false.
+
+
+ Here are several supported headers. (Are they going to invent any more?)
+ BITMAPINFOHEADER - 0x28
+ BITMAPV4HEADER - 0x6C
+ BITMAPV5HEADER - 0x7C
+ OS/2 1.x BMP header - 0x0C
+ OS/2 2.x BMP header - 0xF0 (? - saw in our docs)
+
+
+
+
+ Documentation for the format is in Aspose.Words\Doc.
+
+ The image data.
+
+ true if the specified data is GIF; otherwise, false.
+
+
+
+
+ http://www.fileformat.info/format/macpict/
+
+ The image data.
+
+ true if the specified data is pict; otherwise, false.
+
+
+
+
+ Determines whether the specified data is dib.
+
+ The image data.
+
+ true if the specified data is dib; otherwise, false.
+
+
+
+
+ Returns true if this image is a non-placeable WML.
+ See X:\Aspose\Aspose.Words\Doc\Specs\Wmf\wmf.htm
+
+ The image bytes.
+
+ true if [is standard metafile] [the specified image bytes]; otherwise, false.
+
+
+
+
+ Returns true if this image is a placeable WMF.
+
+ The image bytes.
+
+ true if [is placeable metafile] [the specified image bytes]; otherwise, false.
+
+
+
+
+ Returns true if the image is a placeable or non-placeable WMF metafile.
+
+ The image bytes.
+
+ true if the specified image bytes is WMF; otherwise, false.
+
+
+
+
+ Returns true if the image is a EMF metafile.
+
+ The image bytes.
+
+ true if the specified image bytes is EMF; otherwise, false.
+
+
+
+
+ Returns true if the image is a WMF or EMF metafile.
+
+ Type of the image.
+
+ true if the specified image type is metafile; otherwise, false.
+
+
+
+
+ Returns true if the image is a WMF or EMF metafile.
+
+ The image bytes.
+
+ true if the specified image bytes is metafile; otherwise, false.
+
+
+
+
+ Gets the type of the EMF plus.
+
+ The image bytes.
+ Returns image type
+
+
+
+ Detects the type of a metafile contained in the specified byte array.
+
+ The image bytes.
+ Returns image type
+
+
+
+ Detects the type of a metafile contained in the specified stream starting at position 0.
+
+ The stream.
+ Returns image type
+
+
+
+ Reads a DIB-bitmap from a reader into a byte array stream and prepends it with a BMP header.
+
+ The reader.
+ Length of the dib.
+ Returns bmp header
+
+
+
+ Reads a DIB-bitmap from a reader into a byte array stream and prepends it with a BMP header.
+ This is differ from previous in fact of analyzing header length
+ RK This was created by AL and mostly duplicates my code above. Needs refactoring.
+
+ The reader.
+ Length of the header.
+ Length of the BMP.
+ Returns bmp header
+
+
+
+ DDB - device dependent bitmaps is an old Windows bitmap format.
+ They sometimes occur in RTF etc. They consist of raw scan data and some fields.
+ http://msdn2.microsoft.com/en-us/library/ms532298.aspx
+ This method converts a DDB into a BMP.
+ Assumes 1 plane and 1 bit per pixel.
+
+ The width.
+ The height.
+ The pixels per meter X.
+ The pixels per meter Y.
+ The planes.
+ The bits per pixel.
+ The DDB width data.
+ The DDB data.
+ Returns image buffer
+
+
+
+ Returns the size of a BMP image in twips. SPEED This method does not use the Image object to get the size.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Returns the size of a GIF image in twips. SPEED This method does not use the Image object to get the size.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Returns the size of a PNG image in twips. SPEED This method does not use the Image object to get the size.
+ http://www.libpng.org/pub/png/spec/iso/index-object.html
+
+ The image bytes.
+ Returns image size
+
+
+
+ Returns the size of a JPEG (including JFIF and EXIF) image in twips.
+ SPEED This method does not use the Image object to get the size.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Returns the size of a TIFF (including IBM-PC and Macintosh byteorder) image.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Gets the size of the WMF.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Gets the size of the EMF.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Gets the size of the pict.
+
+ The image bytes.
+ Returns image size
+
+
+
+ Puts a placeable WMF header before the image bytes.
+ Use this method if you know the values that must go into the header.
+
+ Must be bytes of a WMF file without a placeable header.
+ Contains image size info. It is used to create the placeable header.
+ Returns wmf header
+
+
+
+ Removes the WMF placeable header from the image bytes.
+ Does nothing if the image is not a WMF file with a placeable header.
+
+ Must be bytes of a WMF file with a placeable header.
+ Returns wmf header
+
+
+
+ Converts a BMP image to wmf without involving GDI+.
+
+ The BMP bytes.
+ Returns wmf image
+
+
+
+ Returns an empty metafile with window extents set to the specified values.
+
+ The width.
+ The height.
+ Returns empty wmf image
+
+
+
+ Converts an ApsImage into a bitmap and saves it to a byte array.
+
+ The image bytes.
+
+ Bitmap as a bytes array.
+
+
+
+
+ Converts a metafile as a byte array into a bitmap and saves it to a byte array.
+
+ Metafile bytes.
+ Metafile resolution.
+
+ Bitmap as a bytes array.
+
+
+
+
+ Creates Graphics object from an image.
+ It can also prepare the most suitable/stable options if placed here.
+
+ The image.
+ Returns graphicks
+
+
+
+ Returns true if creating a bitmap of this size is likely to be too big for the system.
+ If a bitmap is too big, .NET can fail with with argument exception or out of memory exception.
+ I've seen a problem where .NET fails to create a bitmap of 29Mpixels. I managed .NET to work with 18Mpixels without failing on my machine.
+ So let's just set a hardcoded limit for approx 20Mpixels. You can use this method to check before creating or processing bitmaps.
+
+ The width.
+ The height.
+
+ true if [is bitmap too big for system] [the specified width]; otherwise, false.
+
+
+
+
+ Specifies what type of compression to apply when saving pages to the TIFF format.
+
+
+
+
+ Specifies no compression.
+
+
+
+
+ Specifies the RLE compression scheme.
+
+
+
+
+ Specifies the LZW compression scheme.
+
+
+
+
+ Specifies the CCITT3 compression scheme.
+
+
+
+
+ Specifies the CCITT4 compression scheme.
+
+
+
+
+ Specifies the Jpeg compression scheme.
+
+
+
+
+ Specifies the PackBits compression scheme.
+
+
+
+
+ This structure is used to store a temporary TIFF data between method calls when saving a multipage TIFF.
+
+
+
+
+ Returns the first frame of a multipage TIFF.
+
+
+
+
+ Returns TIFF compression.
+
+
+
+
+ Returns TIFF encoding parameters.
+
+
+
+
+ Class is used to read data from TIFF image file directory (IFD).
+ It helps to read TIFF resolution and check TIFF conformance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image bytes.
+
+
+
+ Initializes a new instance of the class.
+
+ The reader.
+
+
+
+ Documentation for the format is in Aspose.Words\Doc.
+
+ The file data.
+
+ true if the specified data is tiff; otherwise, false.
+
+
+
+
+ Returns Tiff image width. If width is 0, returns default value (100).
+
+
+ The width of the image.
+
+
+
+
+ Returns Tiff image height. If height is 0, returns default value (100).
+
+
+ The height of the image.
+
+
+
+
+ Returns Tiff image X resolution.
+
+
+
+
+ Returns Tiff image Y resolution.
+
+
+
+
+ Returns true if TIFF image conforms XPS specification and can be inserted into XPS document as is.
+
+
+ true if this instance is conform XPS specification; otherwise, false.
+
+
+
+
+ The set of inks used in a separated (PhotometricInterpretation=5 (Cmyk)) image.
+
+
+
+
+ The order of the components is cyan, magenta, yellow, black (default).
+
+
+
+
+ Not Cmyk component.
+
+
+
+
+ Indicates the color space of the image.
+
+
+
+
+ For bilevel and grayscale images: 0 is imaged as white.
+
+
+
+
+ For bilevel and grayscale images: 0 is imaged as black.
+
+
+
+
+ Defines a Red-Green-Blue color map for RGB images.
+
+
+
+
+ Defines a Red-Green-Blue color map for palette color images.
+
+
+
+
+ Transparency Mask.
+
+
+
+
+ Separated - usually CMYK.
+
+
+
+
+ Indicates that the image data is in the YCbCr color space.
+
+
+
+
+ Indicates that the image data is in the Cielab color space.
+
+
+
+
+ This value cannot be use in TIFF, it is used to specify default value while reading.
+ This is used to indicate if this field is specified.
+
+
+
+
+ Specifies how the components of each pixel are stored.
+
+
+
+
+ Chunky format. The component values for each pixel are stored contiguously.
+ The order of the components within the pixel is specified by PhotometricInterpretation.
+
+
+
+
+ Planar format. The components are stored in separate "component planes."
+
+
+
+
+ Specifies what unit of measurement is used for XResolution and YResolution.
+
+
+
+
+ No absolute unit of measurement. Used for images that may have a non-square aspect ratio, but no meaningful absolute dimensions.
+
+
+
+
+ Inch resolution.
+
+
+
+
+ Centimeter.
+
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Creates a bitmap of the specified width and height in pixels.
+ The resolution is 96dpi.
+ The color model is 32bpp ARGB.
+
+ The width.
+ The height.
+
+
+
+ Creates a bitmap of the specified width and height in pixels and resolution in the 32bpp ARGB pixel format and color model.
+
+ The width.
+ The height.
+ The h res.
+ The v res.
+
+
+
+ Initializes a new instance of the class.
+
+ The width.
+ The height.
+ The h res.
+ The v res.
+ The pixel format.
+
+
+
+ Loads a bitmap from image bytes.
+ What formats are to be supported? Need to list to make sure it works both in .NET and JAVA.
+
+ The image bytes.
+
+
+
+ This should create an image that has its its color map and chroma key set correctly from the brush.
+
+ The brush.
+
+
+
+ This implementation is a streamlined version of the FxCop rule
+ http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Closes this instance.
+
+
+
+
+ Returns the color model that will be used when is called.
+ The parsing color model is normally the same as the underlying bitmap color model.
+ But it might be different. For example on .NET if we encounter a 16bit gray scale image,
+ then we will request its data as 24bit RGB for pixel parsing.
+
+ returns color model
+
+
+
+ Gets the native object that this wrapper encapsulates. Should be the native type in each platform implementation.
+
+ Returns native bitmap
+
+
+
+ Sets the pixel.
+
+ The x pixel.
+ The y pixel.
+ The color.
+
+
+
+ Gets the pixel.
+
+ The x pixel.
+ The y pixel.
+ Returns color
+
+
+
+ Draws this bitmap onto another bitmap. Allows to positively crop and to scale the image.
+
+ The SRC rect.
+ The DST bitmap.
+ The DST rect.
+
+
+
+ Positively crops (only making the image smaller) the image and returns the new image.
+ The new image has the same resolution as the original image.
+
+ The SRC rect.
+ Returns bitmap
+
+
+
+ Scales the specified width.
+
+ The width.
+ The height.
+ The h res.
+ The v res.
+ Returns bitmap
+
+
+
+ Gets the bounds.
+
+ Returns bounds
+
+
+
+ Saves the image.
+
+ Name of the file.
+ Type of the image.
+
+
+
+ Saves the image.
+
+ The stream.
+ Type of the image.
+
+
+
+ Saves the image.
+
+ The stream.
+ Valid range is 0-100.
+
+
+
+ Saves the PNG.
+
+ The stream.
+
+
+
+ Saves the BMP.
+
+ The stream.
+
+
+
+ Saves a single frame TIFF.
+
+ The stream.
+ The compression.
+
+
+
+ Fix rendering for certain BMP files when running on Mono.
+ Safe to call for all image bytes, only does its job when needed.
+ AM This is "hack" for libgdiplus bmp codec bug.
+ libgdiplus render certain BMP files Y-flipped and X-shifted.
+ I think that we shouldn't do it in every renderer because it need the same code and
+ will require more changes when this bug in libgdiplus will fixed and this workaround should be removed.
+ Do Y-Flip and X-shift for certain 16bpp BMP formats which determined by file header information.
+
+ Original raw image bytes
+
+ Fixed raw image bytes
+
+
+
+
+ Gets the color of a bitmap with indexed colors.
+
+ returns colors
+
+
+
+ Extracts all the pixel color values into byte arrays and returns in a huge memory object.
+
+ If true, causes the image pixels to be returned as 1bpp black and white.
+ Has effect only when not converting to 1bpp.
+ Returns pixels
+
+
+
+ Loads a native image from stream.
+
+ The stream.
+ Returns image
+
+
+
+ Saves an image into a stream in a format that will satisfy MS Word 97.
+ In .NET the image parameter is a GDI+ Image, but in Java the image parameter is BufferedImage.
+ This is a static method (not an instance method) because in .NET it accepts a parameter
+ that can either be a metafile or bitmap and saves it accordingly.
+
+ The image.
+ The stream.
+
+
+
+ Converts the image to the Monochrome bitmap
+
+
+
+
+ Converts the image to the opacity mask.
+
+ The chroma key.
+
+ All pixels that lie inside the chroma key region will be transparent.
+ All other pixels will be opaque.
+
+
+
+
+ Applies the following color settings to an image if needed: black and white, grayscale, brightness, contrast.
+
+ The color settings.
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Returns the resolution that is resilient to Windows desktop resolution.
+
+
+
+
+ Returns the resolution that is resilient to Windows desktop resolution.
+
+
+
+
+ Returns the original format of the image.
+
+
+ The type of the image.
+
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Do not forget to dispose this object.
+
+ The brush.
+ returns brush
+
+
+
+ Port this to Java manually.
+
+
+
+
+ Creates the case insensitive hashtable.
+
+ Returns case insensitive hashtable
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Toes the color of the native.
+
+ Color of the dr.
+ Returns color
+
+
+
+ To the native colors.
+
+ The dr colors.
+
+
+
+
+ Froms the color of the native.
+
+ Color of the native.
+ Returns color
+
+
+
+ This class is to be manually ported to Java.
+
+
+
+
+ Returns a hash code for this instance.
+
+ The value.
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Creates native font from instance.
+
+ The font object.
+ The private font cache.
+ Returns font
+
+
+
+ Creates a GDI+ font.
+ If the font cannot be found, returns Times New Roman.
+ If the style cannot be found, selects the most suitable.
+ Throws only if really cannot proceed (e.g. no fonts are installed at all).
+
+ Name of the requested.
+ The size in points.
+ The requested style.
+ Returns font
+
+
+
+ FOR MANUAL PORTING
+
+ This class provides method to format numbers ands date time values into strings
+ and also to parse them back into values.
+
+
+
+
+ Formats a DateTime value to XML string and adds the UTC "Z" suffix.
+
+ The value.
+ Returns formated date
+
+
+
+ This is currently used by ODT export. Does not write any timezone suffix.
+
+ The value.
+ Returns formated date
+
+
+
+ Dates the time to str_yyyy M MDD H HMMSS Z.
+
+ The value.
+ Returns formated date
+
+
+
+ Parses an XML string into a date time value and returns it in UTC.
+ If the string represents and invalid date, returns .
+
+ The value.
+ Returns formated date
+
+
+
+ Formats date and time according to MIME header format.
+ RK This is according to http://www.faqs.org/rfcs/rfc2822.html
+
+ The value.
+ Returns formated date
+
+
+
+ Parses the date time RFC2822.
+
+ The value.
+ Returns formated date
+
+
+
+ Formats an integer value to XML string.
+
+ The value.
+ Returns formated date
+
+
+
+ Parses an XML string into an integer value.
+ FIX 6000 A document has a value "320.0" in an integer property. This is not valid according to
+ the schema but MS Word reads it okay. We used to parse integer strictly and it threw.
+ Fixed by parsing doubles and casting to int. This is not best, but okay for now.
+ As a result of the fix returns 0 if cannot parse the string. This is not the best solution of course, but okay for now.
+
+ The value.
+ Returns formated date
+
+
+
+ Parses a string into a double value.
+ Returns 0 if cannot parse the string. This is not the best solution of course, but okay for now.
+ Allows leading sign.
+ Allows leading and trailing spaces.
+ Allows "." as a decimal point.
+ Allows exponent.
+ Yes, we do get values with exponents, for example in custom document properties.
+
+ The value,
+ Returns parsed value
+
+
+
+ Tries to parse a double with the invariant culture. Returns NaN if cannot parse.
+ Allows leading sign
+ Allows leading and trailing spaces.
+ Allows "." as a decimal point.
+ Allows exponent.
+
+ The string.
+ Returns parsed value
+
+
+
+ Tries to parse a double with the current culture. Returns NaN if cannot parse.
+ Allows leading sign.
+ Allows leading and trailing spaces.
+ Allows decimal point specified by the current culture.
+ Allows exponent.
+
+ The string.
+ Returns parsed value
+
+
+
+ Returns true if the string represents a positive integer number or zero.
+
+ The value.
+
+ true if [is positive integer or zero] [the specified value]; otherwise, false.
+
+
+
+
+ Parses an integer using the invariant culture. Returns Int.MinValue if cannot parse.
+ Allows leading sign.
+ Allows leading and trailing spaces.
+
+ The string.
+ Returns parsed value
+
+
+
+ Parses a hexadecimal integer using the invariant culture.
+ Allows leading and trailing spaces.
+ Allows leading 0x or 0X.
+
+ The string.
+ The result.
+ Returns parsed value
+
+
+
+ Try get int from the longest portion of string. Returns Int.MinValue if cannot parse.
+
+ The string.
+ Returns parsed value
+
+
+
+ Uses the current culture for parsing. Returns NaN if cannot parse.
+ Allows currency symbol.
+ Allows decimal point.
+ Allows leading and trailing sign.
+ Allows leading and trailing whitespace.
+ Allows thousands separator.
+ Allows parenthesis.
+
+ The string.
+ Returns parsed value
+
+
+
+ Returns if cannot parse.
+
+ The string.
+ Returns parsed value
+
+
+
+ Parses a string into an integer value.
+ RK This throws when cannot parse. This is inconsistent with .
+ Leading sign is allowed.
+ Leading space is allowed.
+ Trailing space is allowed.
+
+ The value,
+ Returns parsed value
+
+
+
+ Parses a string storing int64 value.
+ See for additional concerns.
+
+ The value,
+ Returns parsed value
+
+
+
+ Parses a hexadecimal string into an integer value.
+ RK This throws when cannot parse. This is inconsistent with .
+ Leading space is allowed.
+ Trailing space is allowed.
+ 0x prefix is not allowed.
+
+ The value,
+ Returns parsed value
+
+
+
+ Try parses a hex string into an integer value.
+ on error return int.MinValue
+
+ The string.
+ Returns parsed value
+
+
+
+ Parses a string into a boolean value.
+ Allows leading and trailing space.
+ Recognized only case-insensitive "true" and "false".
+
+ The value,
+ Returns parsed value
+
+
+
+ More info see http://demos.aspose.com:8089/display/org/Do+NOT+use+bool.ToString%28%29
+
+ if set to true [val].
+ Returns parsed value
+
+
+
+ Ints to STR.
+
+ The value,
+ Returns parsed value
+
+
+
+ Ints to STR.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "01" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "001" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "0001" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "0123456789" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Ints to STR no zero.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a hex string string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a hex string string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "1A" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "1a" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "123A" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "12345A" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Returns a "1234567A" string.
+
+ The value,
+ Returns parsed value
+
+
+
+ Formats a double value into a string using an invariant culture.
+ There is a leading zero if needed.
+ Fractions are only displayed if needed.
+ On .NET precision is limit to 15 digits after which rounding occurs.
+ On .NET returns the number in scientific notation if large number or less than E-5.
+ On Java it seems the precision is greater and numbers are formatted fully.
+
+ The value.
+ Returns parsed value
+
+
+
+ This is used by VML Util.
+ Add more info about this or refactor later.
+
+ The value,
+ Returns parsed value
+
+
+
+ Formats a value into a string using invariant culture and and 0.## format.
+
+ The value,
+ Returns parsed value
+
+
+
+ Formats a value into a string using invariant culture and and 0.######### format.
+
+ The value,
+ Returns parsed value
+
+
+
+ Outputs all digits of a value. Never outputs in the scientific notation.
+ Do not use method in PDF renderer directly, use PdfWriter.FloatToStr instead.
+
+ The value,
+ Returns parsed value
+
+
+
+ Formats a value into a string using invariant culture and and 0.######### format.
+
+ The value,
+ Returns parsed value
+
+
+
+ Used when we need to format an MS Word field value and the explicit format string is not given.
+ We format using a set of flags that we've gathered from the original field value.
+
+ The value.
+ Specifies whether to format as a currency or as a number.
+ This parameter only has effect when isCurrence is false.
+ Returns parsed value
+
+
+
+ Used when we need to format a field value and we are given a format string in the current (well in some local) culture.
+ This will only work correctly if the culture of the pattern matches the current thread culture and this is by design at the moment.
+
+ The value.
+ The localized format.
+ if set to true [is multiply percent].
+ Returns parsed value
+
+
+
+ Gets the short date pattern current.
+
+ Returns pattern
+
+
+
+ Gets the short time pattern current.
+
+ Returns pattern
+
+
+
+ Gets the decimal separator current.
+
+ Returns pattern
+
+
+
+ Gets the number group separator current.
+
+ Returns pattern
+
+
+
+ Gets the currency symbol current.
+
+ Returns pattern
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Mostly use this ctor.
+
+ The pal bitmap.
+
+
+
+ This ctor is only used in .NET when rendering to a Metafile (we cannot put Metafile into PalBitmap).
+
+ The image.
+
+
+
+ This implementation is a streamlined version of the FxCop rule
+ http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Closes this instance.
+
+
+
+
+ Sets TextRenderingHint.AntiAliasGridFit which results in the best looking text.
+ Although the layout is correct like in MS Word, the actual text outputted
+ to the screen can be shorter due to grid fitting.
+ If you want text to be outputted exactly, use TextRenderingHint.AntiAlias,
+ but it will look a bit smudged.
+ We must have this option set to an explicit value for unit tests.
+ If we leave it system default it will use current user settings and could
+ result in different output on different machines and tests will fail.
+
+
+
+
+ Enables the graphics anti aliasing.
+
+
+
+
+ Enables the text anti aliasing.
+
+
+
+
+ Do NOT use this as a default because on Java it is VERY SLOW. If you want this to be available to the user, then it needs to be made an option.
+
+
+
+
+ Scales the specified scale.
+
+ The scale.
+
+
+
+ Fills the rectangle.
+
+ The color.
+ The x value.
+ The y value.
+ The width value.
+ The height value.
+
+
+
+ Gets the native graphics.
+
+ Returns graphicks
+
+
+
+ Port this class to Java manually.
+
+
+
+
+ Returns a GDI+ matrix. Note that the caller must dispose the returned value.
+
+ The dr matrix.
+ returns matrix
+
+
+
+ Froms the native matrix.
+
+ The matrix.
+ returns matrix
+
+
+
+ Returns raw hex representation of the float values of the matrix - use this when comparing small differences with Java.
+
+ The dr matrix.
+ returns string representation
+
+
+
+ Returns raw hex representation of the float values of the point - use this when comparing small differences with Java.
+
+ The point.
+ returns string representation
+
+
+
+ Returns raw hex representation of the float value - use this when comparing small differences with Java.
+
+ The value.
+ returns string representation
+
+
+
+ Returns raw hex representation of the double value - use this when comparing small differences with Java.
+
+ The value.
+ returns string representation
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Toes the native pen.
+
+ The dr pen.
+ Returns pen
+
+
+
+ Cache for loading private fonts. Used in class.
+ Port this class manually to Java.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Gets a native font family for the specified private font.
+ Loads and caches it as a private font family.
+ If family cannot be loaded, returns null.
+
+ The DR font.
+ Returns font family
+
+
+
+ To the hexadecimal.
+
+ The bytes.
+ Hash code in string
+
+
+
+ Port this class manually to Java.
+
+ Provides platform specific implementations for working with drawing regions.
+
+
+
+
+ Read region from the reader by parsing data directly as GDI+ sometimes throws exceptions
+ when reading some regions in EMF documents and we don't like that.
+
+ The reader.
+ Returns region
+
+
+
+ Converts the specified drawing region into an APS path.
+ The points in the region are converted to the APS path using the identity matrix.
+
+ The region.
+ Returns path
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Compares strings using case sensitive compare and returns true if they are same.
+ Use this method because it works for .NET 2.0 and .NET 1.1 and Java.
+ RK I think this should be renamed to RegionMatches (this is the name used in Java String).
+ RK There is one possible problem here. .NET is likely using culture-sensitive comparison,
+ whereas Java is using ordinal comparison. So we should decide whether this method should perform
+ culture-sensitive or ordinal comparison and make it consistent on .NET and Java.
+
+ The A string.
+ The index A.
+ The b string.
+ The index B.
+ The length.
+ returns true if they are same
+
+
+
+ Compares strings using case insensitive compare and returns true if they are same.
+ Use this method because it works for .NET 2.0 and .NET 1.1 and Java.
+ RK See a comment in the above method about culture-sensitive comparison vs ordinal comparison.
+
+ The A string.
+ The b string.
+ returns true if they are same
+
+
+
+ Compares strings using CompareOptions.StringSort.
+
+ The A string.
+ The b string.
+ returns 0 if they are same
+
+ MS Word seems to use this method.
+ The default method causes different results, WORDSNET-4640 is an example.
+
+
+
+
+ This class is to be ported manually to Java.
+
+
+
+
+ Returns a resource stream in the calling assembly or throws if the resource cannot be found.
+ The resource must be defined in the calling assembly.
+
+ Full resource name.
+ Returns a resource stream
+
+
+
+ Opens a stream from a URI or from a path. If it is a URI with a scheme,
+ then the content is copied into a memory stream and the memory stream is returned.
+
+ The href path.
+ Returns a resource stream
+
+
+
+ Returns the operating system type in a way that is suitable for our purposes.
+
+ Returns a platform
+
+
+
+ Gets all font file names registered in Windows and stores them in the specified hashtable.
+ The key and the value is the full file name of the font.
+
+ The file names.
+
+
+
+ Gets the windows fonts folder.
+
+ Returns font folder
+
+
+
+ This just returns some tick count in milliseconds. It can be current time or the time since the system started.
+
+ returns tick count in millisecond
+
+
+
+ Sets the culture for the current thread e.g. "ru-RU".
+
+ The culture.
+
+
+
+ Gets the the culture name of the current thread culture in the "language2-country2" format.
+
+ returns culture name
+
+
+
+ Sets the "standard development" culture, which is "en-nz".
+
+
+
+
+ Returns the culture that was selected when the program started.
+
+
+
+
+ ReadTextFromFile method .NET 1.0 backward compatibility
+
+ The file path.
+
+ Returns file content
+
+
+
+
+ This class is used to store a temporary TIFF data between method calls when saving a multipage TIFF.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Saves an image in TIFF format to a stream as the first frame.
+
+ The bitmap.
+ The stream.
+ The compression.
+ if set to true [is multiframe].
+
+
+
+ Saves an image in TIFF format to a stream as an intermediate frame.
+
+ The bitmap.
+
+
+
+ Finishes saving of a multiframe TIFF image.
+
+
+
+
+ This class is to be ported manually to Java.
+
+
+
+
+ Creates and returns a .
+ This has to be abstracted because we need some special code for creating on Mono,
+ but we don't have XmlTextWriter(StreamWriter) ctor on Java.
+
+ The stream.
+ The encoding.
+ Returns xml writer
+
+
+
+ Creates the XML text reader.
+
+ The stream.
+ Returns xml reader
+
+
+
+ Creates and returns a for reading XML from a string.
+ The string can be a complete document or a fragment.
+ If the string is a fragment, you can specify optional hashtable of prefixes to namespaces mapping.
+
+ The XML content.
+ The namespaces.
+ Returns xml reader
+
+
+
+ Loads an XML string into a .
+
+ The XML content.
+ if set to true [preserve whitespace].
+ Returns xml document
+
+
+
+ Loads a stream into a .
+
+ The stream.
+ Returns xml reader
+
+
+
+ Checks the XML well formed.
+
+ Name of the file.
+
+
+
+ Saves the XML.
+
+ The xml document.
+ The stream.
+
+
+
+ Gets the outer XML.
+
+ The xml document.
+ Returns outer xml
+
+
+
+ Selects nodes using an XPath query.
+ Namespaces is optional (can be null) and contains prefixes mapped to namespaces.
+
+ The element.
+ The x path.
+ The namespaces.
+ Returns xml nodes
+
+
+
+ Defines the method to be used for inflation and deflation.
+
+
+
+
+ Deflate zip method
+
+
+
+
+ Zlib zip method
+
+
+
+
+ Utility functions that simplify work with the zip library.
+
+
+
+
+ Decompresses data that was compressed using the Deflate or Zlib compression.
+
+ The compressed data.
+ The size of the data when decompressed. If you don't know, just pass zero.
+ Deflation method that was used to deflate the data
+ supposed to be inflated. One of the
+
+ Decompressed data.
+
+
+
+
+ Decompresses data that was compressed using the Deflate or Zlib compression.
+
+ The compressed data.
+ The size of the data when decompressed. If you don't know, just pass zero.
+ Deflation method that was used to deflate the data
+ supposed to be inflated. One of the
+
+ Decompressed data.
+
+
+
+
+ Compresses a byte array using the Deflate or Zlib compression.
+
+ The original data.
+ Deflation method to be used. One of the
+
+ The compressed data.
+
+
+
+
+ Compresses a stream using the Deflate, Zlib or GZip compression.
+ Suitable, for example, for compressing EMF and WMF to WMZ.
+
+ The original data.
+ Deflation method to be used. One of the
+
+ The compressed data.
+
+
+
+
+ Compresses a stream into a memory stream.
+ The destination memory stream can be at any position.
+
+ The original data.
+ Where the compressed is written. Written at the current position.
+ Deflation method to be used. One of the
+
+ The length of the compressed data.
+
+
+
+
+ Deflates the specified bytes.
+
+ The bytes.
+ The offset.
+ The count.
+ The DST stream.
+ The method.
+ Returns deflate result
+
+
+
+ Deflates the specified source stream.
+
+ The source stream.
+ The offset.
+ The count.
+ The DST stream.
+ The method.
+ Token for interruption of operation
+
+
+
+
+ The APS arc
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bounds.
+ The start angle.
+ The sweep angle.
+
+
+
+ Initializes an ellipse.
+
+ The bounds.
+
+
+
+ Returns the starting point of the arc.
+
+ Returns start point
+
+
+
+ Returns the ending point of the arc.
+
+ Returns the ending point of the arc.
+
+
+
+ Returns an array of cubic Bezier curves which represents the arc.
+
+ Returns an array of cubic Bezier curves which represents the arc.
+
+
+
+ Specifies the top left point of the bounding rectangle of the ellipse.
+
+
+ The location.
+
+
+
+
+ Specifies the size of the bounding rectangle of the ellipse.
+
+
+ The size.
+
+
+
+
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ In MS XPS arc is defined using RotationAngle, IsLargeArc and SweepDirection.
+ I have not sorted them out yet, therefore I'm using .NET Graphics friendly fields.
+
+
+ The start angle.
+
+
+
+
+ Angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+ The sweep angle.
+
+
+
+
+ Specifies half the x- and y-radius of the elliptical arc as an X,Y pair.
+
+
+ The size of the half.
+
+
+
+
+ Returns the central point of the arc's bounds.
+
+
+
+
+ Represents arc builder
+
+
+
+
+ Builds arc by a bounding box and two radials
+ conducted from the center of the bounding box to
+ defined points. It builds the shortest arc.
+
+ The bounding box.
+ The end point of first radial.
+ The end point of seconf radial.
+ Returns builded arc
+
+
+
+ Builds arc by a bounding box and two radials
+ conducted from the center of the bounding box to
+ defined points.
+
+ The bounding box.
+ The end point of first radial.
+ The end point of seconf radial.
+ The arc rotation direction.
+ Returns builded arc
+
+
+
+ Represents enumeration of the rotation direction
+
+
+
+
+ Clockwise direction
+
+
+
+
+ Counterclockwise direction
+
+
+
+
+ Shortest direction
+
+
+
+
+ Represents a cubic Bezier curve.
+
+
+
+
+ Creates from quadratic Bezier curve.
+
+ The quad p0.
+ The quad p1.
+ The quad p2.
+
+
+
+ Approximates a cubic Bezier curve into quadratic curves.
+ If the cubic curve was created from quadratic, returns the original curve.
+
+ Gets bezier curve value
+
+
+
+ Gets or sets the start point.
+
+
+ The start point.
+
+
+
+
+ Gets or sets the control point1.
+
+
+ The control point1.
+
+
+
+
+ Gets or sets the control point2.
+
+
+ The control point2.
+
+
+
+
+ Gets or sets the end point.
+
+
+ The end point.
+
+
+
+
+ Calculates a bounding box of APS objects.
+
+
+
+
+ Default implementation of a visitor that visits elements of the fixed document model.
+
+
+
+
+ Visits the page start.
+
+ The aps page.
+
+
+
+ Visits the page end.
+
+ The aps page.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Visits the canvas end.
+
+ The canvas.
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path end.
+
+ The aps path.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image.
+
+
+
+ Visits the bookmark.
+
+ The bookmark.
+
+
+
+ Visits the outline item.
+
+ The outline item.
+
+
+
+ Visits the form field text.
+
+ The field.
+
+
+
+ Visits the form field checkbox.
+
+ The field.
+
+
+
+ Visits the form combo box.
+
+ The field.
+
+
+
+ Visits the form field radio button.
+
+ The field.
+
+
+
+ Visits the form field button.
+
+ The field.
+
+
+
+ Returns False if child nodes of the group must not be visited.
+
+ The group.
+ Returns False if child nodes of the group must not be visited.
+
+
+
+ Ends the visit group.
+
+ The group.
+
+
+
+ Visits the page start.
+
+ The aps page.
+
+
+
+ Visits the page end.
+
+ The aps page.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Visits the canvas end.
+
+ The canvas.
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path end.
+
+ The aps path.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image.
+
+
+
+ Visits the bookmark.
+
+ The bookmark.
+
+
+
+ Visits the outline item.
+
+ The outline item.
+
+
+
+ Visits the form field text.
+
+ The field.
+
+
+
+ Visits the form field checkbox.
+
+ The field.
+
+
+
+ Visits the form combo box.
+
+ The field.
+
+
+
+ Visits the form field radio button.
+
+ The field.
+
+
+
+ Visits the form field button.
+
+ The field.
+
+
+
+ Returns False if child nodes of the group must not be visited.
+
+ The group.
+
+ Returns False if child nodes of the group must not be visited.
+
+
+
+
+ Calculates the bounding box.
+
+ The aps node.
+ Returns calculated bounding box.
+
+
+
+ Represents aps button
+
+
+
+
+ Common ancestor for all text fields that are available in ApsModel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The form name.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the rotate angle.
+
+
+ The rotate angle.
+
+
+
+
+ Origin point of this field.
+
+
+ The origin.
+
+
+
+
+ Rectangle that bounds this form field.
+
+
+
+
+ Name of this Form field.
+ Can be empty string or null.
+ At the moment the document model does not guarantee uniquiness either.
+
+
+
+
+ Returns true if this field control is enabled.
+ Default is true.
+
+
+ true if this instance is enabled; otherwise, false.
+
+
+
+
+ This property can be use for saving "action" script associated with the control
+
+
+ The action.
+
+
+
+
+ This property can be used for customization of conrol represention with aid ApsCanvas childrens.
+
+
+ The custom draw.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The button name.
+ The button size.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Returns dimensions of this button field.
+
+
+ The size.
+
+
+
+
+ Allows to specify caption for this button field.
+
+
+ The caption.
+
+
+
+
+ Allows to specify default font for this button field.
+
+
+ The default font.
+
+
+
+
+ Rectangle that bounds this form field.
+
+
+
+
+ Provides utility functions that have to do with the way the specified node affects
+ graphic state of a renderer.
+
+
+
+
+ Determines whether [is affect graphics state] [the specified node].
+
+ The aps node.
+
+ true if [is affect graphics state] [the specified node]; otherwise, false.
+
+
+
+
+ Determines whether [is matrix affects graphics state] [the specified node].
+
+ The aps node.
+
+ true if [is matrix affects graphics state] [the specified node]; otherwise, false.
+
+
+
+
+ Determines whether [is clipping affects graphics state] [the specified node].
+
+ The aps node.
+
+ true if [is clipping affects graphics state] [the specified node]; otherwise, false.
+
+
+
+
+ True if PDF graphic state should be saved.
+
+ APS path to paint.
+
+ true if [is forse save PDF graphic state] [the specified path]; otherwise, false.
+
+
+
+
+ Composite layout node
+
+
+
+
+ Base class for layout-enable nodes
+
+
+
+
+ Represents Layout Node interface
+
+
+
+
+ Returs client area (without margins)
+
+
+ Client aarea rectangle
+
+
+
+
+ Move node to point
+
+ Move to point
+
+
+
+ Move node to point (x, y)
+
+ X-coordinate
+ Y-coordinate
+
+
+
+ Move node down
+
+ Vertical offset
+
+
+
+ Moves the left.
+
+ The delta x.
+
+
+
+ Get APS node
+
+ Returns APS node
+
+
+
+ Place Layout node on APS page
+
+ The APS page
+ Node position
+
+
+
+ Place Layout node on APS page
+
+ The APS page
+ X-coordinate
+ Y-coordinate
+
+
+
+ Location of the node
+
+
+ The location.
+
+
+
+
+ Size of the node
+
+
+
+
+ Margin of the node
+
+
+ The margin.
+
+
+
+
+ Get child node
+
+ Index of the node
+
+ Child node
+
+
+
+
+ Append new node to children
+
+ The layout node.
+ Returns the node
+
+
+
+ Remove child node
+
+ Node to remove
+
+
+
+ Insert node to position
+
+ The Index.
+ The new node.
+ Returns the node
+
+
+
+ Remove child node at position
+
+ Index of the node
+
+
+
+ Clear child nodes collection
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+ 2
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+ The collection was modified after the enumerator was created.
+
+ 2
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+ The collection was modified after the enumerator was created.
+
+ 2
+
+
+
+ Get APS node
+
+ Returns the aps nodes
+
+
+
+ Children count
+
+
+
+
+ Gets the current element in the collection.
+
+
+ The current element in the collection.
+
+ The enumerator is positioned before the first element of the collection or after the last element.
+
+ 2
+
+
+
+ Represents control node
+
+
+
+
+ Represents page break.
+
+
+
+
+ Compose nodes on page
+
+
+
+
+ Set document creator
+
+ Nodes holder
+
+
+
+ Add node on page
+
+ Layout page
+ Layout node
+ Returns true if node was added
+
+
+
+ Split node to children
+
+ Node to split
+ Height of the page available.
+
+ True if node was splitted, otherwise false
+
+
+
+
+ Put the nodes into layout nodes queue from start position
+
+ Layout nodes
+
+
+
+ Create splitter depend on node type
+
+ Layout node
+ Node splitter
+
+
+
+ Document creator
+
+
+
+
+ Document creator
+
+
+
+
+ Initialize the DocumentCreator instance
+
+ Default Font
+ Default Color
+ Compose layout nodes on page
+ Incapsulate work with text - compose, special alignment
+ Default page size
+ Page margin
+
+
+
+ Set nodes factory
+
+ Nodes Factory
+
+
+
+ Get APS pages
+
+
+ Returns the aps pages
+
+
+
+
+ Create new column
+
+ The column margin.
+
+ New Column
+
+
+
+
+ Create new table
+
+ The column count.
+ The margin value.
+
+ returns new table
+
+
+
+
+ Creates table from string 2-dimension array
+
+ Table data
+ Table margin
+ Paragraph margin
+ Returns new table
+
+
+
+ Create layout page
+
+ Returns new page
+
+
+
+ Set start location for node on the page
+
+ Layout node
+ Layout page
+
+
+
+ Add page break to node queue
+
+
+
+
+ Set default text color
+
+ Text color
+
+
+
+ Set default font
+
+ The text font.
+
+
+
+ Create nodes
+
+
+
+
+ Compose nodes at page
+
+
+
+
+ Text-related functionality
+
+
+
+
+ Style processor
+
+
+
+
+ Nodes holder
+
+
+
+
+ Base visible container
+
+
+
+
+ DocumentCreator instance
+
+
+
+
+ HorizontalAlignment value
+
+
+
+
+ Width of the container
+
+
+
+
+ Create container
+
+ Container Width
+ Container Margins
+ Document Creator
+
+
+
+ Get current height of the node, includes children sizes
+
+ returns current height
+
+
+
+ Gets the height of the children.
+
+ returns children height
+
+
+
+ Gets the width of the current.
+
+ returns current width
+
+
+
+ Set alignment for all rows in column
+
+ Horizontal alignment
+
+
+
+ Set alignment for row with specified index
+
+ Index of the row
+ Horizontal alignment
+
+
+
+ Set alignment for specified node
+
+ Child node
+ Horizontal alignment
+
+
+
+ Append new node to children
+
+ The layout node.
+
+ Returns the node
+
+
+
+
+ Move node to point
+
+ Move to point
+
+
+
+ Clones the container.
+
+ returns container
+
+
+
+ Remove node from container
+
+ Node position
+
+
+
+ Get node height
+
+ Layout node
+
+ Node height
+
+
+
+
+ Insert node to position
+
+ The Index.
+ The new node.
+
+ Returns the node
+
+
+
+
+ Get APS node
+
+
+ Returns the aps nodes
+
+
+
+
+ Node style instance
+
+
+
+
+ Sets the style.
+
+ The Node style
+ if set to true [apply to children].
+
+
+
+ Set style only for the node (except children0
+
+ The style.
+
+
+
+ Size of the node
+
+
+
+
+ Location of the node
+
+
+ The location.
+
+
+
+
+ Node style
+
+
+
+
+ Represents LayoutParagraph
+
+
+
+
+ Line space value.
+
+
+
+
+ Create container
+
+ Container Width
+ Container Margins
+ Line Space
+ Document Creator
+
+
+
+ Add text to paragraph. Compose algorithm incapsulated in classes derived from TextComposer abstract class
+
+ Text string
+
+
+
+ Get current height of the node, includes children sizes
+
+ current height of the node
+
+
+
+ Append new node to children
+
+ The layout node.
+
+ Returns the node
+
+
+
+
+ Clones the container.
+
+ returns cloned container.
+
+
+
+ Get node height
+
+ Layout node
+
+ Node height
+
+
+
+
+ Set foreground color
+
+ Foreground color
+
+
+
+ Get APS node
+
+
+ Returns the aps nodes
+
+
+
+
+ Represents LayoutTable
+
+
+
+
+ Current column count.
+
+
+
+
+ Create container
+
+ Container Width
+ Container Margins
+ Column Count
+ Document Creator
+
+
+
+ Create attached to children table row
+
+
+ The table row.
+
+
+
+
+ Clones the container.
+
+ Returns container
+
+
+
+ Represents LayoutTableCell
+
+
+
+
+ Represents Column
+
+
+
+
+ Initializes a new instance of the class.
+
+ Container Width
+ Container Margins
+ Document Creator
+
+
+
+ Create paragraph attached to the column
+
+ Line space
+ Paragraph margins
+
+ Layoyt Paragraph
+
+
+
+
+ Create image attached to the column
+
+ The image.
+ Layout image margins
+
+ The layout image.
+
+
+
+
+ Clones the container.
+
+ Returns cloned container
+
+
+
+ Size of the column
+
+
+
+
+ Create container
+
+ Container Width
+ Container Margins
+ Document Creator
+
+
+
+ Represents LayoutTableRow
+
+
+
+
+ Create container
+
+ Container Width
+ Container Margins
+ Cell Count
+ Document Creator
+
+
+
+ Create table cell, added the cell to children and return it
+
+
+ Table cell
+
+
+
+
+ Append new node to children
+
+ The layout node.
+
+ Returns the node
+
+
+
+
+ Get current height of the node, includes children sizes
+
+
+ returns current height
+
+
+
+
+ Cell count.
+
+
+
+
+ Nodes Factory
+
+
+
+
+ Default font.
+
+
+
+
+ Default color.
+
+
+
+
+ Document creator
+
+
+
+
+ Create nodes factory
+
+ Default Font
+ Default Color
+ Document Creator
+
+
+
+ Create text rows in prent container
+
+ The text value.
+ Parent container
+
+ Returns text rows
+
+
+
+
+ Create Paragraph
+
+ Paragraphs margins
+ Line Space
+ Parent Container
+
+ LayoutParagraph
+
+
+
+
+ Create layout image
+
+ The image.
+ Image margins
+ Parent Container
+
+ LayoutImage
+
+
+
+
+ Create table
+
+ Column Count
+ Table margin
+ Parent Container
+
+ Returns layout table
+
+
+
+
+ Create table row
+
+ Cell Count.
+ Parent Container
+
+ The table row
+
+
+
+
+ Create table cell
+
+ Parent Container
+
+ Table cell
+
+
+
+
+ Create page
+
+ The page size.
+ The page margin.
+
+ Returns page
+
+
+
+
+ Create column
+
+ Container margins
+ Parent Container
+ returns column
+
+
+
+ Create layout image
+
+ The Image.
+ Layout image margins
+
+ returns layout image
+
+
+
+
+ Create Page break
+
+
+ Page break
+
+
+
+
+ Set default text color
+
+ Text color
+
+
+
+ Set default font
+
+ The text font
+
+
+
+ Nodes Creator
+
+
+
+
+ The queue nodes.
+
+
+
+
+ The document creator instance.
+
+
+
+
+ Create nodes holder
+
+ Document Creator
+
+
+
+ Put node in the holder
+
+ The layout node
+
+
+
+ Get node from the holder
+
+
+ Returns node.
+
+
+
+
+ Create nect page from the holder
+
+
+ Returns page.
+
+
+
+
+ Gets a value indicating whether this instance is empty.
+
+
+ true if this instance is empty; otherwise, false.
+
+
+
+
+ Base class for node splitters
+
+
+
+
+ DocumentComposer instance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc composer.
+
+
+
+ Split node.
+
+ Required height
+ Node to split
+ I split is available, the firt element will have requiredHeight. The second node is splitted parameter.
+
+
+
+ Column splitter
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc composer.
+
+
+
+ Split node.
+
+ Required height
+ Node to split
+
+ I split is available, the firt element will have requiredHeight. The second node is splitted parameter.
+
+
+
+
+ Splitter do nothing (NOP). It is used for node that can't split.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc composer.
+
+
+
+ Split node.
+
+ Required height
+ Node to split
+
+ I split is available, the firt element will have requiredHeight. The second node is splitted parameter.
+
+
+
+
+ Paragraph splitter
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc composer.
+
+
+
+ Split node.
+
+ Required height
+ Node to split
+
+ I split is available, the firt element will have requiredHeight. The second node is splitted parameter.
+
+
+
+
+ Split tables by row
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc composer.
+
+
+
+ Split node.
+
+ Required height
+ Node to split
+
+ I split is available, the firt element will have requiredHeight. The second node is splitted parameter.
+
+
+
+
+ Description of BorderLine.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+
+
+
+ Gets the aps nodes.
+
+ The start.
+ The end point.
+ returns aps nodes
+
+
+
+ Represents border styles enumeration
+
+
+
+
+ Left style.
+
+
+
+
+ Top style.
+
+
+
+
+ Right style.
+
+
+
+
+ Bottom style.
+
+
+
+
+ Description of BorderNode.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+ The width.
+
+
+
+ Sets the side.
+
+ The style.
+ The color.
+ The width.
+
+
+
+ Gets the aps nodes.
+
+ The owner.
+ Returns aps nodes
+
+
+
+ Gets the color of the fore.
+
+
+ The color of the fore.
+
+
+
+
+ Gets the width.
+
+
+
+
+ Description of StyleNode.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Color of the fore.
+ Color of the back.
+ The border.
+
+
+
+ Initializes a new instance of the class.
+
+ Color of the fore.
+ Color of the back.
+
+
+
+ Initializes a new instance of the class.
+
+ Color of the fore.
+
+
+
+ Gets or sets the color of the fore.
+
+
+ The color of the fore.
+
+
+
+
+ Gets or sets the color of the back.
+
+
+ The color of the back.
+
+
+
+
+ Gets or sets the border.
+
+
+ The border.
+
+
+
+
+ StyleProcessor.
+
+
+
+
+ DocumentCreator instance,
+
+
+
+
+ Initializes a new instance of the class.
+
+ The doc creator.
+
+
+
+ Get APS array that represent border
+
+ The layout node.
+ returns aps nodes
+
+
+
+ Get APS array that represent back color
+
+ The Layout node.
+ returns aps nodes
+
+
+
+ Horizontal alignment
+
+
+
+
+ Left Alignment
+
+
+
+
+ Center Alignment
+
+
+
+
+ Right Alignment
+
+
+
+
+ Justify Alignment
+
+
+
+
+ Vertical alignment
+
+
+
+
+ Top VerticalAlignment
+
+
+
+
+ Center VerticalAlignment
+
+
+
+
+ Bottom VerticalAlignment
+
+
+
+
+ Layout image
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+ The margin.
+
+
+
+ Get APS node
+
+
+ Returns APS node
+
+
+
+
+ Get APS image
+
+ Returns image
+
+
+
+ Size of the node
+
+
+
+
+ Represent object's margin
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The top value.
+ The left value.
+ The right value.
+ The bottom value.
+
+
+
+ Gets the zero.
+
+
+
+
+ Top value.
+
+
+
+
+ Left value
+
+
+
+
+ Right value
+
+
+
+
+ Bottom value
+
+
+
+
+ Represents page
+
+
+
+
+ Initializes a new instance of the class.
+
+ The page size.
+ The margin.
+ The document creator.
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Size of the node
+
+
+
+
+ Layout text
+
+
+
+
+ Justify text string
+
+ The row width.
+
+
+
+ Get APS node
+
+ returns aps nodes
+
+
+
+ Initializes a new instance of the class.
+
+ Color of the fore.
+ The row font.
+ The row text.
+ The composer.
+
+
+
+ Gets the glyph.
+
+ returns glyph
+
+
+
+ Foreground color
+
+
+ The color of the fore.
+
+
+
+
+ Text font.
+
+
+
+
+ Text content
+
+
+
+
+ Size of the node
+
+
+
+
+ Base class for all text composers
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns size for text
+
+ Text string.
+ Text font.
+
+ Size of the text
+
+
+
+
+ Returns size for text
+
+ Text string.
+ Text font.
+
+ Size of the text
+
+
+
+
+ Split long string
+
+ Text to split
+ Max widths
+ Foreground color
+ Text font.
+
+ Text rows with splitted text
+
+
+
+
+ Compose text
+
+ Text to compose
+ Text line width
+ Text color
+ Text font.
+
+ Text rows with composed text
+
+
+
+
+ Justify text
+
+ The text row.
+ Width to justify
+
+ Modified string
+
+
+
+
+ Represents a named position in a document.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The bookmark name.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Gets or sets the origin.
+
+
+ The origin.
+
+
+
+
+ Gets the name.
+
+
+
+
+ Returns true if the bookmark name starts with "_" and it should not be displayed in the document outline.
+ This is MS Word convention for bookmark names.
+
+
+
+
+ The Canvas element groups elements together.
+
+
+
+
+ IApsHyperlinked interface
+
+
+
+
+ Gets or sets the hyperlink.
+
+
+ The hyperlink.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Gets the memberwise clone of this instance.
+
+ Returns copied canvas
+
+
+
+ When not null, this object is a hyperlink.
+
+
+ The hyperlink.
+
+
+
+
+ Encapsulates functionality of a checkbox form field.
+
+
+
+
+ Initializes a new instance of the class.
+
+ 2-D point in the page coordinates.
+ The checkbox name.
+ size of the checkbox in points.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Rectangle that bounds this form field.
+
+
+
+
+ Set/get default value for this field.
+
+
+ true if value; otherwise, false.
+
+
+
+
+ Gets or sets the size.
+
+
+ The size.
+
+
+
+
+ Encapsulates ComboBox form field.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The combobox name.
+ The items.
+ The def value.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Allows to specify default font for this combo box field.
+
+
+ The default font.
+
+
+
+
+ ArrayList of Strings, specifying items stored in this ComboBox.
+
+
+ The items.
+
+
+
+
+ Returns zero-based index of this ComoBox item that is currently selected.
+
+
+ The value.
+
+
+
+
+ Rectangle that bounds this form field. Is constructed by calculating the biggest
+ rect that can hold all possible items of this ComboBox.
+
+
+
+
+ Returns dimensions of this combobox field.
+
+
+ The size.
+
+
+
+
+ The Glyphs element is used to represent a run of text of a single font.
+ The Glyphs element provides information for accurate rendering.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The glyph color.
+ Color of the outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+ The text rendering mode.
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The glyph color.
+ Color of the outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The brush.
+ The outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The brush.
+ The outline.
+ Width of the outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The glyph color.
+ Color of the outline.
+ Width of the outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+
+
+
+ Initializes a new instance of the class.
+
+ The glyph font.
+ The glyph color.
+ Color of the outline.
+ Width of the outline.
+ The origin.
+ The glyph text.
+ The glyph size.
+ The char space.
+ The text rendering mode.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ DD: This method is utilized by Aspose.Recognition to optimize large number of ApsGlyphs instances
+ on some pages. It merges glyph together using this method.
+
+ The text to add.
+ The width.
+
+
+
+ DD: This method is utilized by Aspose.Recognition to make glyphs empty during merges
+ and prepare them for garbage collection from the ApsModel.
+
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Gets or sets the text rendering mode.
+
+
+ The text rendering mode.
+
+
+
+
+ This is never null.
+
+
+
+
+ Font fill color. If , then text is rendered as outline using OutlineColor.
+ This is never null.
+
+
+
+
+ that determines the color and texture of the drawn glyph.
+
+
+
+
+ This attribute is not in Metro, but I don't see how I can output outlined or embossed text without such attribute.
+
+
+ The color of the outline.
+
+
+ For the time being the layout engine should do this:
+ For normal text set Color to text color and set OutlineColor to zero.
+ For outline text set Color to zero and OutlineColor to text color.
+ For embossed text set Color to either gray or text color and set OutlineColor to gray.
+ This is never null.
+
+
+
+
+ that determines the pen the of glyph outline.
+
+
+
+
+ Gets the width of the outline.
+
+
+ The width of the outline.
+
+
+
+
+ Coordinate of the first glyph in the run.
+ The Y coordinate is on the baseline.
+
+
+ The origin.
+
+
+
+
+ Gets or sets the text of this glyphs object.
+ This is never null.
+
+
+
+
+ Specifies an affine matrix transformation to the local coordinate space.
+ Can be null.
+
+
+
+
+ Gets or sets a region that defines clipping for this object.
+ Can be null.
+
+
+
+
+ The top left of the rectangle occupied by the text.
+
+
+
+
+ Returns the extents of the glyphs text.
+
+
+ The size.
+
+
+
+
+ Top of the rectangle occupied by the text.
+
+
+
+
+ Bottom of the rectangle occupied by the text.
+
+
+
+
+ Left of the rectangle occupised by the text.
+
+
+
+
+ When not null, this object is a hyperlink.
+ Can be null.
+
+
+ The hyperlink.
+
+
+
+
+ Gets the char space.
+
+
+
+
+ Gets the bounds.
+
+
+
+
+ Custom application data object attached to this node.
+ Can be null.
+
+
+ The tag.
+
+
+
+
+ Gets or sets the indices.
+
+
+ The indices.
+
+
+
+
+ The Indices attribute MAY be used to specify a series of glyphs, complex character-to-glyph cluster mappings, or a combination of both.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Save content into stream
+
+ The stream.
+
+
+
+ Check that indices map is empty
+
+
+ true if this instance is empty; otherwise, false.
+
+
+
+
+ Read content from stream
+
+ The stream.
+
+
+
+ Specifying Character-to-Glyph Mappings
+
+
+
+
+ Number of UTF-16 code units that combine to form this cluster. One or more code units may be specified. Default value is 1.
+
+
+ The cluster code unit count.
+
+
+
+
+ Number of glyph indices that combine to form this cluster. One or more indices may be specified. Default value is 1.
+
+
+ The custer glyph count.
+
+
+
+
+ Index of the glyph (16-bit) in the physical font.
+
+
+ The index of the glyph.
+
+
+
+
+ This class is used for reading information from ApsGlyphsIndices class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The indices.
+
+
+
+ Gets the indicies count.
+
+ Returns count
+
+
+
+ Gets the index of the advance width at.
+
+ The index.
+ Returns width
+
+
+
+ Getus the index of the offset at.
+
+ The index.
+ Returns offset
+
+
+
+ Getvs the index of the offset at.
+
+ The index.
+ Returns offset
+
+
+
+ Getglyphses the index of the mapping at.
+
+ The index.
+ Returns index
+
+
+
+ This class is used for saving information to ApsGlyphsIndices class
+
+
+
+
+ Adds the index.
+
+ Width of the advance.
+
+
+
+ Adds the index.
+
+ The glyphs mapping.
+ Width of the advance.
+ The u offset.
+ The v offset.
+
+
+
+ Gets the indices.
+
+ Returns indices
+
+
+
+ Gets the glyphs mappings.
+
+
+
+
+ Gets the advance widths.
+
+
+
+
+ Gets the U offsets.
+
+
+
+
+ Gets the V offsets.
+
+
+
+
+ Gets the indices map.
+
+
+
+
+ Represents logical group of nodes which can have custom properties and can skip visiting child nodes.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Gets or sets custom object tag attached to the group.
+
+
+ The tag.
+
+
+
+
+ Represents category of the node.
+
+ RK This class defines values that are Aspose.Words layout-related, it can be considered a dependency violation.
+ But I am going to give this class a credit in that we are going to include information about document structures
+ into APS (to support document structures in PDF/A and XPS) and therefore I am happy to keep it here.
+
+
+
+
+ The tab category.
+
+
+
+
+ The space category.
+
+
+
+
+ Paragraph mark. This includes all breaks.
+
+
+
+
+ Bookmark bounds.
+
+
+
+
+ Span highlight.
+
+
+
+
+ Smart tag bounds.
+
+
+
+
+ Shape bounds.
+
+
+
+
+ Not supported. This affects layout itself.
+
+
+
+
+ Not supported. This is rendered outside of Aps.
+
+
+
+
+ Text bounds.
+
+
+
+
+ Background shapes and colors.
+
+
+
+
+ Fields shading.
+
+
+
+
+ Not supported. This affects layout itself.
+
+
+
+
+ Table grid.
+
+
+
+
+ Unknown elements. These are typically rendered as red question marks.
+
+
+
+
+ All categories.
+
+
+
+
+ No category.
+
+
+
+
+ Represents a source of a hyperlink in the APS model.
+
+
+
+
+ Equalses the specified other.
+
+ The other.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Equalses the specified x.
+
+ The x hyperlink.
+ The y hyperlink.
+
+ true if the specified x is equal to y; otherwise, false.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The active rect.
+ The target URI.
+
+
+
+ Initializes a new instance of the class.
+
+ The active rect.
+ Type of the jump.
+
+
+
+ Initializes a new instance of the class.
+
+ The active rect.
+ The page number.
+
+
+
+ The active rectangle of the hyperlink.
+
+
+
+
+ True when the Target is a bookmark name. False when the Target is an external URI.
+
+
+ true if this instance is local; otherwise, false.
+
+
+
+
+ The target external URI or a bookmark name.
+
+
+
+
+ Gets the type of the hyperlink.
+
+
+ The type of the hyperlink.
+
+
+
+
+ Gets the JumpType of the hyperlink.
+
+
+ The type of the jump.
+
+
+
+
+ Gets a document page number for internal links
+
+
+
+
+ Specifies the type of Hyperlink.
+
+
+
+
+ URI Hyperlink
+
+
+
+
+ Jump Hyperlink
+
+
+
+
+ Represents an image in the APS model.
+
+
+
+
+ Ctor without a crop.
+
+ The origin.
+ The image size.
+ The image bytes.
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The size.
+
+
+
+ Ctor with a chroma key and an optional crop.
+
+ The origin.
+ The image size.
+ The image bytes.
+ The image crop.
+ The chroma key.
+
+
+
+ Ctor with an optional crop.
+
+ World coords where to draw the image.
+ Word coords image size.
+ The image bytes..
+ Can be null.
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Creates a red-cross image that can be used instead of the original image.
+
+ The SRC image.
+
+ Returns image
+
+
+
+
+ Creates an image that filled by the specified and applies stencil mask.
+
+ The stencil mask.
+ The .
+ If false white color in stencil mask image will be transparent, if true black color in stencil mask image will be transparent.
+ Returns image.
+
+
+
+ Used for unit testing.
+
+ The origin.
+ The image size.
+ Name of the file.
+ Returns image
+
+
+
+ Sets the bitmap bytes.
+
+ The pixels.
+ The bounds.
+
+
+
+ Sets the bitmap bytes.
+
+ The pixels.
+ The bounds.
+ The format.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Used for support of work with raster images inside CAD drawing.
+
+ The origin.
+ The image size.
+ Stream with image.
+ Returns image
+
+
+
+ Top left corner of the image in the world coordinates.
+
+
+ The origin.
+
+
+
+
+ The size of the image in the world coordinates.
+
+
+ The size.
+
+
+
+
+ Gets the Origin and Size rectangle.
+
+
+
+
+ Gets or sets the image bytes.
+
+
+ The image bytes.
+
+
+
+
+ Gets the type of the image.
+
+
+ The type of the image.
+
+
+
+
+ Gets or sets the crop.
+
+
+ The image crop.
+
+
+
+
+ When not null, this object is a hyperlink.
+
+
+ The hyperlink.
+
+
+
+
+ The region of colors which should be made transparent.
+
+
+ The chroma key.
+
+
+
+
+ The compression used for setting image bytes, by default it is auto
+
+
+
+
+ Specifies JumpType for Hyperlinks.
+
+
+
+
+ The No jump type
+
+
+
+
+ Jump to the next page
+
+
+
+
+ Jump to the previous page
+
+
+
+
+ Jump to the first page
+
+
+
+
+ Jump to the last page
+
+
+
+
+ The LastSlideViewed type
+
+
+
+
+ The EndShow type.
+
+
+
+
+ Jump to the page specified by a number.
+
+
+
+
+ Represents a position in a document that appears as an entry in the document outline.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The level.
+ The title.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ The position on the page where clicking on the item in the document outline jumps to.
+
+
+ The origin.
+
+
+
+
+ The zero based level in the document outline.
+
+
+
+
+ The text that is displayed in the document outline.
+
+
+
+
+ Represents a fixed-layout page that is ready for rendering.
+ Can contain Glyphs, Patn, Canvas and Image nodes.
+
+ The width and height of an APS page are "final" e.g. already rotated to the correct orientation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width in points
+ The height in points
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the page in points.
+ Paper tray (bin) of the page.
+
+
+
+ Determines whether [is end page].
+
+
+ true if [is end page]; otherwise, false.
+
+
+
+
+ Sets the end page.
+
+ if set to true [end page].
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ The size of the page in points.
+
+
+ The size.
+
+
+
+
+ Page width in points.
+
+
+
+
+ Page height in points.
+
+
+
+
+ Gets the width of the page in pixels at 96 dpi.
+
+
+
+
+ Gets the height of the page in pixels at 96 dpi.
+
+
+
+
+ Gets the paper tray (bin) where the printer needs to take the paper from.
+ The value is implementation (printer) specific.
+
+
+
+ Specifies the paper tray (bin) where the printer needs to take the paper from.
+
+
+ Automatically fed paper.
+
+
+ The printer's default input bin.
+
+
+ An envelope.
+
+
+ Form Source.
+
+
+ The printer's large-capacity bin.
+
+
+ Large-format paper.
+
+
+ The lower bin of a printer.
+
+
+ Manually fed envelope.
+
+
+ Manually fed paper.
+
+
+ The middle bin of a printer.
+
+
+ A paper cassette.
+
+
+ Small-format paper.
+
+
+ A tractor feed.
+
+
+ The upper bin of a printer (or, if the printer only has one bin, that bin).
+
+
+
+ The Path element defines a single vector graphic to be rendered on a page.
+
+ RK This class is actually used to represent both a drawing path and also a clipping region.
+ It is a bit awkward, but okay for now. It could be split into two objects one to represent
+ pure geometry and another to represent drawing properties of a path including geometry and clipping.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The DR pen.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Froms the poly line.
+
+ The points.
+ if set to true [is closed].
+ Returns path.
+
+
+
+ Utility function to create a rectangle path.
+
+ The rectangle
+ Returns path.
+
+
+
+ Froms the rectangle.
+
+ The rectangle.
+ The DR pen.
+ Returns path.
+
+
+
+ Utility function to create a line path.
+
+ Start point of the line.
+ End point of the line.
+ Returns path.
+
+
+
+ Utility function to create a point path (simulated by small rectangle).
+
+ The Point.
+ The DR Pen.
+ Returns path.
+
+
+
+ Utility function to create a path by .
+
+ The glyphs.
+
+ Returns path.
+
+
+
+
+ Utility function to create a path by the array of the glyph indexes>.
+
+ The array of the glyph indexes.
+ The .
+ The brush.
+ The .
+
+ Returns path.
+
+
+
+
+ Utility function to create a path by text with specific font.
+
+ The text that is described a path.
+ The .
+ The brush.
+ The .
+
+ Returns path.
+
+
+
+
+ Utility function to create a path by text with specific font.
+
+ The text that is described a path.
+ The .
+
+ Returns path.
+
+
+
+
+ Returns removal mode for current entity - ApsPath with Brush set (i.e. with fill) has to be preserved fully if at least part of it is in the visible area or fill could be bugged.
+
+ Removal mode of parent node
+ True for immediate removal, false for deferred
+
+
+
+ Transforms the points of the path according to the specified matrix.
+ Note, you should not normally need this method. Normally, it should be enough for you to use
+ and one or more parent .
+ This method is currently used only as a workaround when processing complex clipping regions in Metafile to APS conversions.
+
+ The matrix.
+
+
+
+ Returns width of non-excluded area around visible area - equal to half of line width
+
+ Current margin from above nodes
+ Margin of current node
+
+
+
+ Creates a clone of this path. Where all child instances are cloned all the way down.
+
+ Returns path.
+
+ DD: Is needed by Aspose.Recognition to support XObjectForms. In short each Form is a reusable
+ collection of ApsNodes including paths. Each time it is put on the page, local transform matrix
+ is applied. If we apply it to original ApsPaths, then next time we will have altered source.
+ So have to clone it first.
+
+
+
+
+ Specifies how the outline of the path is drawn.
+ Encapsulates APS attributes StrokeThickness, StrokeColor, StrokeDashArray, StrokeDashCap etc.
+ Can be null.
+ Not used when this object is a clipping region.
+
+
+ The pen.
+
+
+
+
+ Specifies how the path is filled.
+ Allows to represents APS solid, image and gradient brushes.
+ Can be null.
+ Not used when this object is a clipping region.
+
+
+ The brush.
+
+
+
+
+ Specifies how the interiors of shapes in this path object are filled.
+ Geometry property.
+
+
+ The fill mode.
+
+
+
+
+ Returns true if the last drawn figure is not null and is closed.
+
+
+ true if this instance is last figure closed; otherwise, false.
+
+
+
+
+ When not null, this object is a hyperlink.
+
+
+ The hyperlink.
+
+
+
+
+ A PathFigure element is composed of a set of one or more line or curve segments.
+ Can contain ApsPolyLineSegment and ApsArcSegment elements.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Creates an instance of from an array of points connected with straight lines.
+
+ The points.
+ if set to true [is closed].
+ Returns figure
+
+
+
+ Froms the line.
+
+ The start.
+ The end point.
+ Returns figure
+
+
+
+ Froms the rectangle.
+
+ The rectangle.
+ Returns figure
+
+
+
+ Creates an instance of from an array of points connected with Bezier curves.
+
+ The points.
+ Returns figure
+
+
+
+ Adds the poly line.
+
+ The points.
+
+
+
+ Adds the line.
+
+ The start.
+ The end point.
+
+
+
+ Adds the rectangle.
+
+ The rectangle.
+
+
+
+ Adds Bezier points to exist figure.
+
+ The points.
+
+
+
+ Adds the arc.
+
+ The aps arc.
+
+
+
+ Transforms the specified matrix.
+
+ The matrix.
+
+
+
+ Clones this instance.
+
+ Returns figure
+
+
+
+ Simplifies the figures that contain only ApsPolyLineSegments.
+ This method removes duplicated point and merges all ApsPolyLineSegments into single.
+ It can be used to save memory
+
+ This parameter specifies the number of decimal places that are considered when comparing adjacent points
+ Returns true if the figure simplified, otherwise false
+
+
+
+ If this attribute is set to ‘true’, the stroke is drawn “closed”.
+
+
+ true if this instance is closed; otherwise, false.
+
+
+
+
+ Describes one Bezier curve.
+ Internally stored as a cubic curve.
+
+
+
+
+ Represents transformable interface.
+
+
+
+
+ Transforms the specified matrix.
+
+ The matrix.
+
+
+
+ Represents ApsCloneable interface
+
+
+
+
+ Clones this instance.
+
+ Returns aps node
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Constructs empty bezier segment with specified color.
+
+ the curve color to set
+
+
+
+ Ctor. Creates a cubic Bezier curve.
+
+ The bezier.
+
+
+
+ Ctor. Creates a cubic Bezier curve.
+
+ The bezier.
+ The color to set
+
+
+
+ Creates a cubic Bezier curve.
+ Requires 4 control points (P0, P1, P2, P3) as defined by Bezier equation.
+
+ The cub p0.
+ The cub p1.
+ The cub p2.
+ The cub p3.
+
+
+
+ Creates a cubic Bezier curve with specified color.
+ Requires 4 control points (P0, P1, P2, P3) as defined by Bezier equation and color.
+
+ The cub p0.
+ The cub p1.
+ The cub p2.
+ The cub p3.
+ The color.
+
+
+
+ Creates a cubic Bezier curve.
+ Requires 4 control points (P0, P1, P2, P3) as defined by Bezier equation.
+
+ The points.
+
+
+
+ Creates a cubic Bezier curve with specified color.
+ Requires 4 control points (P0, P1, P2, P3) as defined by Bezier equation and color.
+
+ The points.
+ The color.
+
+
+
+ Creates a cubic Bezier curve from from a quadratic curve.
+ Requires 3 control points (P0, P1, P2) as defined by Bezier equation.
+
+ The quad p0.
+ The quad p1.
+ The quad p2.
+
+
+
+ Creates a cubic Bezier curve from from a quadratic curve with sopecified color.
+ Requires 3 control points (P0, P1, P2) as defined by Bezier equation and color.
+
+ The quad p0.
+ The quad p1.
+ The quad p2.
+ The color.
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Transforms the specified matrix.
+
+ The matrix.
+
+
+
+ Clones this instance.
+
+
+ Returns aps node
+
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Gets or sets the curve.
+
+
+ The curve.
+
+
+
+
+ Sets and return bezier curve color.
+
+
+ The color of the curve.
+
+
+
+
+ The PolyLineSegment element describes a polygonal drawing
+ containing an arbitrary number of individual vertices.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The end point.
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The end point.
+ The color.
+
+
+
+ Initializes a new instance of the class.
+
+ The coords.
+
+
+
+ Initializes a new instance of the class.
+
+ A set of coordinates of the multiple segments that define the PolyLineSegment.
+ x1, y1, x2, y2, and so on.
+ the line color
+
+
+
+ Initializes a new instance of the class.
+
+ The points.
+
+
+
+ Initializes a new instance of the class.
+
+ The points.
+
+
+
+ Initializes a new instance of the class.
+
+ the line points array
+ the line color
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Transforms the specified matrix.
+
+ The matrix.
+
+
+
+ Implementation of clone interface.
+
+
+ Returns aps node
+
+
+
+
+ Calculates the minimum maximum points.
+
+ The minimum point.
+ The maximum point.
+ The matrix.
+
+
+
+ Points of the poly line.
+
+
+
+
+ Return polyline color.
+
+
+ The color of the line.
+
+ the polyline color
+
+
+
+ Represents a cubic Bezier curve.
+
+
+
+
+ Gets or sets the start point.
+
+
+ The start point.
+
+
+
+
+ Gets or sets the control point.
+
+
+ The control point.
+
+
+
+
+ Gets or sets the end point.
+
+
+ The end point.
+
+
+
+
+ Encapsulates functionality of a radiobutton form field.
+
+
+
+
+ Initializes a new instance of the class.
+
+ 2-D point in the page coordinates.
+ The checkbox name.
+ size of the checkbox in points.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Scales APS tree by the specified factor.
+
+
+
+
+ Visits the page start.
+
+ The aps page.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Scales the specified node.
+
+ The aps node.
+ Scale from units.
+ Scale to units.
+
+
+
+ Scales the specified node.
+
+ The aps node.
+ The scale factor.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Scales the rectangle.
+
+ The rectangle.
+ returns rectangle
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image.
+
+
+
+ Visits the bookmark.
+
+ The bookmark.
+
+
+
+ Visits the outline item.
+
+ The outline item.
+
+
+
+ Visits the form field text.
+
+ The field.
+
+
+
+ Visits the form field checkbox.
+
+ The field.
+
+
+
+ Visits the form combo box.
+
+ The field.
+
+
+
+ Returns False if child nodes of the group must not be visited.
+
+ The group.
+
+ Returns False if child nodes of the group must not be visited.
+
+
+
+
+ Gets or sets a value indicating whether [scale font size].
+
+
+ true if [scale font size]; otherwise, false.
+
+
+
+
+ Represents ScalerUnits
+
+
+
+
+ Emu scale units
+
+
+
+
+ Pt scale units
+
+
+
+
+ Calculates statistics from a graph of APS objects.
+
+
+
+
+ Calculates the specified node.
+
+ The aps node.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Processes the rectangle.
+
+ The rectangle.
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image.
+
+
+
+ Visits the bookmark.
+
+ The bookmark.
+
+
+
+ Visits the outline item.
+
+ The outline item.
+
+
+
+ Visits the form field text.
+
+ The field.
+
+
+
+ Visits the form field checkbox.
+
+ The field.
+
+
+
+ Visits the form combo box.
+
+ The field.
+
+
+
+ Returns False if child nodes of the group must not be visited.
+
+ The group.
+
+ Returns False if child nodes of the group must not be visited.
+
+
+
+
+ Gets the max float value.
+
+
+
+
+ Gets the min float value.
+
+
+
+
+ Indicates that aps object were processed and statistic was calculated.
+ Is it possible that no object were found on canvas and calculated statistics
+ are invalid.
+
+
+ true if [are statistics calculated]; otherwise, false.
+
+
+
+
+ Text form field can be either plain text or rich text.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The origin.
+ The textfiled name.
+ The textfiled size.
+ if set to true [is rich text].
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines the interface for visiting nodes of the model.
+
+ The visitor.
+
+
+
+ Returns true if the descendant represents rich text. False overwise.
+
+
+ true if this instance is rich text; otherwise, false.
+
+
+
+
+ Maximal length of this text field in symbols.
+ Returns 0 if unlimited.
+
+
+ The length of the max.
+
+
+
+
+ Set/Get default text string to for this text field.
+ Note: Depending on the value of for the string is pure plain text or
+ is rtf string formatted according to XHTML 1.0 subset as defined in
+ PdfSpec 1.7, chapter 8.6.2 Rich Text Strings.
+
+
+ The value.
+
+
+
+
+ If this object is RichText, then sets/gets plain text version of this instance.
+ Otherwise returns .
+ RichText fields should always set this field if they set field.
+ Otherwise corresponding pdf field will contain empty string.
+
+
+ The plain text.
+
+
+
+
+ Allows to specify default font for this plain text field.
+
+
+ The default font.
+
+
+
+
+ Returns dimensions of this text field.
+
+
+ The size.
+
+
+
+
+ Sets custom color for default font in this field.
+
+
+ The color of the font.
+
+
+
+
+ Bounding box of this text field.
+
+
+
+
+ Determines height of text line.
+
+
+
+
+ Determines whether the text can be multiline.
+
+
+ true if text is multiline; otherwise, false.
+
+
+
+ Text rendering mode.
+
+
+
+
+ Undefined text rendering mode.
+
+
+
+
+ Fill text.
+
+
+
+
+ Stroke text.
+
+
+
+
+ Fill and stroke text. This is a combination of FillText and StrokeText modes.
+
+
+
+
+ Represents an exception that is contain data regarding not supported rendering functionality.
+
+
+
+
+ Represents common error that occur during rendering process.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Builds a from an ApsPath.
+
+
+
+
+ Builds a .NET GraphicsPath from an ApsPath.
+
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ The .NET GraphicsPath that is being built.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path end.
+
+ The aps path.
+
+
+
+ Gets the calculated .
+
+
+
+
+ Renders APS nodes onto a .NET Graphics object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Renders an APS node and all its contents to a graphics object at 100% zoom.
+
+ The APS node to render to graphics.
+ The graphics object to draw on.
+
+ This is actually a pretty basic method. See and ,
+ they are much more powerful.
+ The user can specify various options on the Graphics object to affect rendering and scaling.
+ // To smooth fonts:
+ graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
+ // To smooth drawing of lines etc:
+ graphics.SmoothingMode = SmoothingMode.HighQuality;
+ // To specify quality for scaling images:
+ graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
+
+
+
+
+ Renders the specified APS node into a Graphics object at the specified location and scale.
+
+ The object to render.
+ The size of the APS node in points.
+ The Graphics object where to render to.
+ Can have any units and transformations on it, all will be taken into account.
+ The X coordinate (in world units) where to render the page.
+ The Y coordinate (in world units) where to render the page.
+ The scale for rendering the page.
+ The size (in world units) of the rendered page.
+
+
+
+ Renders the specified APS node into a Graphics object at the specified location and size.
+
+ The node to render.
+ The size of the APS node in points.
+ The Graphics object where to render to.
+ Can have any units and transformations on it, all will be taken into account.
+ The X coordinate (in world units) where to render the page.
+ The Y coordinate (in world units) where to render the page.
+ The maximum width (in world units) that can be occupied by the rendered page.
+ The maximum height (in world units) that can be occupised by the rendered page.
+ Token for interruption of long operation
+ The scale that was automatically calculated for the renderer page to fit the specified size.
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Visits the canvas end.
+
+ The canvas.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path end.
+
+ The aps path.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image node.
+
+
+
+ Allows an implementer to control the rendering errors and optionally aborts the rendering process.
+
+
+
+
+ Enables error-related processing and returns a value that indicates whether aborts the rendering process.
+
+ The exception during rendering.
+
+ true if aborts the rendering process is not required otherwise, false.
+
+
+
+ The exception that is thrown when an APS node contains invalid brush for the current rendering engine..
+
+
+
+
+ Initializes a new instance of the class.
+
+ The brush.
+
+
+
+ Gets the invalid brush.
+
+
+
+
+ Provides access to the type, size and resolution of a metafile (without using GDI+).
+
+
+
+
+ Default resolution 96 pixels per inch.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image bytes.
+
+
+
+ Ctor. Does not close the stream.
+
+ The stream.
+
+
+
+ Tries to extract a bitmap if this metafile is just a wrapped bitmap.
+ Returns bitmap bytes if successfull; otherwise returns null.
+ At the moment works only for WMF. Not sure if we get bitmaps wrapped in EMF.
+
+ Returns bitmap
+
+
+
+ Default metafile bounds int pixels.
+
+
+
+
+ Gets metafile image inclusive bounds in pixels.
+
+
+
+
+ Gets the size pixels.
+
+
+
+
+ Returns the size of the metafile image in points.
+
+
+
+
+ It looks like .NET Graphics uses this default size. Most likely it uses screen size,
+ but we will use this always.
+
+
+
+
+ Represents the type of a Windows metafile.
+
+
+
+
+ Invalid metafile
+
+
+
+
+ Standard WMF
+
+
+
+
+ Placeable WMF
+
+
+
+
+ EMF (not EMF+)
+
+
+
+
+ EMF+ without dual, down-level records
+
+
+
+
+ EMF+ with dual, down-level records
+
+
+
+
+ Specifies the PDF compliance error actions.
+
+
+
+
+ Try to normalize invalid resource
+
+
+
+
+ Delete invalid resource
+
+
+
+
+ Encryption mode enum. Describe using algorithm and key length.
+ This enum is extended in order to be able to further increase functionality.
+ This enum implements "Base-to-Core" pattern.
+
+
+
+
+ Algorithm, with an RC4 encryption key length of 40 bits;
+
+
+
+
+ Algorithm, with an RC4 encryption key length of 128 bits and advanced permission set;
+
+
+
+
+ Contains details for a pdf encryption.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The user password.
+ The owner password.
+ The permissions.
+ The encryption algorithm.
+
+
+
+ Gets or sets the User password.
+
+
+ The user password.
+
+
+ Opening the document with the correct user password (or opening a document
+ that does not have a user password) allows additional operations to be
+ performed according to the user access permissions specified in the document’s
+ encryption dictionary.
+
+
+
+
+ Gets or sets the Owner password.
+
+
+ The owner password.
+
+
+ Opening the document with the correct owner password (assuming it is not the
+ same as the user password) allows full (owner) access to the document. This
+ unlimited access includes the ability to change the document’s passwords and
+ access permissions.
+
+
+
+
+ Gets or sets the permissions.
+
+
+ The permissions.
+
+
+
+
+ Gets or sets the encryption mode.
+
+
+ The encryption algorithm.
+
+
+
+
+ A PDF document can be encrypted to protect its contents from unauthorized access.
+ Encryption applies to all strings and streams in the document’s PDF file, but not
+ to other object types such as integers and boolean values.
+
+ Encryption-related information is stored in a document’s encryption dictionary,
+ which is the value of the Encrypt entry in the document’s trailer dictionary.
+
+ RK We only support RC4 encryption that encrypts all strings and all streams in a document.
+ PDF 1.5 introduced crypt filters and ability to use other encryption algorithms such as AES,
+ but we do not support this yet. We only support the "legacy" encryption at the moment.
+
+
+
+
+ Base class for indirect objects in a PDF file.
+ In this simple library all objects are generation zero so only object id is used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+
+
+
+ Writes the object to the PDF document.
+
+ The writer.
+
+
+
+ If the object is a resource, generates a unique resource name. It offers
+ a simple generation algorithm which might be overridden in descendant classes.
+
+ Returns resource name
+
+
+
+ If PDF encryption is turned on, creates and returns an encryptor object with the key suitable for encrypting this object.
+ Returns null if encryption is not turned on.
+
+ Returns encryptor
+
+
+
+ Represents current context
+
+
+
+
+ Represents current resource name
+
+
+
+
+ Ctor of Encryption Dictionary object.
+ Gets all the encryption details from the context object.
+
+ The context.
+ The document id.
+
+
+
+ Write information into base stream.
+
+ The writer.
+
+
+
+ Algorithm 3.1 Encryption of data using an encryption key
+
+ The number.
+ The generation.
+ Returns encryptor
+
+
+
+ Used to encrypt PDF objects and strings.
+ Each indirect PDF object encryption key is different, it is tied to the object id.
+ For encryptring strings, the key is tied to the parent indirect object id.
+
+
+
+
+ Base class for all PDF filter streams.
+ Provides default implementations for all of the methods.
+ Implements "no filter" writing so can be used directly for dummy filters.
+
+
+
+
+ When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+ An I/O error occurs.
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+
+ An I/O error occurs.
+
+
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an int, or -1 if at the end of the stream.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+ The sum of and is larger than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+ An I/O error occurs.
+
+
+ The stream does not support writing, or the stream is already closed.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Writes the specified SRC buffer.
+
+ The SRC buffer.
+ The SRC offset.
+ The SRC count.
+
+
+
+ Current output stream.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Stores length of the stream so it can be written after the stream is packed and written.
+
+
+
+
+ Writes the object to the PDF document.
+
+ The writer.
+
+
+
+ Use this attribute to override whether CsPorter adds the "throws Exception" clause to a method or not.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [is throws].
+
+
+
+ Gets or sets a value indicating whether this instance is throws.
+
+
+ true if this instance is throws; otherwise, false.
+
+
+
+
+ Port this class manually to Java.
+
+
+
+
+ Toes the upper invariant.
+
+ The character.
+ The character
+
+
+
+ Toes the lower invariant.
+
+ The character.
+ The character
+
+
+
+ Returns true if the character belongs to the Private Use Unicode Category.
+
+ The character.
+
+ true if [is private use category] [the specified c]; otherwise, false.
+
+
+
+
+ Represents enumeration of the font embedding rules.
+
+
+
+
+ Not embedded true type fonts for ASCII characters 32-127.
+
+
+
+
+ Embedding fonts into the PDF document as subsets.
+
+
+
+
+ Fully embed fonts into the PDF document without subsetting.
+
+
+
+
+ Represents Font Exception collection.
+
+
+
+
+ Adds the font with specified embedding rule.
+
+ The font name.
+ The forn rule.
+
+
+
+ Removes the specified font.
+
+ The font name.
+
+
+
+ Determines whether [contains] [the specified font].
+
+ The font name.
+
+ true if [contains] [the specified font]; otherwise, false.
+
+
+
+
+ Gets or sets the with the specified font.
+
+ The font name.
+ The font rules.
+
+
+
+ Gets the number of the font rules.
+
+
+
+
+ Represents a PDF stream indirect object.
+
+ This is basically a wrapper around the PdfWriter object and a MemoryStream.
+ The purpose of this wrapper is enclose the content of the stream with the proper object header and ending.
+ Writing into this object writes into a memory stream. Then, when this object is written to the PDF document,
+ the stream content is copied to the output PDF while applying a filter and encryption if necessary.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+
+
+
+ Writes the line.
+
+ The text to write.
+
+
+
+ Writes a byte that is a part of a literal string. If the value is a special character,
+ it is escaped by prepending \ in front of it.
+
+ The value.
+
+
+
+ Writes the object to the PDF document.
+
+ The writer.
+
+
+
+ Gets the length of the stream.
+
+
+ The length of the stream.
+
+
+
+
+ PDF font types.
+
+
+
+
+ A composite font containing a CIDFont in the CFF format and Top DICT used for character to glyph.
+ a.k.a 1-byte CFF font.
+
+
+
+
+ A composite font containing a CIDFont in the CFF format without Top DICT operators.
+ Mapping from characters to glyphs is via the OpenType cmap.
+ a.k.a 2-byte CFF font.
+
+ This requires PDF 1.6
+
+
+
+
+ A composite font containing a CIDFont whose glyphs are based on TrueType font outlines.
+
+
+
+
+ A simple TrueType (non embedded font).
+
+
+
+
+ Base class for all PDF fonts. Provides methods and properties common for fonts.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+ The requested style.
+ The font object.
+ Type of the font.
+
+
+
+ Writes the subsetted true type font to the provided stream.
+ The subsetted font contains only glyphs used in StringToGlyphIndexes method.
+
+ The DST stream.
+
+
+
+ Creates and returns a font object of the concrete type depending on whether or not it should be embedded.
+
+ The context.
+ The requested style.
+ The font object.
+ Type of the font.
+ The font embedding rule.
+ Returns font
+
+
+
+ Converts from font design units to PDF glyph units.
+
+ The value.
+ Returns glyph units
+
+
+
+ Gets the name of the post script.
+
+ Returns PostScriptName
+
+
+
+ Builds the value of the BaseFontName property.
+ According to the PDF spec the name is "Prefix+PostscriptName,SimulatedStyle".
+
+ Returns BaseFont Name
+
+ Although I add the simulated style string, Acrobat Reader does not seem to simulate Bold and Italic
+ for embedded fonts so I have to use text output commands to create simulation myself.
+
+
+
+
+ Current TT font
+
+
+
+
+ Current base-font name
+
+
+
+
+ Full embedding flag
+
+
+
+
+ True if italic font was requested, but not found and has to be simulated.
+
+
+ true if this instance is simulate italic; otherwise, false.
+
+
+
+
+ True if bold font was requested, but not found and has to be simulated.
+
+
+ true if this instance is simulate bold; otherwise, false.
+
+
+
+
+ The value of the /BaseFont attribute in all font related objects.
+
+
+ The name of the base font.
+
+
+
+
+ Gets the value of the /Descent attribute for writing into FontDescriptor.
+ It is a negative value in glyph units.
+
+
+
+
+ Gets the value of the /Ascent attribute for writing into FontDescriptor.
+
+
+
+
+ Gets the value of the /CapHeight attribute for writing into FontDescriptor.
+
+
+ The height of the cap.
+
+
+
+
+ Gets the value for the /Flags attribute for writing into FontDesciptor.
+
+
+
+
+ Gets the font bounding box in glyph units.
+
+
+
+
+ Gets the value for the /ItalicAngle attribute for writing into FontDescriptor.
+
+
+
+
+ PartialMemoryStream class
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The buffer.
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [compress].
+
+
+
+ Initializes a new instance of the class.
+
+ The buffer.
+ if set to true [compress].
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+ count - Number of bytes to copy cannot be negative.
+ or
+ offset - Destination offset cannot be negative.
+
+ buffer - Buffer cannot be null.
+
+
+
+ Sets the position within the current stream, not supported
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+
+
+
+ When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an Int32, or -1 if at the end of the stream.
+
+
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+
+
+ To the array.
+
+
+
+
+
+ Gets a value indicating whether the current stream supports reading.
+
+
+
+
+ Indicating whether the current stream supports seeking.
+
+
+
+
+ Indicating whether the current stream supports writing.
+
+
+
+
+ Gets the length in bytes of the stream.
+
+
+
+
+ Gets or sets the position within the current stream.
+
+
+
+
+ Gets the with the specified i.
+
+
+ The .
+
+ The i.
+
+
+
+
+ Specifies the PDF compliance options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The error action.
+
+
+
+ Gets error action.
+
+
+
+
+ Specifies digital hash algorithm used by digital signature.
+
+
+
+
+ SHA-1 hash algorithm.
+
+
+
+
+ SHA-256 hash algorithm.
+
+
+
+
+ SHA-384 hash algorithm.
+
+
+
+
+ SHA-512 hash algorithm.
+
+
+
+
+ SHA-1 hash algorithm.
+
+
+
+
+ Specifies the type of PDF validator tool.
+
+
+
+
+ Validator tool, located at "X:\Aspose\Aspose.Common\Aspose.Foundation\pdf-tools\pdfvalidator.exe"
+
+
+
+
+ Validator tool, located at "X:\Aspose\Aspose.Common\Aspose.Foundation\pdf-tools\PDFTron\pdfa.exe"
+
+
+
+
+ Contains details for a PDF digital signature.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The certificate.
+ The reason.
+ The location.
+ The signature date.
+ The hash algorithm.
+
+
+
+ Certificate to sign with.
+
+
+ The certificate.
+
+
+
+
+ The reason of signing.
+
+
+ The reason.
+
+
+
+
+ Location of signing.
+
+
+ The location.
+
+
+
+
+ Date of signing.
+
+
+ The signature date.
+
+
+
+
+ Hash algorithm.
+
+
+ The hash algorithm.
+
+
+
+
+ Serializes and deserializes ApsNodes into and from XML documents.
+
+
+
+
+ Serializes the specified and writes the XML document to a file using the specified .
+
+ The used to write the XML document.
+ The to serialize.
+
+
+
+ Serializes the specified and writes the XML document to a file using the specified .
+
+ The used to write the XML document.
+ The to serialize.
+ Get or set flags that allows serilaze true type fonts.
+
+
+
+ Deserializes the XML document contained by the specified .
+
+ The that contains the XML document to deserialize.
+ The being deserialized.
+
+
+
+ The base64 font data
+
+
+
+
+ Base class for binary font data.
+
+
+
+
+ Opens the stream with font data. The caller is responsible for disposing the stream.
+
+ Returns stream
+
+
+
+ Returns the size of the font data in bytes.
+
+ Returns the size of the font data in bytes.
+
+
+
+ Returns true if font data is presented.
+
+ Returns true if font data is presented.
+
+
+
+ Opens the stream with font data. The caller is responsible for disposing the stream.
+
+
+ Returns stream
+
+
+
+
+ Returns the size of the font data in bytes.
+
+
+ Returns the size of the font data in bytes.
+
+
+
+
+ Returns true if font data is presented.
+
+
+ Returns true if font data is presented.
+
+
+
+
+ Gets or sets the base64font.
+
+
+ The base64font.
+
+
+
+
+ Gets or sets the name of the family.
+
+
+ The name of the family.
+
+
+
+
+ Represents abstract TTF table
+
+
+
+
+ Represents Format10 cmap subtable of the TTF font file
+
+
+
+
+ Represents CMap sub table base class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The base table.
+
+
+
+ Initializes a new instance of the class.
+
+ The platform ID.
+ The platform specific ID.
+ The base table.
+
+
+
+ Gets a glyph index
+
+ The char code.
+ Returns index.
+
+
+
+ Gets or sets the platform ID.
+
+
+ The platform ID.
+
+
+
+
+ Gets or sets the platform specific ID.
+
+
+ The platform specific ID.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The platform ID.
+ The platform specific ID.
+ The base table.
+
+
+
+ Gets a glyph index
+
+ The char code.
+
+ Returns index.
+
+
+
+
+ Represents Format2 cmap subtable of the TTF font file
+
+
+
+
+ Initializes a new instance of the class.
+
+ The platform ID.
+ The platform specific ID.
+ The base table.
+
+
+
+ Gets a glyph index
+
+ The char code.
+
+ Returns index.
+
+
+
+
+ Represents Format4 cmap subtable of the TTF font file
+
+
+
+
+ Initializes a new instance of the class.
+
+ The base table.
+
+
+
+ Initializes a new instance of the class.
+
+ The platform ID.
+ The platform specific ID.
+ The base table.
+
+
+
+ Gets a glyph index
+
+ The char code.
+
+ Returns index.
+
+
+
+
+ Gets the seg count.
+
+
+
+
+ Gets the end code.
+
+
+
+
+ Gets the start code.
+
+
+
+
+ Represents Format6 cmap subtable of the TTF font file
+
+
+
+
+ Initializes a new instance of the class.
+
+ The base table.
+
+
+
+ Initializes a new instance of the class.
+
+ The platform ID.
+ The platform specific ID.
+ The base table.
+
+
+
+ Gets a glyph index
+
+ The char code.
+
+ Returns index.
+
+
+
+
+ Keeps a cache of external fonts.
+
+
+
+
+ Base class for font cache.
+
+
+
+
+ Fetches the TrueType font and tries to perform a simple font substitution.
+
+ Name of the family.
+ The style.
+ Name of the alt family.
+ Returns TTFont
+
+
+
+ Fetches the TrueType font and tries to perform a simple font substitution.
+
+ Name of the family.
+ The size points.
+ The style.
+ Returns font
+
+
+
+ Fetches the TrueType font and tries to perform a simple font substitution.
+
+ Name of the family.
+ The size points.
+ The style.
+ The font capitals.
+
+ Returns font
+
+
+
+
+ Fetches the TrueType font and tries to perform a simple font substitution.
+
+ Name of the family.
+ The size points.
+ The style.
+ Name of the alt family.
+ Returns Font
+
+
+
+ Fetches the TrueType font and tries to perform a simple font substitution.
+
+ Name of the family.
+ The size points.
+ The style.
+ Name of the alt family.
+ The font capitals.
+
+ Returns Font
+
+
+
+
+ Gets the specified font.
+ Returns null if font is not available.
+
+ Name of the family.
+ The style.
+ Returns TTFont
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The base cache.
+
+
+
+ Gets the default fonts folders.
+
+ Returns system folder.
+
+
+
+ This is a shortcut to for setting only one font directory.
+ There are no checks performed on the fonts folder.
+
+ The font folder.
+
+
+
+ Sets the folders where TrueType fonts are loaded from and clears all loaded fonts.
+ There are no checks performed on the fonts folders.
+
+ The fonts folders.
+ if set to true [recursive].
+
+
+
+ Gets a copy of the array that contains the list of folders where Aspose.Words looks for TrueType fonts.
+
+
+ The returned value is a copy of the data that Aspose.Words uses. If you change the entries in the returned array,
+ it will have no effect on document rendering. To specify new font locations use the method.
+
+ A copy of the current font locations.
+
+
+
+ Resets the fonts folder to the system default.
+
+
+
+
+ Gets the font from cache.
+ Returns null if font is not available.
+
+ Name of the family.
+ The style.
+
+ Returns TTFont
+
+
+
+
+ Adds the base64 font.
+
+ Name of the family.
+ The font data.
+
+
+
+ Finds the base64 font.
+
+ Name of the family.
+
+
+
+
+ Gets or sets the name of the default font.
+
+
+ The name of the default font.
+
+
+
+
+ Gets singleton instance of this class.
+
+
+
+
+ Gets the base64 fonts.
+
+
+ The base64 fonts.
+
+
+
+
+ Represents binary font data in file.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the file.
+
+
+
+ Opens the stream with font data.
+
+
+ Returns stream
+
+
+
+
+ Returns the size of data in bytes.
+
+
+ Returns the size of the font data in bytes.
+
+
+
+
+ Returns true if font data is presented.
+
+
+ Returns true if font data is presented.
+
+
+
+
+ Font file name.
+
+
+ The name of the file.
+
+
+
+
+ Provides default settings used by the class.
+ This interface was introduced for testing purposes only.
+
+
+
+
+ Gets the default fonts folders.
+
+ Returns system folder.
+
+
+
+ Gets the default font name.
+
+ The default font name.
+
+
+
+ Represents binary font data in memory.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The font data.
+
+
+
+ Opens the stream with font data.
+
+
+ Returns stream
+
+
+
+
+ Returns the size of data in bytes.
+
+
+ Returns the size of the font data in bytes.
+
+
+
+
+ Returns true if font data is presented.
+
+
+ Returns true if font data is presented.
+
+
+
+
+ byte array with font data.
+
+
+
+
+ Converts an APS path or a clipping region into PDF path commands.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Specifies the PDF compliance level to output file.
+
+
+
+
+ The output file will be PDF 1.5 compliant.
+
+
+
+
+ The output file will be PDF/A-1a compliant.
+
+
+
+
+ The output file will be PDF/A-1b compliant.
+
+
+
+
+ Represents a PDF /Metadata indirect object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+
+
+
+ Writes the object to the PDF document.
+
+ The writer.
+
+
+
+ Possible Page Boundaries as defined by Pdf spec 1.7 Chapter 10.10.1.
+
+
+ A PDF page may be prepared either for a finished medium, such as a sheet of paper,
+ or as part of a prepress process in which the content of the page is placed on an intermediate medium,
+ such as film or an imposed reproduction plate. In the latter case, it is important to distinguish
+ between the intermediate page and the finished page. The intermediate page may often include
+ additional production-related content, such as bleeds or printer marks, that falls outside
+ the boundaries of the finished page.
+ To handle such cases, a PDF page can define as many as five separate boundaries to control
+ various aspects of the imaging process.
+ These boundaries are specified by the MediaBox, CropBox, BleedBox, TrimBox, and ArtBox entries,
+ respectively, in the page object dictionary (see Table 3.27 on page 145).
+ All of them are rectangles expressed in default user space units.
+ The crop, bleed, trim, and art boxes should not ordinarily extend beyond the boundaries
+ of the media box.
+
+
+
+
+ The media box defines the boundaries of the physical medium on which the page is to be printed.
+ It may include any extended area surrounding the finished page for bleed, printing marks,
+ or other such purposes. It may also include areas close to the edges of the medium that cannot
+ be marked because of physical limitations of the output device. Content falling outside this
+ boundary can safely be discarded without affecting the meaning of the PDF file.
+
+
+
+
+ The crop box defines the region to which the contents of the page are to be clipped (cropped)
+ when displayed or printed. Unlike the other boxes, the crop box has no defined meaning in terms
+ of physical page geometry or intended use; it merely imposes clipping on the page contents.
+ However, in the absence of additional information (such as imposition instructions specified
+ in a JDF or PJTF job ticket), the crop box determines how the page's contents are to be positioned
+ on the output medium. The default value is the page's media box.
+
+
+
+
+ The bleed box (PDF 1.3) defines the region to which the contents of the page should be clipped
+ when output in a production environment. This may include any extra bleed area needed to accommodate
+ the physical limitations of cutting, folding, and trimming equipment. The actual printed page may
+ include printing marks that fall outside the bleed box. The default value is the page's crop box.
+
+
+
+
+ The trim box (PDF 1.3) defines the intended dimensions of the finished page after trimming.
+ It may be smaller than the media box to allow for production-related content, such as printing
+ instructions, cut marks, or color bars. The default value is the page's crop box.
+
+
+
+
+ The art box (PDF 1.3) defines the extent of the page's meaningful content
+ (including potential white space) as intended by the page's creator.
+ The default value is the page's crop box.
+
+
+
+
+ PdfPredictorType enumerates all possible predictors defined for flate and lzw decoders.
+
+
+
+
+ Used as default. Specifies that image has no predictor functions associated.
+
+
+
+
+ Predictor from TIFF spec (applies to both lzw and flate, although tiff spec defines it for lzw only)
+
+
+
+
+ PNG prediction (on encoding, PNG None on all rows)
+
+
+
+
+ PNG prediction (on encoding, PNG Sub on all rows)
+
+
+
+
+ PNG prediction (on encoding, PNG Up on all rows)
+
+
+
+
+ PNG prediction (on encoding, PNG Average on all rows).
+
+
+
+
+ PNG prediction (on encoding, PNG Paeth on all rows).
+
+
+
+
+ PNG prediction (on encoding, PNG optimum).
+
+
+
+
+ Allows specifying the page layout to be used when the document is opened in pdf viewers.
+
+
+
+
+ Display one page at a time.
+
+
+
+
+ Display the pages in one column.
+
+
+
+
+ Display the pages in two columns, with odd-numbered pages on the left.
+
+
+
+
+ Display the pages in two columns, with odd-numbered pages on the right.
+
+
+
+
+ (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left.
+
+
+
+
+ (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right.
+
+
+
+
+ Enum specifying how the pdf document should be displayed when opened by viewers reading it.
+ Used by PageMode entry of Pdf Document Catalog and by NonFullScreenPageMode entry in
+ ViewerPreferences dictionary.
+
+
+
+
+ Neither document outline nor thumbnail images visible.
+
+
+
+
+ Document outline visible.
+
+
+
+
+ Thumbnail images visible.
+
+
+
+
+ Full-screen mode, with no menu bar, window controls, or any other window visible.
+
+
+
+
+ (PDF 1.5) Optional content group panel visible.
+
+
+
+
+ Specifies a type of compression applied to all content in the PDF file except images.
+
+
+
+
+ None compression type
+
+
+
+
+ Rle compression type
+
+
+
+
+ Lzw compression type
+
+
+
+
+ Flate compression type
+
+
+
+
+ Provides common methods and data needed by the classes that participate in PDF rendering process.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The document.
+ The options.
+
+
+
+ Root object of the library to create PDF files.
+ Provides methods to create pages in a PDF document and specify document-wide settings.
+
+ Call StartPage and EndPage to create pages in the PDF file.
+ While between StartPage and EndPage, use the Page property
+ to draw on the current page.
+
+ Call EndDocument when you finished adding the last page.
+
+ Note that all measurements in this PDF library are in points.
+
+ Optimized to keep only one current page in memory.
+ The page is written to the disk as soon its finished.
+
+
+
+
+ Starts writing a new PDF document to a file.
+
+ Name of the file.
+ The options.
+
+
+
+ Starts writing a new PDF document to a stream.
+
+ The stream.
+ The options.
+
+
+
+ Starts writing a new PDF document into a new memory stream.
+
+ The options.
+
+
+
+ Gets layers count.
+
+
+ The layers count.
+
+
+
+
+ Finishes writing of a PDF document to a file or stream.
+
+
+
+
+ Starts a new page in the PDF output.
+
+ Page width in points.
+ Page height in points.
+
+
+
+ Starts a new page in the PDF output.
+
+ Page size in points.
+
+
+
+ Flushes the current page to the PDF output.
+
+
+
+
+ The stream the document is being written to.
+
+
+
+
+ Gets the meta information and document properties.
+
+
+
+
+ Gets the encryption dictionary.
+
+
+
+
+ Gets/sets page layout option, specifying the page layout to be used when the document is opened.
+
+
+
+
+ Gets/sets PageMode option, specifying how the document should be displayed when opened.
+
+
+
+
+ The current page that is being built. Valid between calls to StartPage and EndPage.
+
+
+
+
+ Gets the viewer preferences.
+
+
+
+
+ Specifies the type of compression applied to images in the PDF file.
+
+
+
+
+ Automatically selects the most appropriate compression for each image.
+
+
+
+
+ Saves raw image bytes resulting in bigger pdf file sizes.
+
+
+
+
+ Run Length compression.
+
+
+
+
+ Flate compression.
+
+
+
+
+ Predictor selection is restricted to PNG Paeth predictor to speed-up the process. In practice
+ performs surprisingly good. Better than .
+
+
+
+
+ Predictor selection is more complicated and should result in smaller image sizes but
+ taking more time. RFC 2083 says it is the best way to go. But on the test data baseline predictor
+ kicks ass leaving optimized predictor behing
+ by 25-40% compression rate gains.
+
+
+
+
+ Jpeg compression.
+ Does not support transparency.
+
+
+
+
+ /CCITTFaxDecode/DecodeParms/K 0/Columns 173
+ Does not support transparency.
+
+
+
+
+ /CCITTFaxDecode/DecodeParms/K -1/Columns 173
+ Does not support transparency.
+
+
+
+
+ Provides methods for writing indirect PDF objects to a PDF document.
+ Maintains the cross-reference table that is written at the end of a PDF document.
+
+
+
+
+ Provides functions for writing strings and simple data types into a PDF document.
+
+ RK This should really be renamed into something like PdfDataWriter.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Closes this instance.
+
+
+
+
+ Writes an unescaped byte.
+
+ The value.
+
+
+
+ Writes a text string. The string must contain only 7 bit characters.
+
+ The text to write.
+
+
+
+ Formats and writes a text string. The resulting text must contain only 7 bit characters.
+
+ The format.
+ The argument.
+
+
+
+ Formats and writes a text string. The resulting text must contain only 7 bit characters.
+
+ The format.
+ The argument.
+ The argument.
+
+
+
+ Formats and writes a text string. The resulting text must contain only 7 bit characters.
+
+ The format.
+ The argument.
+ The argument.
+ The argument.
+
+
+
+ Writes unescaped bytes.
+
+ The buffer.
+ The index.
+ The count.
+
+
+
+ Writes a text and a following space to the stream.
+ The string must contain only 7 bit characters.
+
+ The text to write.
+
+
+
+ Writes the space.
+
+
+
+
+ Writes the specified value.
+
+ The value.
+
+
+
+ Writes the specified value.
+
+ The value.
+
+
+
+ Writes the line.
+
+
+
+
+ Writes text followed by new line characters.
+ The string must contain only 7 bit characters.
+
+ The text to write.
+
+
+
+ Writes text followed by new line characters.
+ The string must contain only 7 bit characters.
+
+ The format.
+ The argument.
+
+
+
+ Writes text followed by new line characters.
+ The string must contain only 7 bit characters.
+
+ The format.
+ The argument.
+ The argument.
+
+
+
+ Writes the dictionary start.
+
+
+
+
+ Writes the dictionary end.
+
+
+
+
+ IF YOU NEED TO OUTPUT USER TEXT (E.G. POSSIBLY WITH NON-ENGLISH CHARS), use instead.
+ Writes a dictionary entry (name and value pair) with a string as-is (not escaped).
+
+ The key name.
+ The value.
+
+
+
+ Writes dictionary entry (name and value pair) where value is boolean.
+
+ The key name.
+ if set to true [value].
+
+
+
+ Writes dictionary entry (name and value pair) where value is boolean array.
+
+ The key name.
+ The value.
+
+
+
+ Writes dictionary entry (name and value pair) where value is float array.
+
+ The key name.
+ The value.
+
+
+
+ Writes a dictionary entry (name and value pair) where value is int array.
+
+ The key name.
+ The value.
+
+
+
+ Writes a dictionary entry consting of a name and a literal value (text string).
+ Writes the string as Unicode to PDF.
+
+ The key name.
+ If null or empty string, nothing is written.
+
+
+
+ IF YOU NEED TO OUTPUT USER TEXT (E.G. POSSIBLY WITH NON-ENGLISH CHARS),
+ use instead.
+ Writes a dictionary entry (name and literal value).
+ The literal value is enclosed into ( ).
+
+ The key name.
+ The value.
+ if set to true [is escape].
+
+
+
+ Writes a Unicode string into PDF as a "text string".
+ If encryption is off, then writes the string enclosed into ( ), as Unicode and escaped properly.
+ If encryption is on, then encrypts the string, converts to hex and writes enclosed into angle brackets.
+
+ The value.
+
+
+
+ Writes a dictionary entry (name and value pair) with a rectangle value.
+
+ The key name.
+ The value.
+
+
+
+ Writes a dictionary entry (name and value pair) with a date-time value formatted
+ according to the PDF spec.
+
+ The key name.
+ If equals DateTime.MinValue then nothing is written.
+ The value is written as is in UTC format.
+
+
+
+ Writes the dictionary entry.
+
+ The key name.
+ The value.
+
+
+
+ Writes the dictionary entry.
+
+ The key name.
+ The value.
+
+
+
+ Writes the dictionary entry.
+
+ The key name.
+ The matrix.
+
+
+
+ Writes a text string. The string must contain only 7 bit characters. Escapes it as per the PDF spec.
+
+ The text to write.
+
+
+
+ Writes a 16 bit value that is a part of a literal string.
+
+ The value.
+
+
+
+ Writes a byte that is a part of a literal string. If the value is a special character,
+ it is escaped by prepending \ in front of it.
+
+ The value.
+
+
+
+ Writes the bool array.
+
+ The values.
+
+
+
+ Writes the float array.
+
+ The values.
+
+
+
+ Writes the int array.
+
+ The values.
+
+
+
+ This just writes elements of the matrix as numbers separated by space.
+
+ The matrix.
+
+
+
+ Gets the base stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Call this to start writing of an indirect object. Updates the cross reference table.
+
+ The object
+
+
+
+ Call this to end writing of an indirect object.
+
+
+
+
+ Writes the cross-reference table that allows random access to indirect objects within the file.
+
+ Returns the start position of the cross reference in the stream.
+
+
+
+ Gets the cross reference count.
+
+
+
+
+ Metadata about a PDF document, stored as an object inside a PDF file.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+
+
+
+ Writes the object to the PDF document.
+
+ The writer.
+
+
+
+ Provides various PDF rendering options such as stream compression type.
+
+
+
+
+ Validates that the requested options are compatible with each other and throws an exception with an explanatory message if needed.
+
+
+
+
+ Specifies how many levels of to include in the document outline.
+ 0 - no outline, 1 - one outline level and so on.
+ Default is 0.
+
+
+
+
+ Specifies how many levels in the document outline to show expanded when the PDF file is viewed.
+ 0 - the document outline is not expanded.
+ 1 - first level items in the document are expanded and so on.
+ Default is 0.
+
+
+
+
+ Specifies at which level in the document outline to display objects.
+ 0 - not displayed.
+ 1 at first level and so on.
+ Default is 0.
+
+
+
+
+ Specifies compression type to be used for all content streams except images.
+ Default is .
+
+
+
+
+ Specifies compression type to be used for all images in the document.
+ Default is .
+
+
+
+
+ Specifies the quality of JPEG compression for images (if JPEG compression is used).
+ Default is 95.
+
+
+
+
+ A debug settings that turns on display of active rectangles of hyperlinks in the PDF document.
+
+
+
+
+ Desired conformance level for generated PDF document.
+ Important note: This option should not be changed after PdfDocument object is constructed.
+ Default is .
+
+
+
+
+ Represents Pdf compliance options.
+
+
+
+
+ Gets a value indicating whether [pdfa compliant].
+
+
+ true if [pdfa compliant]; otherwise, false.
+
+
+
+
+ Gets or sets a encryption details. If not set, then no encryption will be performed.
+
+
+
+
+ Gets or sets the image transparent color.
+
+
+ The color of the image transparent.
+
+
+
+
+ Applies the specified transparent color to an image if true.
+
+
+
+
+ Gets or sets a digital signature details. If not set, then no signing will be performed.
+
+
+
+
+ Gets or sets a value determining how metafile images should be rendered.
+
+
+
+
+ Gets the font embedding exception.
+
+
+
+
+ Gets or sets the font embedding rule.
+
+
+ The font embedding rule.
+
+
+
+
+ Gets or sets the .
+
+
+ The error handler.
+
+
+
+
+ The tab-size property is used to customize the width of a tab (U+0009) character.
+
+
+ The size of the tab.
+
+
+
+
+ Represents a PDF Page object.
+ Provides methods to draw text and graphics on the page.
+ Saves itself into a PDF document.
+
+ Note in PDF the 0,0 is at the bottom left corner. PdfPage automatically converts 0,0 to the top left corner.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Document-wide context object.
+ Page width in points.
+ Page height in points.
+
+
+
+ Finalizes the page.
+
+
+
+
+ Begins the canvas.
+
+ The canvas.
+
+
+
+ Ends the canvas.
+
+ The canvas.
+
+
+
+ Draws the glyphs.
+
+ The glyphs.
+
+
+
+ Begins the path.
+
+ The aps path.
+
+
+
+ Ends the path.
+
+ The aps path.
+
+
+
+ Begins the path figure.
+
+ The path figure.
+
+
+
+ Ends the path figure.
+
+ The path figure.
+
+
+
+ Draws the poly line segment.
+
+ The segment.
+
+
+
+ Draws the poly bezier segment.
+
+ The segment.
+
+
+
+ Draws an image on the page.
+
+ The image must be a raster image. Cannot be a metafile.
+
+
+
+ Writes a PDF page object as an indirect object to the document.
+
+ The writer.
+
+
+
+ Adds a bookmark (a named destination).
+ The destination is on the current page, the coordinate is specified in the bookmark object.
+
+ The bookmark.
+
+
+
+ Adds an item to the document outline. The destination of the outline item is on the current page.
+
+ The outline item.
+
+
+
+ Returns width of this pdf page.
+
+
+
+
+ Returns the height of this page.
+
+
+
+
+ Renders APS model into a PDF document.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream where to write the PDF to.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream where to write the PDF to.
+ The options to use.
+ Token for interruption of long operation
+
+
+
+ Initializes a new instance of the class.
+
+ The object where to write the PDF to.
+
+
+
+ Renders a layout node and all its contents into a PDF document.
+
+ The aps node.
+
+
+
+ You need to call when finished building a PDF document, it writes index etc structures to PDF.
+ This calls .
+
+
+
+
+ Visits the page start.
+
+ The aps page.
+
+
+
+ Visits the page end.
+
+ The aps page.
+
+
+
+ Visits the canvas start.
+
+ The canvas.
+
+
+
+ Visits the canvas end.
+
+ The canvas.
+
+
+
+ Visits the glyphs.
+
+ The glyphs.
+
+
+
+ Visits the path start.
+
+ The aps path.
+
+
+
+ Visits the path end.
+
+ The aps path.
+
+
+
+ Visits the path figure start.
+
+ The path figure.
+
+
+
+ Visits the path figure end.
+
+ The path figure.
+
+
+
+ Visits the poly line segment.
+
+ The segment.
+
+
+
+ Visits the bezier segment.
+
+ The segment.
+
+
+
+ Visits the image.
+
+ The image.
+
+
+
+ Visits the bookmark.
+
+ The bookmark.
+
+
+
+ Visits the outline item.
+
+ The outline item.
+
+
+
+ Visits the form field text.
+
+ The field.
+
+
+
+ Visits the form combo box.
+
+ The field.
+
+
+
+ Visits the form field checkbox.
+
+ The field.
+
+
+
+ Gets the PDF document being built.
+
+
+
+
+ Represents a Type0 (composite) PDF font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The context.
+ The requested style.
+ The TTFont.
+ Type of the font.
+ The font embedding rule.
+
+
+
+ Writes the subsetted true type font to the provided stream.
+ The subsetted font contains only glyphs used in StringToGlyphIndexes method.
+
+ The DST stream.
+
+
+
+ Writes all PDF objects of the font to the document.
+
+ The writer.
+
+
+
+ Generates a font resource name that also can be used as a subset prefix for the BaseFont property.
+
+
+ Returns resource name
+
+
+ To make unit testing possible by comparing user and gold files, I have to avoid
+ using random characters in BaseFont prefix. Therefore, I use font indirect object
+ id to generate the font resource name and the font resource name is also
+ used as a subset prefix in the BaseFont property.
+
+
+
+
+ Encapsulates functionality related to Pdf Viewer Preferences. See Pdf Spec 1.7 Chapter 8.1
+ The ViewerPreferences entry in a document's catalog designates a viewer
+ preferences dictionary (PDF 1.2) controlling the way the document is to
+ be presented on the screen or in print.
+ If no such dictionary is specified, viewing and printing
+ applications should behave in accordance with their own current user preference settings.
+
+
+ All preferences are implemented with exception of these:
+ - Direction - relates mainly to Asian languages.
+ - PrintScaling - pdf 1.6
+ - Duplex - pdf 1.7
+ - PickTrayByPDFSize - pdf 1.7
+ - AcPrintPageRange - pdf 1.7
+ - NumCopies - pdf 1.7
+
+
+
+
+ Write viewer preferences into pdf. Only output the preferences whose values have been altered.
+ Thus we'll save file space by not writing default values of every preference.
+
+ The writer.
+
+
+
+ A flag specifying whether to hide the viewer application's tool bars when the document is active.
+ Default value: false.
+
+
+
+
+ A flag specifying whether to hide the viewer application's menu bar when the document is active.
+ Default value: false.
+
+
+
+
+ A flag specifying whether to hide user interface elements in the document's window
+ (such as scroll bars and navigation controls), leaving only the document's contents
+ displayed. Default value: false.
+
+
+
+
+ A flag specifying whether to resize the document's window to fit the size of the first
+ displayed page. Default value: false.
+
+
+
+
+ A flag specifying whether to position the document's window in the center of the screen.
+ Default value: false.
+
+
+
+
+ A flag specifying whether the window's title bar should display the document title taken from
+ the Title entry of the document information dictionary (see Section 10.2.1,
+ 'Document Information Dictionary'). If false, the title bar should instead display the name
+ of the PDF file containing the document. Default value: false.
+
+
+
+
+ The document's page mode, specifying how to display the document on exiting full-screen mode.
+ This entry is meaningful only if the value of the PageMode entry in the catalog dictionary
+ (see Section 3.6.1, 'Document Catalog') is FullScreen; it is ignored otherwise.
+ Default value: UseNone.
+
+
+
+
+ (PDF'1.4) The name of the page boundary representing the area of a page to be displayed
+ when viewing the document on the screen. The value is the key designating the relevant
+ page boundary in the page object (see 'Page Objects' on page 144 and Section 10.10.1,
+ 'Page Boundaries'). If the specified page boundary is not defined in the page object,
+ its default value is used, as specified in Table 3.27 on page 145.
+ Default value: CropBox.
+
+
+
+
+ (PDF'1.4) The name of the page boundary to which the contents of a page are to be clipped
+ when viewing the document on the screen. The value is the key designating the relevant
+ page boundary in the page object (see 'Page Objects' on page 144 and Section 10.10.1,
+ 'Page Boundaries'). If the specified page boundary is not defined in the page object,
+ its default value is used, as specified in Table 3.27 on page 145.
+ Default value: CropBox.
+
+
+
+
+ (PDF'1.4) The name of the page boundary representing the area of a page to be rendered
+ when printing the document. The value is the key designating the relevant page boundary
+ in the page object (see 'Page Objects' on page 144 and Section 10.10.1, 'Page Boundaries').
+ If the specified page boundary is not defined in the page object, its default value is used,
+ as specified in Table 3.27 on page 145. Default value: CropBox.
+
+
+
+
+ (PDF'1.4) The name of the page boundary to which the contents of a page are to be clipped
+ when printing the document. The value is the key designating the relevant page boundary
+ in the page object (see 'Page Objects' on page 144 and Section 10.10.1, 'Page Boundaries').
+ If the specified page boundary is not defined in the page object, its default value is used,
+ as specified in Table 3.27 on page 145.
+ Default value: CropBox.
+
+
+
+
+ Provides methods to read and write the "cmap" table in a TTF file.
+ http://www.microsoft.com/typography/otspec/cmap.htm
+
+ At the moment we are reading only cmap subtable in the Format 4: Segment mapping to delta values.
+ This is the Microsoft standard character to glyph index mapping table for fonts that
+ support Unicode ranges other than the range [U+D800 - U+DFFF].
+
+
+
+
+ UnicodePlatform ID
+
+
+
+
+ MacintoshPlatform Id
+
+
+
+
+ MicrosoftPlatform Id
+
+
+
+
+ MicrosoftSymbolEncoding Id
+
+
+
+
+ MicrosoftUnicodeUcs2Encoding Id
+
+
+
+
+ MicrosoftUnicodeUcs4Encoding Id
+
+
+
+
+ MacintoshRomanEncoding Id
+
+
+
+
+ MacintoshJapaneseEncoding Id
+
+
+
+
+ MacintoshTraditionalChineseEncoding Id
+
+
+
+
+ MacintoshKoreanEncoding Id
+
+
+
+
+ MacintoshSimplifiedChineseEncoding Id
+
+
+
+
+ MicrosoftEnglishUSLanguage Id
+
+
+
+
+ MacintoshEnglishLanguage Id
+
+
+
+
+ The tag name
+
+
+
+
+ Lower Tag name
+
+
+
+
+ Creates a cmap by reading it from a file.
+ We are reading cmap in the format 4 because all Microsoft-Unicode encodings must provide at
+ least a Format 4 'cmap' subtable and I only want to implement the minimum (one format).
+ We are interested in either a Unicode font for Windows (the platform ID 3 and the encoding ID 1)
+ or a symbol font for Windows (the platform ID 3 and the encoding ID 0).
+
+ The reader.
+
+
+
+ Gets the platform tables.
+
+ The platform ID.
+ The platform specific ID.
+ Returns TTF cmap table
+
+
+
+ searches and returns unicode cmap.
+ if there is ucs-4 cmap - returns it first
+ otherwise - returns any unicode cmap it can find
+
+ Returns TTF cmap table
+
+
+
+ Gets the first table.
+
+ Returns TTF cmap table
+
+
+
+ Collection of names of true type font stored in true type font Naming Table.
+ Collection contains only FamilyName, SubFamilyName, FullFontName and PostSciptName.
+
+
+
+
+ Adds the specified name id.
+
+ The name id.
+ The language id.
+ The font name.
+
+
+
+ Returns english name of the font, if there is no english font name, returns the first name in the collection.
+ Throws exception if name does not exist.
+
+ The name id.
+ Returns font name
+
+
+
+ Returns english name of the font, if there is no english font name, returns the first name in the collection.
+ Returns null if name does not exist.
+
+ The name id.
+ Returns font name
+
+
+
+ Returns english name of the font by specified languageId.
+ Returns null if name does not exist.
+
+ The name id.
+ The language id.
+ Returns font name
+
+
+
+ Retuns null if name strings are not present in the font.
+
+ The name id.
+ Returns font names
+
+
+
+ Specifies a string from the true type font Naming Table.
+
+
+
+
+ CopyrightNotice type
+
+
+
+
+ Up to four fonts can share the Font Family name, forming a font style linking group
+ (regular, italic, bold, bold italic - as defined by OS/2.fsSelection bit settings).
+
+
+
+
+ The Font Subfamily name distiguishes the font in a group with the same
+ Font Family name (name ID 1). This is assumed to address style (italic, oblique)
+ and weight (light, bold, black, etc.). A font with no particular differences in
+ weight or style (e.g. medium weight, not italic and fsSelection bit 6 set) should
+ have the string "Regular" stored in this position.
+
+
+
+
+ Unique font identifier
+
+
+
+
+ Full font name; this should be a combination of strings 1 and 2.
+ Exception: if the font is "Regular" as indicated in string 2,
+ then use only the family name contained in string 1.
+ An exception to the above definition of Full font name is for Microsoft platform
+ strings for CFF OpenType fonts: in this case, the Full font name string must be i
+ dentical to the PostScript FontName in the CFF Name INDEX.
+
+
+
+
+ Version string. Should begin with the syntax 'Version number.number'
+ (upper case, lower case, or mixed, with a space between "Version" and the number).
+
+
+
+
+ Postscript name for the font; Name ID 6 specifies a string which is used to invoke a
+ PostScript language font that corresponds to this OpenType font.
+ If no name ID 6 is present, then there is no defined method for invoking this font
+ on a PostScript interpreter.
+
+
+
+
+ this is used to save any trademark notice/information for this font.
+ Such information should be based on legal advice. This is distinctly separate from the copyright.
+
+
+
+
+ Manufacturer type
+
+
+
+
+ Designed type
+
+
+
+
+ Description type
+
+
+
+
+ Represents an entry in the directory of tables inside a true type font file.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reader.
+
+
+
+ 4-char table identifier.
+
+
+
+
+ Offset from beginning of TrueType font file.
+
+
+
+
+ Contains information about a true type font.
+
+
+
+
+ Gets text width in points for a font size in points.
+
+ The text to calculate.
+ Size of the font.
+ Returns text width
+
+
+
+ Gets text width including XMax or advanceWidth value for last symbol.
+
+ Text value.
+ Font size.
+ Font width.
+
+
+
+ Gets text width in points for a font size in points.
+
+ The text to calculate.
+ The start index.
+ The char count.
+ Size of the font.
+ Returns text width
+
+
+
+ Gets the char width points.
+
+ The character.
+ Size of the font.
+ Returns text width
+
+
+
+ Gets max height of TTF symbols in string.
+
+ String to process
+ Maximum out of YMax char glyph values in corresponding TTF.
+
+
+
+ Converts the value in design units into points, given the font size in points.
+
+ The design units.
+ Size of the font.
+ Returns points
+
+
+
+ Method initializes FamilyName, SubFamilyName, FullFontName, PostSciptName properties.
+
+ Name of the font.
+
+
+
+ Check if the font is in the specified font family.
+ This method checks family name in all available languages.
+ Case insensitive.
+
+ Name of the family.
+
+ true if [is member of family] [the specified family name]; otherwise, false.
+
+
+
+
+ Up to four fonts can share the Font Family name, forming a font style linking group
+ (regular, italic, bold, bold italic - as defined by OS/2.fsSelection bit settings).
+
+
+ The name of the family.
+
+
+
+
+ The Font Subfamily name distinguishes the font in a group with the same Font Family name (name ID 1).
+ This is assumed to address style (italic, oblique) and weight (light, bold, black, etc.).
+ A font with no particular differences in weight or style (e.g. medium weight, not italic and fsSelection bit 6 set) should have the string "Regular" stored in this position.
+
+
+
+
+ This should be a combination of strings 1 and 2. Exception: if the font is "Regular" as indicated
+ in string 2, then use only the family name contained in string 1.
+ An exception to the above definition of Full font name is for Microsoft platform strings
+ for CFF OpenType fonts: in this case, the Full font name string must be identical to the PostScript
+ FontName in the CFF Name INDEX.
+
+
+
+
+ Specifies a string which is used to invoke a PostScript language font that corresponds to this
+ OpenType font.
+ May be null if not present in font file.
+
+
+
+
+ Gets the full font file name if the font was read from a file.
+ Gets a generated font file name if the font was read from memory.
+
+
+
+
+ Map of char codes to TTGlyph objects.
+
+
+
+
+ Gets the font style.
+
+
+
+
+ Gets the height, in font design units, of the em square for the specified style.
+ Corresponds to FontFamily.GetEmHeight.
+
+
+
+
+ Returns the ascent, in design units. Corresponds to FontFamily.GetCellAscent.
+
+
+
+
+ Returns the descent, in design units. Corresponds to FontFamily.GetCellDescent.
+
+
+
+
+ Gets Ascent + Descent in design units.
+
+
+
+
+ Returns the line spacing in design units. Corresponds to FontFamily.GetLineSpacing.
+ The line spacing is the vertical distance between the base lines of two consecutive lines of text.
+
+
+
+
+ Width of the strikeout stroke in font design units.
+
+
+
+
+ The recommended horizontal size in font design units for superscripts for this font.
+
+
+
+
+ The recommended vertical offset in font design units from the baseline for superscripts for this font.
+
+
+
+
+ The recommended horizontal size in font design units for subscripts for this font.
+
+
+
+
+ The recommended vertical offset in font design units from the baseline for subscripts for this font.
+
+
+
+
+ The position of the top of the strikeout stroke relative to the baseline in font design units.
+
+
+
+
+ Bounding box in design units.
+
+
+
+
+ Bounding box in design units.
+
+
+
+
+ Bounding box in design units.
+
+
+
+
+ Bounding box in design units.
+
+
+
+
+ Gets or sets the height of the cap.
+
+
+ The height of the cap.
+
+
+
+
+ This metric specifies the distance between the baseline and the approximate height of
+ uppercase letters measured in FUnits.
+
+
+
+
+ In degrees I think. Needed to pass to PDF document.
+
+
+
+
+ Font data.
+
+
+ The data.
+
+
+
+
+ True if font is symbolic.
+
+
+ true if this instance is symbolic; otherwise, false.
+
+
+
+
+ Represents 10 byte series of numbers is used to describe the visual characteristics of a given typeface.
+
+
+ The panose.
+
+
+
+
+ Represents classification of font-family design.
+ The high byte of this field contains the family class, while the low byte contains the family subclass.
+
+
+ The family class.
+
+
+
+
+ Gets or sets the underline thickness.
+
+
+ The underline thickness.
+
+
+
+
+ Gets or sets the underline position.
+
+
+ The underline position.
+
+
+
+
+ Responsible for reading and subsetting of true type font files.
+ See http://www.microsoft.com/typography/otspec/otff.htm for more info.
+
+
+
+
+ Reads a font binary data.
+ Throws if the font is not recognized as a valid true type font or if the font file does not exist.
+
+ Binary font data.
+ Optional if read from TTF, mandatory if read from TTC.
+ Returns font
+
+
+
+ Loads the underline information.
+
+ The ttf font.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Helps subset True Type Font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The TTF font.
+ if set to true [is full embedding].
+ if set to true [embed CFF file only].
+
+
+
+ Initializes a new instance of the class.
+
+ The TTFont.
+ if set to true [is full embedding].
+
+
+
+ Adds the index of the glyph.
+
+ Index of the glyph.
+
+
+
+ Converts a Unicode character into a glyph index that we can write into PDF and XPS.
+ The glyph index is cached for subsetting the true type font later.
+ Adds the character to the font subset.
+ This way of encoding characters is suitable for the H-Identity encoding
+ we are using for the true type fonts that we subset and embed into the PDF and XPS file.
+ Note the value is negative if the given character should be skipped from PDF output.
+ Note In XPS returned values are ignored for now.
+ Later we should write them into Indices attribute if Glyphs element in XPS.
+
+ The character.
+ Returns index
+
+
+
+ Writes the subsetted true type font to the provided stream.
+ The subsetted font contains only glyphs used in method.
+
+ The DST stream.
+ if set to true [is make valid TTF].
+
+
+
+ Writes the subsetted true type font to the provided stream.
+ The subsetted font contains only glyphs used in method.
+
+ The DST stream.
+ if set to true [is make valid TTF].
+ if set to true [is full embedding].
+
+
+
+ Returns hashtable, where key is glyph index and value is .
+ Method is used to create font subset for SWF.
+
+ Returns gpyphs
+
+
+
+ Returns map of char to new glyph indexes. It is used to write CMapMappings to PDF
+
+
+
+
+ being subset by this object.
+
+
+
+
+ Contains information about a glyph in a true type font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The char code.
+ Old index of the glyph.
+ Width of the advance.
+ The left side bearing.
+
+
+
+ Gets the char code.
+
+
+
+
+ The original glyph index as read from the TTF file.
+ Note that when we subset a TTF file we write a different glyph index.
+
+
+ The old index of the glyph.
+
+
+
+
+ Advance width of the glyph in font design units.
+
+
+ The width of the advance.
+
+
+
+
+ The left side bearing of the glyph (not sure what is this) in font design units.
+
+
+
+
+ A map of character code into TTGlyph object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ True if font is symbolic. This value affects glyph fetching mechanism for Private Unicode Area characters.
+
+
+
+ Adds glyph to the table.
+
+ The glyph.
+
+
+
+ Returns a glyph for the character code.
+ If the glyph is not found, returns missing glyph.
+ If the missing glyph is not found, returns a glyph for the space character.
+
+ The char code.
+ Returns gpyph
+
+
+
+ Returns a glyph by its index.
+ If the glyph is not found, returns missing glyph.
+ If the missing glyph is not found, returns a glyph for the space character.
+
+ Index of the glyph.
+ Returns a glyph
+
+
+
+ Gets or sets the with the specified char code.
+
+ The char code.
+ Returns TTF gpyph
+
+
+
+ Returns number of glyphs in the table.
+
+
+
+
+ This is the glyph that is defined in the font with the glyph index 0.
+ Not all fonts define it, so it can be null.
+
+
+ The missing glyph.
+
+
+
+
+ This class is pretended for conversion of WOFF font into TTF font
+
+
+
+
+ Convert WOFF font to TTF font
+
+ This stream must contain WOFF font
+ This stream will conatin TTF font after conversion
+
+
+
+ Represents difference type enumeration
+
+
+
+ Comparing an implied attribute value against an explicit value
+
+
+ Comparing 2 elements and one has an attribute the other does not
+
+
+ Comparing 2 attributes with the same name but different values
+
+
+ Comparing 2 attribute lists with the same attributes in different sequence
+
+
+ Comparing 2 CDATA sections with different values
+
+
+ Comparing 2 comments with different values
+
+
+ Comparing 2 document types with different names
+
+
+ Comparing 2 document types with different public identifiers
+
+
+ Comparing 2 document types with different system identifiers
+
+
+ Comparing 2 elements with different tag names
+
+
+ Comparing 2 elements with different number of attributes
+
+
+ Comparing 2 processing instructions with different targets
+
+
+ Comparing 2 processing instructions with different instructions
+
+
+ Comparing 2 different text values
+
+
+ Comparing 2 nodes with different namespace prefixes
+
+
+ Comparing 2 nodes with different namespace URIs
+
+
+ Comparing 2 nodes with different node types
+
+
+ Comparing 2 nodes but only one has any children
+
+
+ Comparing 2 nodes with different numbers of children
+
+
+ Comparing 2 nodes with children whose nodes are in different sequence
+
+
+ Comparing 2 Documents only one of which has a doctype
+
+
+ Comparing 2 Documents only one of which has an XML Prefix Declaration
+
+
+
+ Calculates a 32bit Cyclic Redundancy Checksum (CRC) using the same polynomial
+ used by Zip. This type is used internally by DotNetZip; it is generally not used
+ directly by applications wishing to create, read, or manipulate zip archive
+ files.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns the CRC32 for the specified stream.
+
+ The stream over which to calculate the CRC32
+ the CRC32 calculation
+
+
+
+ Returns the CRC32 for the specified stream, and writes the input into the
+ output stream.
+
+ The stream over which to calculate the CRC32
+ The stream into which to deflate the input
+ the CRC32 calculation
+
+
+
+ Get the CRC32 for the given (word,byte) combo. This is a computation
+ defined by PKzip.
+
+ The word to start with.
+ The byte to combine it with.
+ The CRC-ized result.
+
+
+
+ Update the value for the running CRC32 using the given block of bytes.
+ This is useful when using the CRC32() class in a Stream.
+
+ block of bytes to slurp
+ starting point in the block
+ how many bytes within the block to slurp
+
+
+
+ indicates the total number of bytes read on the CRC stream.
+ This is used when writing the ZipDirEntry when compressing files.
+
+
+
+
+ Indicates the current CRC for all blocks slurped in.
+
+
+
+
+ A Stream that calculates a CRC32 (a checksum) on all bytes read,
+ or on all bytes written.
+
+
+
+ This class can be used to verify the CRC of a ZipEntry when
+ reading from a stream, or to calculate a CRC when writing to a
+ stream. The stream should be used to either read, or write, but
+ not both. If you intermix reads and writes, the results are not
+ defined.
+
+
+ This class is intended primarily for use internally by the
+ DotNetZip library.
+
+
+
+
+
+ The default constructor.
+
+
+ Instances returned from this constructor will leave the underlying stream
+ open upon Close().
+
+ The underlying stream
+
+
+
+ The constructor allows the caller to specify how to handle the underlying
+ stream at close.
+
+ The underlying stream
+ true to leave the underlying stream
+ open upon close of the CrcCalculatorStream.; false otherwise.
+
+
+
+ A constructor allowing the specification of the length of the stream to read.
+
+
+ Instances returned from this constructor will leave the underlying stream open
+ upon Close().
+
+ The underlying stream
+ The length of the stream to slurp
+
+
+
+ A constructor allowing the specification of the length of the stream to
+ read, as well as whether to keep the underlying stream open upon Close().
+
+ The underlying stream
+ The length of the stream to slurp
+ true to leave the underlying stream
+ open upon close of the CrcCalculatorStream.; false otherwise.
+
+
+
+ Read from the stream
+
+ the buffer to read
+ the offset at which to start
+ the number of bytes to read
+ the number of bytes actually read
+
+
+
+ Write to the stream.
+
+ the buffer from which to write
+ the offset at which to start writing
+ the number of bytes to write
+
+
+
+ Flush the stream.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+
+ An I/O error occurs.
+
+
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Releases all resources used by the .
+
+
+
+
+ Closes the stream.
+
+
+
+
+ Gets the total number of bytes run through the CRC32 calculator.
+
+
+ This is either the total number of bytes read, or the total number of bytes
+ written, depending on the direction of this stream.
+
+
+
+
+ Provides the current CRC for all blocks slurped in.
+
+
+
+
+ Indicates whether the underlying stream will be left open when the
+ CrcCalculatorStream is Closed.
+
+
+
+
+ Indicates whether the stream supports reading.
+
+
+
+
+ Indicates whether the stream supports seeking.
+
+
+
+
+ Indicates whether the stream supports writing.
+
+
+
+
+ Not implemented.
+
+
+
+
+ Not implemented.
+
+
+
+
+ Describes how to flush the current deflate operation.
+
+
+ The different FlushType values are useful when using a Deflate in a streaming application.
+
+
+
+ No flush at all.
+
+
+ Closes the current block, but doesn't flush it to
+ the output. Used internally only in hypothetical
+ scenarios. This was supposed to be removed by Zlib, but it is
+ still in use in some edge cases.
+
+
+
+
+ Use this during compression to specify that all pending output should be
+ flushed to the output buffer and the output should be aligned on a byte
+ boundary. You might use this in a streaming communication scenario, so that
+ the decompressor can get all input data available so far. When using this
+ with a ZlibCodec, AvailableBytesIn will be zero after the call if
+ enough output space has been provided before the call. Flushing will
+ degrade compression and so it should be used only when necessary.
+
+
+
+
+ Use this during compression to specify that all output should be flushed, as
+ with FlushType.Sync, but also, the compression state should be reset
+ so that decompression can restart from this point if previous compressed
+ data has been damaged or if random access is desired. Using
+ FlushType.Full too often can significantly degrade the compression.
+
+
+
+ Signals the end of the compression/decompression stream.
+
+
+
+ A class for compressing and decompressing streams using the Deflate algorithm.
+
+
+
+ The DeflateStream is a Decorator on a . It adds DEFLATE compression or decompression to any stream.
+
+ Using this stream, applications can compress or decompress data via
+ stream Read and Write operations. Either compresssion or
+ decompression can occur through either reading or writing. The compression
+ format used is DEFLATE, which is documented in IETF RFC 1951, "DEFLATE
+ Compressed Data Format Specification version 1.3.".
+
+ This class is similar to , except that ZlibStream
+ adds the RFC 1950 - ZLIB
+ framing bytes to a compressed stream when compressing, or expects the RFC1950
+ framing bytes when decompressing. The DeflateStream does not.
+
+
+
+
+
+
+
+ Create a DeflateStream using the specified CompressionMode.
+
+ When mode is CompressionMode.Compress, the DeflateStream
+ will use the default compression level. The "captive" stream will be closed
+ when the DeflateStream is closed.
+
+ This example uses a DeflateStream to compress data from a file, and writes
+ the compressed data to another file.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(fileToCompress + ".deflated"))
+ {
+ using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(fileToCompress & ".deflated")
+ Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+ The stream which will be read or written.
+ Indicates whether the DeflateStream will compress or decompress.
+
+
+
+ Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel.
+
+
+ When mode is CompressionMode.Decompress, the level parameter
+ is ignored. The "captive" stream will be closed when the DeflateStream is
+ closed.
+
+
+
+ This example uses a DeflateStream to compress data from a file, and writes
+ the compressed data to another file.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(fileToCompress + ".deflated"))
+ {
+ using (Stream compressor = new DeflateStream(raw,
+ CompressionMode.Compress,
+ CompressionLevel.BestCompression))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n= -1;
+ while (n != 0)
+ {
+ if (n > 0)
+ compressor.Write(buffer, 0, n);
+ n= input.Read(buffer, 0, buffer.Length);
+ }
+ }
+ }
+ }
+
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(fileToCompress & ".deflated")
+ Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+ The stream to be read or written while deflating or inflating.
+ Indicates whether the DeflateStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness.
+
+
+
+ Create a DeflateStream using the specified CompressionMode, and explicitly specify
+ whether the stream should be left open after Deflation or Inflation.
+
+ The stream which will be read or written. This is called the
+ "captive" stream in other places in this documentation.
+ Indicates whether the DeflateStream will compress or decompress.
+ true if the application would like the stream to
+ remain open after inflation/deflation.
+
+ This constructor allows the application to request that the captive
+ stream remain open after the deflation or inflation occurs. By default,
+ after Close() is called on the stream, the captive stream is also closed. In
+ some cases this is not desired, for example if the stream is a memory stream
+ that will be re-read after compression. Specify true for the leaveOpen
+ parameter to leave the stream open.
+
+ The DeflateStream will use the default compression level.
+
+
+ See the other overloads of this constructor for example code.
+
+
+
+
+
+ Create a DeflateStream using the specified CompressionMode and the
+ specified CompressionLevel, and explicitly specify whether the stream should
+ be left open after Deflation or Inflation.
+
+ The stream which will be read or written.
+ Indicates whether the DeflateStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness.
+ true if the application would like the stream to remain open after inflation/deflation.
+
+ This example shows how to use a DeflateStream to compress data from a file, and store
+ the compressed data into another file.
+
+ using (var output = System.IO.File.Create(fileToCompress + ".deflated"))
+ {
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n= -1;
+ while (n != 0)
+ {
+ if (n > 0)
+ compressor.Write(buffer, 0, n);
+ n= input.Read(buffer, 0, buffer.Length);
+ }
+ }
+ }
+ // can write additional data to the output stream here
+ }
+
+ Using output As FileStream = File.Create(fileToCompress & ".deflated")
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ ' can write additional data to the output stream here.
+ End Using
+
+
+
+ When mode is CompressionMode.Decompress, the level parameter is ignored.
+
+
+ This constructor allows the application to request that the captive stream
+ remain open after the deflation or inflation occurs. By default, after Close()
+ is called on the stream, the captive stream is also closed. In some cases this
+ is not desired, for example if the stream is a that will be re-read after compression. Specify
+ true for the leaveOpen parameter to leave the stream open.
+
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ Dispose the stream.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+ This may or may not result in a Close() call on the captive stream.
+ See the constructors that have a leaveOpen parameter for more information.
+
+
+
+
+ Flush the stream.
+
+
+
+
+ Read data from the stream.
+
+
+ If you wish to use the DeflateStream to compress data while reading,
+ you can create a DeflateStream with CompressionMode.Compress, providing an
+ uncompressed data stream. Then call Read() on that DeflateStream, and the
+ data read will be compressed as you read. If you wish to use the
+ DeflateStream to decompress data while reading, you can create a
+ DeflateStream with CompressionMode.Decompress, providing a readable
+ compressed data stream. Then call Read() on that DeflateStream, and the
+ data read will be decompressed as you read.
+
+ A DeflateStream can be used for Read() or Write(), but not both.
+
+
+ The buffer into which the read data should be placed.
+ the offset within that data array to put the first byte read.
+ the number of bytes to read.
+ the number of bytes actually read
+
+
+
+ Calling this method always throws a .
+
+ this is irrelevant, since it will always throw!
+ this is irrelevant, since it will always throw!
+ irrelevant!
+
+
+
+ Calling this method always throws a NotImplementedException.
+
+ this is irrelevant, since it will always throw!
+
+
+
+ Write data to the stream.
+
+
+
+ If you wish to use the DeflateStream to compress data while writing, you can
+ create a DeflateStream with CompressionMode.Compress, and a writable output
+ stream. Then call Write() on that DeflateStream, providing uncompressed
+ data as input. The data sent to the output stream will be the compressed
+ form of the data written. If you wish to use the DeflateStream to
+ decompress data while writing, you can create a DeflateStream with
+ CompressionMode.Decompress, and a writable output stream. Then call Write()
+ on that stream, providing previously compressed data. The data sent to the
+ output stream will be the decompressed form of the data written.
+
+
+ A DeflateStream can be used for Read() or Write(), but not both.
+
+
+ The buffer holding data to write to the stream.
+ the offset within that data array to find the first byte to write.
+ the number of bytes to write.
+
+
+
+ Compress a string into a byte array.
+
+ A string to compress. The string will first be encoded
+ using UTF8, then compressed.
+ Returns compressed string
+
+
+
+
+ Compress a byte array into a new byte array.
+
+ A buffer to compress.
+ Returns compressed buffer
+
+
+
+ Uncompress it with .
+
+
+
+
+ Uncompress a byte array into a single string.
+
+ A buffer containing GZIP-compressed data.
+ Returns uncompressed string
+
+
+
+
+ Uncompress a byte array into a byte array.
+
+ A buffer containing ZLIB-compressed data.
+ Returns uncompressed buffer
+
+
+
+
+
+ Releases all resources used by the .
+
+
+
+
+ This property sets the flush behavior on the stream.
+
+ See the ZLIB documentation for the meaning of the flush behavior.
+
+
+
+
+ The size of the working buffer for the compression codec.
+
+
+
+ The working buffer is used for all stream operations. The default size is 1024 bytes.
+ The minimum size is 128 bytes. You may get better performance with a larger buffer.
+ Then again, you might not. You would have to test it.
+
+
+ Set this before the first call to Read() or Write() on the stream. If you try to set it
+ afterwards, it will throw.
+
+
+
+
+ The ZLIB strategy to be used during compression.
+ By tweaking this parameter, you may be able to optimize the compression for
+ data with particular characteristics.
+
+
+ Returns the total number of bytes input so far.
+
+
+ Returns the total number of bytes output so far.
+
+
+
+ Token to interrupt long operations
+
+
+
+
+ Indicates whether the stream can be read.
+
+
+ The return value depends on whether the captive stream supports reading.
+
+
+
+
+ Indicates whether the stream supports Seek operations.
+
+
+ Always returns false.
+
+
+
+
+ Indicates whether the stream can be written.
+
+
+ The return value depends on whether the captive stream supports writing.
+
+
+
+
+ Reading this property always throws a NotImplementedException.
+
+
+
+
+ The position of the stream pointer.
+
+
+ Writing this property always throws a NotImplementedException. Reading will
+ return the total bytes written out, if used in writing, or the total bytes
+ read in, if used in reading. The count may refer to compressed bytes or
+ uncompressed bytes, depending on how you've used the stream.
+
+
+
+
+ An enum that provides the various encryption algorithms supported by this
+ library.
+
+
+
+ PkzipWeak implies the use of Zip 2.0 encryption, which is known to be weak and
+ subvertible.
+
+
+ A note on interoperability: Values of PkzipWeak and None are specified in PKWARE's zip
+ specification, and are considered to be "standard". Zip archives produced
+ using these options will be interoperable with many other zip tools and libraries,
+ including Windows Explorer.
+
+
+ Values of WinZipAes128 and WinZipAes256 are not part of the Zip
+ specification, but rather imply the use of a vendor-specific extension from
+ WinZip. If you want to produce interoperable Zip archives, do not use these values.
+ For example, if you produce a zip archive using WinZipAes256, you will be able to
+ open it in Windows Explorer on Windows XP and Vista, but you will not be able to
+ extract entries; trying this will lead to an "unspecified error". For this reason,
+ some people have said that a zip archive that uses WinZip's AES encryption is not
+ actually a zip archive at all. A zip archive produced this way will be readable
+ with the WinZip tool (Version 11 and beyond).
+
+
+ There are other third-party tools and libraries, both commercial and otherwise, that
+ support WinZip's AES encryption. These will be able to read AES-encrypted zip
+ archives produced by DotNetZip, and conversely applications that use DotNetZip to
+ read zip archives will be able to read AES-encrypted archives produced by those
+ tools or libraries. Consult the documentation for those other tools and libraries
+ to find out if WinZip's AES encryption is supported.
+
+
+ In case you care: According to the
+ WinZip specification, the actual AES key used is derived from the via an algorithm that complies with RFC 2898, using an iteration count
+ of 1000. The algorithm is sometimes referred to as PBKDF2, which stands for
+ "Password Based Key Derivation Function #2".
+
+
+ A word about password strength and length: The AES encryption technology is very
+ good, but any system is only as secure as the weakest link. If you want to
+ secure your data, be sure to use a password that is hard to guess. To make it
+ harder to guess (increase its "entropy"), you should make it longer. If you use
+ normal characters from an ASCII keyboard, a password of length 20 will be strong
+ enough that it will be impossible to guess. For more information on that, I'd
+ encourage you to read this
+ article.
+
+ The WinZip AES algorithms are not supported with the version of DotNetZip that
+ runs on the .NET Compact Framework. This is because .NET CF lacks the
+ HMACSHA1 class that is required for producing the archive.
+
+
+
+
+
+ No encryption at all.
+
+
+
+
+ Traditional or Classic pkzip encryption.
+
+
+
+
+ An encryption algorithm that is not supported by DotNetZip.
+
+
+
+
+ An enum for the options when extracting an entry would overwrite an existing file.
+
+
+
+ This enum describes the actions that the library can take when an
+ Extract() or ExtractWithPassword() method is called to extract an
+ entry to a filesystem, and the extraction would overwrite an existing filesystem
+ file.
+
+
+
+
+
+ Throw an exception when extraction would overwrite an existing file. (For
+ COM clients, this is a 0 (zero).)
+
+
+
+
+ When extraction would overwrite an existing file, overwrite the file silently.
+ The overwrite will happen even if the target file is marked as read-only.
+ (For COM clients, this is a 1.)
+
+
+
+
+ When extraction would overwrite an existing file, don't overwrite the file, silently.
+ (For COM clients, this is a 2.)
+
+
+
+
+ When extraction would overwrite an existing file, invoke the ExtractProgress
+ event, using an event type of . In
+ this way, the application can decide, just-in-time, whether to overwrite the
+ file. For example, a GUI application may wish to pop up a dialog to allow
+ the user to choose. You may want to examine the property before making
+ the decision. If, after your processing in the Extract progress event, you
+ want to NOT extract the file, set
+ on the ZipProgressEventArgs.CurrentEntry to DoNotOverwrite.
+ If you do want to extract the file, set ZipEntry.ExtractExistingFile
+ to OverwriteSilently. If you want to cancel the Extraction, set
+ ZipProgressEventArgs.Cancel to true. Cancelling differs from using
+ DoNotOverwrite in that a cancel will not extract any further entries, if
+ there are any. (For COM clients, the value of this enum is a 3.)
+
+
+
+
+ Represents nullable bool enumeration.
+
+
+
+
+ NotDefined type
+
+
+
+
+ False type.
+
+
+
+
+ True type.
+
+
+
+
+ Options for using ZIP64 extensions when saving zip archives.
+
+
+
+
+ The default behavior, which is "Never".
+ (For COM clients, this is a 0 (zero).)
+
+
+
+
+ Do not use ZIP64 extensions when writing zip archives.
+ (For COM clients, this is a 0 (zero).)
+
+
+
+
+ Use ZIP64 extensions when writing zip archives, as necessary.
+ For example, when a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole
+ exceeds 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive.
+ (For COM clients, this is a 1.)
+
+
+
+
+ Always use ZIP64 extensions when writing zip archives, even when unnecessary.
+ (For COM clients, this is a 2.)
+
+
+
+
+ An enum that specifies the source of the ZipEntry.
+
+
+
+
+ Default value. Invalid on a bonafide ZipEntry.
+
+
+
+
+ The entry was instantiated by calling AddFile() or another method that
+ added an entry from the filesystem.
+
+
+
+
+ The entry was instantiated via or
+ .
+
+
+
+
+ The ZipEntry was instantiated by reading a zipfile.
+
+
+
+
+ An enum that specifies the type of timestamp available on the ZipEntry.
+
+
+
+
+ Default value.
+
+
+
+
+ A DOS timestamp with 2-second precision.
+
+
+
+
+ A Windows timestamp with 100-ns precision.
+
+
+
+
+ A Unix timestamp with 1-second precision.
+
+
+
+
+ A Unix timestamp with 1-second precision, stored in InfoZip v1 format. This
+ format is outdated and is supported for reading archives only.
+
+
+
+
+ An enum providing the options when an error occurs during opening or reading
+ of a file or directory to be added to a zip file.
+
+
+
+ This enum describes the actions that the library can take when an error occurs
+ opening or reading a file, as it is being added to or saved into a Zip archive.
+
+
+ In some cases an error will occur when DotNetZip tries to open a file to be
+ added to the zip archive. In other cases, an error might occur after the
+ file has been successfully opened, while DotNetZip is reading the file.
+
+
+ The first problem might occur when calling Adddirectory() on a directory
+ that contains a Clipper .dbf file; the file is locked by Clipper and
+ cannot be opened bby another process. An example of the second problem is
+ the ERROR_LOCK_VIOLATION that results when a file is opened by another
+ process, but not locked, and a range lock has been taken on the file.
+ Microsoft Outlook takes range locks on .PST files.
+
+
+
+
+
+ Throw an exception when an error occurs while zipping. This is the default
+ behavior. (For COM clients, this is a 0 (zero).)
+
+
+
+
+ When an error occurs during zipping, for example a file cannot be opened,
+ skip the file causing the error, and continue zipping. (For COM clients,
+ this is a 1.)
+
+
+
+
+ When an error occurs during zipping, for example a file cannot be opened,
+ retry the operation that caused the error.
+ (For COM clients, this is a 2.)
+
+
+
+
+ When an error occurs, invoke the zipError event. The event type used is
+ . A typical use of this option:
+ a GUI application may wish to pop up a dialog to allow the user to view the
+ error that occurred, and choose an appropriate action. After your
+ processing in the error event, if you want to skip the file, set on the
+ ZipProgressEventArgs.CurrentEntry to Skip. If you want the
+ exception to be thrown, set ZipErrorAction on the CurrentEntry
+ to Throw. If you want to cancel the zip, set
+ ZipProgressEventArgs.Cancel to true. Cancelling differs from using
+ Skip in that a cancel will not save any further entries, if there are any.
+ (For COM clients, the value of this enum is a 3.)
+
+
+
+
+ Delegate for the callback by which the application gives approval for multiple
+ reads of the file stream. This callback is called only when the initial
+ compression operation inflates the size of the file data.
+
+ Size of the uncompressed.
+ Size of the compressed.
+ Name of the file.
+ [true] if approval was read.
+
+
+
+ Delegate for the callback by which the application tells the libraary whether
+ to use compression on the file or not.
+
+ Name of the local file.
+ The file name in archive.
+ [true] if compression is wanted
+
+
+ Using this callback, the application can
+ specify that previously-compressed files (.mp3, .png, .docx, etc) should
+ not be compressed, for example, or can turn on or off compression based on any
+ other factor.
+
+
+
+
+ In an EventArgs type, indicates which sort of progress event is being reported.
+
+
+ There are events for reading, events for saving, and events for extracting.
+
+
+
+
+ Indicates that a Add() operation has started.
+
+
+
+
+ Indicates that an individual entry in the archive has been added.
+
+
+
+
+ Indicates that a Add() operation has completed.
+
+
+
+
+ Indicates that a Read() operation has started.
+
+
+
+
+ Indicates that an individual entry in the archive is about to be read.
+
+
+
+
+ Indicates that an individual entry in the archive has just been read.
+
+
+
+
+ Indicates that a Read() operation has completed.
+
+
+
+
+ The given event reports the number of bytes read so far
+ during a Read() operation.
+
+
+
+
+ Indicates that a Save() operation has started.
+
+
+
+
+ Indicates that an individual entry in the archive is about to be written.
+
+
+
+
+ Indicates that an individual entry in the archive has just been saved.
+
+
+
+
+ Indicates that a Save() operation has completed.
+
+
+
+
+ Indicates that the zip archive has been created in a
+ temporary location during a Save() operation.
+
+
+
+
+ Indicates that the temporary file is about to be renamed to the final archive
+ name during a Save() operation.
+
+
+
+
+ Indicates that the temporary file is has just been renamed to the final archive
+ name during a Save() operation.
+
+
+
+
+ Indicates that the self-extracting archive has been compiled
+ during a Save() operation.
+
+
+
+
+ The given event is reporting the number of source bytes that have run through the compressor so far
+ during a Save() operation.
+
+
+
+
+ Indicates that an entry is about to be extracted.
+
+
+
+
+ Indicates that an entry has just been extracted.
+
+
+
+
+ Indicates that extraction of an entry would overwrite an existing filesystem file.
+
+
+
+
+ The given event is reporting the number of bytes written so far for the current entry
+ during an Extract() operation.
+
+
+
+
+ Indicates that an ExtractAll operation is about to begin.
+
+
+
+
+ Indicates that an ExtractAll operation has completed.
+
+
+
+
+ Indicates that an error has occurred while saving a zip file.
+ This generally means the file cannot be opened, because it has been
+ removed, or because it is locked by another process. It can also
+ mean that the file cannot be Read, because of a range lock conflict.
+
+
+
+
+ Provides information about the progress of a save, read, or extract operation.
+ This is a base class; you will probably use one of the classes derived from this one.
+
+
+
+
+ The total number of entries to be saved or extracted.
+
+
+
+
+ The name of the last entry saved or extracted.
+
+
+
+
+ In an event handler, set this to cancel the save or extract
+ operation that is in progress.
+
+
+
+
+ The type of event being reported.
+
+
+
+
+ Returns the archive name associated to this event.
+
+
+
+
+ The number of bytes read or written so far for this entry.
+
+
+
+
+ Total number of bytes that will be read or written for this entry.
+
+
+
+
+ Provides information about the progress of a Read operation.
+
+
+
+
+ Provides information about the progress of a Add operation.
+
+
+
+
+ Provides information about the progress of a save operation.
+
+
+
+
+ Number of entries saved so far.
+
+
+
+
+ Provides information about the progress of the extract operation.
+
+
+
+
+ Number of entries extracted so far. This is set only if the
+ EventType is Extracting_BeforeExtractEntry or Extracting_AfterExtractEntry, and
+ the Extract() is occurring witin the scope of a call to ExtractAll().
+
+
+
+
+ Returns the extraction target location, a filesystem path.
+
+
+
+
+ Provides information about the an error that occurred while zipping.
+
+
+
+
+ Returns the exception that occurred, if any.
+
+
+
+
+ Returns the name of the file that caused the exception, if any.
+
+
+
+
+ Issued when an ZipEntry.ExtractWithPassword() method is invoked
+ with an incorrect password.
+
+
+
+
+ Base class for all exceptions defined by and throw by the Zip library.
+
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+ The innerException for this exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+ The innerException for this exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ Indicates that a read was attempted on a stream, and bad or incomplete data was
+ received.
+
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+ The innerException for this exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ Issued when an CRC check fails upon extracting an entry from a zip archive.
+
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ Issued when errors occur saving a self-extracting archive.
+
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ Indicates that an operation was attempted on a ZipFile which was not possible
+ given the state of the instance. For example, if you call Save() on a ZipFile
+ which has no filename set, you can get this exception.
+
+
+
+
+ Default ctor.
+
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The message in the exception.
+ The innerException for this exception.
+
+
+
+ Come on, you know how exceptions work. Why are you looking at this documentation?
+
+ The serialization info for the exception.
+ The streaming context from which to deserialize.
+
+
+
+ A class for compressing and decompressing GZIP streams.
+
+
+
+ The GZipStream is a Decorator on a . It adds GZIP compression or decompression to any stream.
+
+ Like the Compression.GZipStream in the .NET Base
+ Class Library, the Ionic.Zlib.GZipStream can compress while writing, or decompress
+ while reading, but not vice versa. The compression method used is GZIP, which is
+ documented in IETF RFC 1952,
+ "GZIP file format specification version 4.3".
+ A GZipStream can be used to decompress data (through Read()) or to compress
+ data (through Write()), but not both.
+ If you wish to use the GZipStream to compress data, you must wrap it around a
+ write-able stream. As you call Write() on the GZipStream, the data will be
+ compressed into the GZIP format. If you want to decompress data, you must wrap the
+ GZipStream around a readable stream that contains an IETF RFC 1952-compliant stream.
+ The data will be decompressed as you call Read() on the GZipStream.
+ Though the GZIP format allows data from multiple files to be concatenated
+ together, this stream handles only a single segment of GZIP format, typically
+ representing a single file.
+
+ This class is similar to and .
+ ZlibStream handles RFC1950-compliant streams.
+ handles RFC1951-compliant streams. This class handles RFC1952-compliant streams.
+
+
+
+
+
+
+
+ Create a GZipStream using the specified CompressionMode.
+
+ The stream which will be read or written.
+ Indicates whether the GZipStream will compress or decompress.
+
+ This example shows how to use a GZipStream to compress data.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(outputFile))
+ {
+ using (Stream compressor = new GZipStream(raw, CompressionMode.Compress))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Dim outputFile As string = (fileToCompress & ".compressed")
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(outputFile)
+ Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+
+ This example shows how to use a GZipStream to uncompress a file.
+
+ private void GunZipFile(string filename)
+ {
+ if (!filename.EndsWith(".gz))
+ throw new ArgumentException("filename");
+ var DecompressedFile = filename.Substring(0,filename.Length-3);
+ byte[] working = new byte[WORKING_BUFFER_SIZE];
+ int n= 1;
+ using (System.IO.Stream input = System.IO.File.OpenRead(filename))
+ {
+ using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true))
+ {
+ using (var output = System.IO.File.Create(DecompressedFile))
+ {
+ while (n !=0)
+ {
+ n= decompressor.Read(working, 0, working.Length);
+ if (n > 0)
+ {
+ output.Write(working, 0, n);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Private Sub GunZipFile(ByVal filename as string)
+ If Not (filename.EndsWith(".gz)) Then
+ Throw New ArgumentException("filename")
+ End If
+ Dim DecompressedFile as string = filename.Substring(0,filename.Length-3)
+ Dim working(WORKING_BUFFER_SIZE) as Byte
+ Dim n As Integer = 1
+ Using input As Stream = File.OpenRead(filename)
+ Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True)
+ Using output As Stream = File.Create(UncompressedFile)
+ Do
+ n= decompressor.Read(working, 0, working.Length)
+ If n > 0 Then
+ output.Write(working, 0, n)
+ End IF
+ Loop While (n > 0)
+ End Using
+ End Using
+ End Using
+ End Sub
+
+
+ When mode is CompressionMode.Compress, the GZipStream will use the
+ default compression level.
+ As noted in the class documentation, the CompressionMode (Compress or
+ Decompress) also establishes the "direction" of the stream. A GZipStream with
+ CompressionMode.Compress works only through Write(). A GZipStream with
+ CompressionMode.Decompress works only through Read().
+
+
+
+
+ Create a GZipStream using the specified CompressionMode and the specified CompressionLevel.
+
+ The stream to be read or written while deflating or inflating.
+ Indicates whether the GZipStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness.
+
+ This example shows how to use a GZipStream to compress a file into a .gz file.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(fileToCompress + ".gz"))
+ {
+ using (Stream compressor = new GZipStream(raw,
+ CompressionMode.Compress,
+ CompressionLevel.BestCompression))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(fileToCompress & ".gz")
+ Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+
+ The CompressionMode (Compress or Decompress) also establishes the "direction" of the
+ stream. A GZipStream with CompressionMode.Compress works only through Write(). A
+ GZipStream with CompressionMode.Decompress works only through Read().
+
+
+
+
+ Create a GZipStream using the specified CompressionMode, and explicitly
+ specify whether the stream should be left open after Deflation or Inflation.
+
+ The stream which will be read or written. This is called the
+ "captive" stream in other places in this documentation.
+ Indicates whether the GZipStream will compress or decompress.
+ true if the application would like the base stream to remain open after inflation/deflation.
+
+
+ This constructor allows the application to request that the captive stream
+ remain open after the deflation or inflation occurs. By default, after
+ Close() is called on the stream, the captive stream is also closed. In some
+ cases this is not desired, for example if the stream is a memory stream that
+ will be re-read after compressed data has been written to it. Specify true
+ for the leaveOpen parameter to leave the stream open.
+
+
+ The (Compress or Decompress) also establishes
+ the "direction" of the stream. A GZipStream with
+ CompressionMode.Compress works only through Write(). A GZipStream
+ with CompressionMode.Decompress works only through Read().
+
+
+ The GZipStream will use the default compression level. If you want to
+ specify the compression level, see .
+
+
+ See the other overloads of this constructor for example code.
+
+
+
+
+
+ Create a GZipStream using the specified CompressionMode and the specified CompressionLevel,
+ and explicitly specify whether the stream should be left open after Deflation or Inflation.
+
+ The stream which will be read or written.
+ Indicates whether the GZipStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness.
+ true if the application would like the stream to remain open after inflation/deflation.
+
+ This example shows how to use a DeflateStream to compress data.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(outputFile))
+ {
+ using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Dim outputFile As string = (fileToCompress & ".compressed")
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(outputFile)
+ Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+
+
+ This constructor allows the application to request that the captive stream remain open after
+ the deflation or inflation occurs. By default, after Close() is called on the stream, the
+ captive stream is also closed. In some cases this is not desired, for example if the stream
+ is a memory stream that will be re-read after compressed data has been written to it. Specify true for the
+ leaveOpen parameter to leave the stream open.
+
+
+ As noted in the class documentation,
+ the CompressionMode (Compress or Decompress) also establishes the "direction" of the stream.
+ A GZipStream with CompressionMode.Compress works only through Write(). A GZipStream with
+ CompressionMode.Decompress works only through Read().
+
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ Dispose the stream.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+ This may or may not result in a Close() call on the captive stream.
+ See the ctor's with leaveOpen parameters for more information.
+
+
+
+
+ Flush the stream.
+
+
+
+
+ Read and decompress data from the source stream.
+
+
+ With a GZipStream, decompression is done through reading.
+
+
+
+ byte[] working = new byte[WORKING_BUFFER_SIZE];
+ using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile))
+ {
+ using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true))
+ {
+ using (var output = System.IO.File.Create(_DecompressedFile))
+ {
+ int n;
+ while ((n= decompressor.Read(working, 0, working.Length)) !=0)
+ {
+ output.Write(working, 0, n);
+ }
+ }
+ }
+ }
+
+
+ The buffer into which the decompressed data should be placed.
+ the offset within that data array to put the first byte read.
+ the number of bytes to read.
+ the number of bytes actually read
+
+
+
+ Calling this method always throws a .
+
+ irrelevant; it will always throw!
+ irrelevant; it will always throw!
+ irrelevant!
+
+
+
+ Calling this method always throws a NotImplementedException.
+
+ irrelevant; this method will always throw!
+
+
+
+ Write data to the stream.
+
+
+
+ If you wish to use the GZipStream to compress data while writing, you can create a
+ GZipStream with CompressionMode.Compress, and a writable output stream. Then call
+ Write() on that GZipStream, providing uncompressed data as input. The data sent
+ to the output stream will be the compressed form of the data written.
+
+
+ A GZipStream can be used for Read() or Write(), but not both. Writing implies compression.
+ Reading implies decompression.
+
+
+ The buffer holding data to write to the stream.
+ the offset within that data array to find the first byte to write.
+ the number of bytes to write.
+
+
+
+ Compress a string into a byte array.
+
+ A string to compress. The string will first be encoded
+ using UTF8, then compressed.
+ Returns compressed stream
+
+
+
+
+ Compress a byte array into a new byte array.
+
+ A buffer to compress.
+ Returns compressed buffer
+
+
+
+ Uncompress it with .
+
+
+
+
+ Uncompress a byte array into a single string.
+
+ A buffer containing GZIP-compressed data.
+ Returns uncompressed string
+
+
+
+
+ Uncompress a byte array into a byte array.
+
+ A buffer containing ZLIB-compressed data.
+ Returns uncompressed buffer
+
+
+
+
+
+ Releases all resources used by the .
+
+
+
+
+ The Comment on the GZIP stream.
+
+
+
+ The GZIP format allows for each file to optionally have an associated comment stored with the
+ file. The comment is encoded with the ISO-8859-1 code page. To include a comment in
+ a GZIP stream you create, set this property before calling Write() for the first time
+ on the GZipStream.
+
+
+ When using GZipStream to decompress, you can retrieve this property after the first
+ call to Read(). If no comment has been set in the GZIP bytestream, the Comment
+ property will return null (Nothing in VB).
+
+
+
+
+
+ The FileName for the GZIP stream.
+
+
+
+ The GZIP format optionally allows each file to have an associated filename. When
+ compressing data (through Write()), set this FileName before calling Write() the first
+ time on the GZipStream. The actual filename is encoded into the GZIP bytestream with
+ the ISO-8859-1 code page, according to RFC 1952. It is the application's responsibility to
+ insure that the FileName can be encoded and decoded correctly with this code page.
+
+
+ When decompressing (through Read()), you can retrieve this value any time after the
+ first Read(). In the case where there was no filename encoded into the GZIP
+ bytestream, the property will return null (Nothing in VB).
+
+
+
+
+
+ The CRC on the GZIP stream.
+
+
+ This is used for internal error checking. You probably don't need to look at this property.
+
+
+
+
+ This property sets the flush behavior on the stream.
+
+
+
+
+ The size of the working buffer for the compression codec.
+
+
+
+ The working buffer is used for all stream operations. The default size is 1024 bytes.
+ The minimum size is 128 bytes. You may get better performance with a larger buffer.
+ Then again, you might not. You would have to test it.
+
+
+ Set this before the first call to Read() or Write() on the stream. If you try to set it
+ afterwards, it will throw.
+
+
+
+
+ Returns the total number of bytes input so far.
+
+
+ Returns the total number of bytes output so far.
+
+
+
+ Indicates whether the stream can be read.
+
+
+ The return value depends on whether the captive stream supports reading.
+
+
+
+
+ Indicates whether the stream supports Seek operations.
+
+
+ Always returns false.
+
+
+
+
+ Indicates whether the stream can be written.
+
+
+ The return value depends on whether the captive stream supports writing.
+
+
+
+
+ Reading this property always throws a NotImplementedException.
+
+
+
+
+ The position of the stream pointer.
+
+
+ Writing this property always throws a NotImplementedException. Reading will
+ return the total bytes written out, if used in writing, or the total bytes
+ read in, if used in reading. The count may refer to compressed bytes or
+ uncompressed bytes, depending on how you've used the stream.
+
+
+
+
+ The last modified time for the GZIP stream.
+
+ GZIP allows the storage of a last modified time with each GZIP entry.
+ When compressing data, you can set this before the first call to Write(). When
+ decompressing, you can retrieve this value any time after the first call to
+ Read().
+
+
+
+ Represents NullableInt64 structure.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value.
+
+
+
+ Gets the value or default.
+
+ Returns value,
+
+
+
+ Gets the value or default.
+
+ The default value.
+ Returns value,
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets a value indicating whether this instance has value.
+
+
+ true if this instance has value; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+
+
+ Represents a single entry in a ZipFile. Typically, applications get a ZipEntry
+ by enumerating the entries within a ZipFile, or by adding an entry to a ZipFile.
+
+
+
+
+ Default constructor.
+
+
+ Applications should never need to call this directly. It is exposed to
+ support COM Automation environments.
+
+
+
+
+ Sets the NTFS Creation, Access, and Modified times for the given entry.
+
+
+
+ When adding an entry from a file or directory, the Creation, Access, and
+ Modified times for the given entry are automatically set from the filesystem
+ values. When adding an entry from a stream or string, the values are
+ implicitly set to DateTime.Now. The application may wish to set these
+ values to some arbitrary value, before saving the archive. If you set the
+ times using this method, the property also gets
+ set, to the same value provided for mtime.
+
+
+ The values you set here will be retrievable with the ,
+ and read-only properties.
+
+
+ When this method is called, the flag is automatically set.
+
+
+ DateTime values provided here without a DateTimeKind are assumed to be Local Time.
+
+
+ the creation time of the entry.
+ the last access time of the entry.
+ the last modified time of the entry.
+
+
+
+
+
+
+
+
+ This method is obsolete.
+
+ The created.
+ The accessed.
+ The modified.
+
+
+ Provides a string representation of the instance.
+ a string representation of the instance.
+
+
+
+ Extract the entry to the filesystem, starting at the current working directory.
+
+
+ This method has a bunch of overloads! One of them is sure to be
+ the right one for you... If you don't like these, check out the
+ ExtractWithPassword() methods.
+
+
+
+
+ This method extracts an entry from a zip file into the current working
+ directory. The path of the entry as extracted is the full path as specified in
+ the zip archive, relative to the current working directory. After the file is
+ extracted successfully, the file attributes and timestamps are set.
+
+ The action taken when extraction an entry would overwrite an existing file
+ is determined by the property.
+
+
+ See the remarks the property, for some details
+ about how the last modified time of the file is set after extraction.
+
+
+
+
+
+ Extract the entry to a file in the filesystem, potentially overwriting
+ any existing file. This method is Obsolete.
+
+
+
+ This method is Obsolete, please don't use it. Please use method instead.
+
+
+ See the remarks on the property, for some details
+ about how the last modified time of the created file is set after extraction.
+
+
+
+ true if the caller wants to overwrite an existing bfile
+ by the same name in the filesystem.
+
+
+
+
+
+ Extract the entry to a file in the filesystem, using the specified behavior
+ when extraction would overwrite an existing file.
+
+
+
+ See the remarks on the property, for some details
+ about how the last modified time of the file is set after extraction.
+
+
+ The action to take if extraction would
+ overwrite an existing file.
+
+
+
+ Extracts the entry to the specified stream.
+
+
+
+ The caller can specify any write-able stream, for example , a , a , or
+ ASP.NET's Response.OutputStream.
+ The content will be decrypted and decompressed as necessary. If the entry is
+ encrypted and no password is provided, this method will throw.
+
+
+ the stream to which the entry should be extracted.
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory.
+
+ the pathname of the base directory
+
+
+
+
+ This example extracts only the entries in a zip file that are .txt files,
+ into a directory called "textfiles".
+
+ using (ZipFile zip = ZipFile.Read("PackedDocuments.zip"))
+ {
+ foreach (string s1 in zip.EntryFilenames)
+ {
+ if (s1.EndsWith(".txt"))
+ {
+ zip[s1].Extract("textfiles");
+ }
+ }
+ }
+
+ Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip")
+ Dim s1 As String
+ For Each s1 In zip.EntryFilenames
+ If s1.EndsWith(".txt") Then
+ zip(s1).Extract("textfiles")
+ End If
+ Next
+ End Using
+
+
+ Using this method, existing entries in the filesystem will not be
+ overwritten. If you would like to force the overwrite of existing files, see the
+ property, or call .
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory,
+ and potentially overwriting existing files in the filesystem.
+
+
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+
+ the pathname of the base directory
+ If true, overwrite any existing files if necessary
+ upon extraction.
+
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory, and
+ using the specified behavior when extraction would overwrite an existing file.
+
+
+
+ See the remarks on the property, for some details
+ about how the last modified time of the created file is set.
+
+
+
+
+ string sZipPath = "Airborne.zip";
+ string sFilePath = "Readme.txt";
+ string sRootFolder = "Digado";
+ using (ZipFile zip = ZipFile.Read(sZipPath))
+ {
+ if (zip.EntryFileNames.Contains(sFilePath))
+ {
+ // use the string indexer on the zip file
+ zip[sFileName].Extract(sRootFolder,
+ ExtractExistingFileAction.OverwriteSilently);
+ }
+ }
+
+
+ Dim sZipPath as string = "Airborne.zip"
+ Dim sFilePath As string = "Readme.txt"
+ Dim sRootFolder As string = "Digado"
+ Using zip As ZipFile = ZipFile.Read(sZipPath)
+ If zip.EntryFileNames.Contains(sFilePath)
+ ' use the string indexer on the zip file
+ zip(sFilePath).Extract(sRootFolder, _
+ ExtractExistingFileAction.OverwriteSilently)
+ End If
+ End Using
+
+
+ the pathname of the base directory
+
+ The action to take if extraction would overwrite an existing file.
+
+
+
+
+ Extract the entry to the filesystem, using the current working directory
+ and the specified password.
+
+
+ This method has a bunch of overloads! One of them is sure to be
+ the right one for you...
+
+
+
+
+ Existing entries in the filesystem will not be overwritten. If you would
+ like to force the overwrite of existing files, see the property, or call .
+
+ See the remarks on the property for some details
+ about how the "last modified" time of the created file is set.
+
+
+
+ In this example, entries that use encryption are extracted using a particular password.
+
+ using (var zip = ZipFile.Read(FilePath))
+ {
+ foreach (ZipEntry e in zip)
+ {
+ if (e.UsesEncryption)
+ e.ExtractWithPassword("Secret!");
+ else
+ e.Extract();
+ }
+ }
+
+ Using zip As ZipFile = ZipFile.Read(FilePath)
+ Dim e As ZipEntry
+ For Each e In zip
+ If (e.UsesEncryption)
+ e.ExtractWithPassword("Secret!")
+ Else
+ e.Extract
+ End If
+ Next
+ End Using
+
+ The Password to use for decrypting the entry.
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory,
+ and using the specified password.
+
+
+
+
+ Existing entries in the filesystem will not be overwritten. If you would
+ like to force the overwrite of existing files, see the property, or call .
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+
+ The pathname of the base directory.
+ The Password to use for decrypting the entry.
+
+
+
+ Extract the entry to a file in the filesystem, potentially overwriting
+ any existing file.
+
+
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+
+ true if the caller wants to overwrite an existing
+ file by the same name in the filesystem.
+ The Password to use for decrypting the entry.
+
+
+
+
+ Extract the entry to a file in the filesystem, relative to the current directory,
+ using the specified behavior when extraction would overwrite an existing file.
+
+ The action to take if extraction would overwrite an existing file.
+ The Password to use for decrypting the entry.
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory,
+ and potentially overwriting existing files in the filesystem.
+
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+ the pathname of the base directory
+ If true, overwrite any existing files if necessary
+ upon extraction.
+ The Password to use for decrypting the entry.
+
+
+
+
+ Extract the entry to the filesystem, starting at the specified base directory, and
+ using the specified behavior when extraction would overwrite an existing file.
+
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+ the pathname of the base directory
+ The action to take if extraction would
+ overwrite an existing file.
+ The Password to use for decrypting the entry.
+
+
+
+ Extracts the entry to the specified stream, using the specified Password.
+ For example, the caller could extract to Console.Out, or to a MemoryStream.
+
+
+ See the remarks on the LastModified property, for some details
+ about how the last modified time of the created file is set.
+
+ the stream to which the entry should be extracted.
+ The password to use for decrypting the entry.
+
+
+
+ Opens the backing stream for the zip entry in the archive, for reading.
+
+
+
+ DotNetZip offers a variety of ways to extract entries from a zip file. This
+ method allows an application to extract and entry by reading a Stream.
+
+
+ The return value is a . Use it
+ as you would any stream for reading. The data you get by calling on that stream will be decrypted and
+ decompressed.
+
+
+ CrcCalculatorStream adds one additional feature: it keeps a CRC32 checksum
+ on the bytes of the stream as it is read. The CRC value is available in the
+ property on the
+ CrcCalculatorStream. When the read is complete, this CRC
+ should be checked against the property
+ on the ZipEntry to validate the content of the ZipEntry. You don't
+ have to validate the entry using the CRC, but you should. Check the example
+ for how to do this.
+
+
+ If the entry is protected with a password, then you need to provide a
+ password prior to calling , either by setting the
+ property on the entry, or the property on the ZipFile itself. Or, you can
+ use , the overload of OpenReader that
+ accepts a password parameter.
+
+
+ If you want to extract entry data into a stream that is already opened, like
+ a , consider the method.
+
+
+
+ This example shows how to open a zip archive, then read in a named entry via
+ a stream. After the read loop is complete, the code compares the calculated
+ during the read loop with the expected CRC on the ZipEntry, to verify
+ the extraction.
+
+ using (ZipFile zip = new ZipFile(ZipFileToRead))
+ {
+ ZipEntry e1= zip["Elevation.mp3"];
+ using (Ionic.Zlib.CrcCalculatorStream s = e1.OpenReader())
+ {
+ byte[] buffer = new byte[4096];
+ int n, totalBytesRead= 0;
+ do {
+ n = s.Read(buffer,0, buffer.Length);
+ totalBytesRead+=n;
+ } while (n>0);
+ if (s.Crc32 != e1.Crc32)
+ throw new InvalidOperationException(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32));
+ if (totalBytesRead != e1.UncompressedSize)
+ throw new InvalidOperationException(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize));
+ }
+ }
+
+ Using zip As New ZipFile(ZipFileToRead)
+ Dim e1 As ZipEntry = zip.Item("Elevation.mp3")
+ Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader
+ Dim n As Integer
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim totalBytesRead As Integer = 0
+ Do
+ n = s.Read(buffer, 0, buffer.Length)
+ totalBytesRead = (totalBytesRead + n)
+ Loop While (n > 0)
+ If (s.Crc32 <> e1.Crc32) Then
+ throw new InvalidOperationException(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32))
+ End If
+ If (totalBytesRead <> e1.UncompressedSize) Then
+ throw new InvalidOperationException(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize))
+ End If
+ End Using
+ End Using
+
+
+ The Stream for reading.
+
+
+
+ Opens the backing stream for an encrypted zip entry in the archive, for reading.
+
+
+
+ See the documentation on the method for full
+ details. This overload allows the application to specify a password for the
+ ZipEntry to be read.
+
+
+ The password to use for decrypting the entry.
+ The Stream for reading.
+
+
+
+ The time and date at which the file indicated by the ZipEntry was last modified.
+
+
+
+ The DotNetZip library sets the LastModified value for an entry, equal to the
+ Last Modified time of the file in the filesystem. If an entry is added from
+ a stream, in which case no Last Modified attribute is available, the library
+ uses System.DateTime.Now for this value, for the given entry.
+
+
+ This property allows the application to retrieve and possibly set the
+ LastModified value on an entry, to an arbitrary value. values with a
+ setting of DateTimeKind.Unspecified are taken to be expressed as
+ DateTimeKind.Local.
+
+
+ Be aware that because of the way the PKZip specification describes how times
+ are stored in the zip file, the full precision of the System.DateTime
+ datatype is not stored for the last modified time when saving zip files.
+ For more information on how times are formatted, see the PKZip
+ specification.
+
+ The actual last modified time of a file can be stored in two ways in the
+ zip file: first in the so-called "DOS" format, which has a 2-second
+ precision. Values are rounded to the nearest even second. For example, if the
+ time on the file is 12:34:43, then it will be stored as 12:34:44. This first
+ value is accessible via the LastModified property. Also, the last
+ modified time can optionally be stored as an 8-byte integer quantity expressed
+ as the number of 1/10 milliseconds (in other words the number of 100 nanosecond
+ units) since January 1, 1601 (UTC). This is the so-called Win32 time. This
+ time is accessible via the ModifiedTime property. Zip tools and libraries will
+ always at least handle (read or write) the DOS time, and may also handle the
+ Win32 time. When reading ZIP files, The DotNetZip library reads the Win32 time,
+ if it is stored in the entry, and sets both LastModified and ModifiedTime
+ to that value. When writing ZIP files, the DotNetZip library will write both
+ time quantities.
+
+ The last modified time of the file created upon a call to
+ ZipEntry.Extract() may be adjusted during extraction to compensate
+ for differences in how the .NET Base Class Library deals with daylight
+ saving time (DST) versus how the Windows filesystem deals with daylight
+ saving time. Raymond Chen provides
+ some good context.
+
+
+ In a nutshell: Daylight savings time rules change regularly. In 2007, for
+ example, the inception week of DST changed. In 1977, DST was in place all
+ year round. In 1945, likewise. And so on. Win32 does not attempt to guess
+ which time zone rules were in effect at the time in question. It will
+ render a time as "standard time" and allow the app to change to DST as
+ necessary. .NET makes a different choice.
+
+
+ Compare the output of FileInfo.LastWriteTime.ToString("f") with what you
+ see in the Windows Explorer property sheet for a file that was last
+ written to on the other side of the DST transition. For example, suppose
+ the file was last modified on October 17, 2003, during DST but DST is not
+ currently in effect. Explorer's file properties reports Thursday, October
+ 17, 2003, 8:45:38 AM, but .NETs FileInfo reports Thursday, October 17,
+ 2003, 9:45 AM.
+
+
+ Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: Pacific
+ STANDARD Time. Even though October 17 of that year occurred during Pacific
+ Daylight Time, Win32 displays the time as standard time because that's
+ what time it is NOW.
+
+
+ .NET BCL assumes that the current DST rules were in place at the time in
+ question. So, .NET says, "Well, if the rules in effect now were also in
+ effect on October 17, 2003, then that would be daylight time" so it
+ displays "Thursday, October 17, 2003, 9:45 AM PDT" - daylight time.
+
+
+ So .NET gives a value which is more intuitively correct, but is also
+ potentially incorrect, and which is not invertible. Win32 gives a value
+ which is intuitively incorrect, but is strictly correct.
+
+
+ Because of this funkiness, this library adds one hour to the LastModified
+ time on the extracted file, if necessary. That is to say, if the time in
+ question had occurred in what the .NET Base Class Library assumed to be
+ DST. This assumption may be wrong given the constantly changing DST
+ rules, but it is the best we can do.
+
+
+
+
+
+ Last Modified time for the file represented by the entry.
+
+
+ This value corresponds to the "last modified" time in the NTFS file times
+ as described in the Zip
+ specification. This value is different from .
+
+ Let me explain. Originally, waaaaay back in 1989 when the ZIP
+ specification was originally described by the esteemed Mr. Phil Katz, the
+ dominant operating system of the time was MS-DOS. MSDOS stored file times with a
+ 2-second precision, because, c'mon, who is ever going to need better
+ resolution than THAT? And so ZIP files, regardless of the platform on which
+ the zip file was created, store file times in exactly the same format that DOS used in
+ 1989.
+ Since then, the ZIP spec has evolved, but the internal format for file
+ timestamps remains the same. Despite the fact that the way times are stored in
+ a zip file is rooted in DOS heritage, any program on any operating system can
+ format a time in this way, and most zip tools and libraries DO - they round file
+ times to the nearest even second and store it just like DOS did 20 years ago.
+
+ PKWare extended the ZIP specification to allow a zip file to store what
+ is called "NTFS Times" for a file. These are the last write, last
+ access, and file creation times of a particular file. These
+ metadata are not actually specific to NTFS. They are tracked for each file by
+ NTFS, but they are also tracked by other filesystems. DotNetZip represents this
+ with the ModifiedTime, AccessedTime and CreationTime properties on a
+ ZipEntry.
+ Inside a zip file, these three distinct timestamps are stored in the same
+ format that Windows NTFS uses to store file times. Rather than a resolution of 2
+ seconds, NTFS times have a resolution of 100 nanoseconds. And, just as with the
+ DOS time, any tool or library on any operating system is capable of formatting a
+ time in this way and embedding it into the zip file. The key is, not all zip
+ tools or libraries do. Storing the higher-precision times for each entry is
+ optional for zip files, and many tools and libraries don't use the option,
+ though it is much nicer than the DOS time. And futher, there are also cases
+ where the timestamp of the file entry is not known, and is not stored. For
+ example, this happens when content for the entry is obtained from a stream. The
+ bottom line is that the higher-resolution time is not guaranteed to be present
+ for a ZipEntry. The old DOS time, represented by , is
+ guaranteed to be present, though it sometimes unset.
+ Ok, getting back to the question about how the LastModified
+ property relates to this ModifiedTime property... LastModified is always
+ set, while ModifiedTime is not. (The other times stored in the NTFS times
+ extension, CreationTime and AccessedTime also may not be set on an entry
+ that is read from an existing zip file.) When reading a zip file, then
+ LastModified takes the DOS time that is stored with the file. If the DOS time
+ has been stored as zero in the zipfile, then this library will use
+ DateTime.Now for the LastModified value. If the ZIP file was
+ created by an evolved tool, then there will also be NTFS times in the zip file.
+ In that case, this library will read those times, and set LastModified
+ and ModifiedTime to the same value, the one corresponding to the last write time
+ of the file. If there are no "NTFS times" stored for the entry, then
+ ModifiedTime remains unset (likewise AccessedTime and CreationTime), and
+ LastModified keeps its DOS time.
+ When creating zip files with this library, then the NTFS time properties
+ (ModifiedTime, AccessedTime, and CreationTime) are always set on the ZipEntry
+ instance, and these data are always stored in the zip archive for each entry. If
+ you add an entry from an actual filesystem file, then the entry gets the actual
+ NTFS times for that file. If you add an entry from a stream, or a string, then
+ the times get the value DateTime.Now. In this case LastModified
+ and ModifiedTime will be identical, to 2 seconds of precision. You can
+ explicitly set the CreationTime, AccessedTime, and ModifiedTime of an entry
+ using . Those changes
+ are not made permanent in the zip file until you call or one of its cousins.
+
+ And that is why ModifiedTime may or may not be meaningful, and it may or may not agree
+ exactly with the LastModified time on the ZipEntry.
+
+
+ I'll bet you didn't think one person could type so much about time, eh? And reading
+ it was so enjoyable, too! Well, in appreciation, maybe you should
+ donate?
+
+
+
+
+
+
+
+
+ Last Access time for the file represented by the entry.
+
+
+ This value may or may not be meaningful. If the ZipEntry was read from an existing
+ Zip archive, this information may not be available. For an explanation of why, see
+ .
+
+
+
+
+
+
+ The file creation time for the file represented by the entry.
+
+
+ This value may or may not be meaningful. If the ZipEntry was read
+ from an existing zip archive, and the creation time was not set on the entry
+ when the zip file was created, then this property may be meaningless. For an
+ explanation of why, see .
+
+
+
+
+
+
+ Specifies whether the Creation, Access, and Modified times for the
+ given entry will be emitted in "Windows format" when the zip archive is saved.
+
+
+
+ An application creating a zip archive can use this flag to explicitly
+ specify that the file times for the entry should or should not be stored in
+ the zip archive in the format used by Windows. The default value of this
+ property is true.
+
+
+ When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are automatically set from the
+ filesystem values. When adding an entry from a stream or string, all three
+ values are implicitly set to DateTime.Now. Applications can also explicitly
+ set those times by calling .
+
+
+ PKWARE's
+ zip specification describes multiple ways to format these times in a
+ zip file. One is the format Windows applications normally use: 100ns ticks
+ since Jan 1, 1601 UTC. The other is a format Unix applications typically
+ use: seconds since Jan 1, 1970 UTC. Each format can be stored in an "extra
+ field" in the zip entry when saving the zip archive. The former uses an
+ extra field with a Header Id of 0x000A, while the latter uses a header ID of
+ 0x5455.
+
+
+ Not all tools and libraries can interpret these fields. Windows compressed
+ folders is one that can read the Windows Format timestamps, while I believe
+ the Infozip tools can read the Unix
+ format timestamps. Some tools and libraries may be able to read only one or
+ the other.
+
+
+ The times stored are taken from , , and .
+
+
+ This property is not mutually exclusive from the property.
+ It is possible that a zip entry can embed the timestamps in both
+ forms.
+
+
+ Normally you will use the property, to specify the
+ behavior for all entries in a zip, rather than the property on each
+ individual entry.
+
+
+
+
+
+
+
+
+
+
+ Specifies whether the Creation, Access, and Modified times for the given
+ entry will be emitted in "Unix(tm) format" when the zip archive is saved.
+
+
+
+ An application creating a zip archive can use this flag to explicitly
+ specify that the file times for the entry should or should not be stored in
+ the zip archive in the format used by Unix. By default this flag is
+ false.
+
+
+ When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are automatically set from the
+ filesystem values. When adding an entry from a stream or string, all three
+ values are implicitly set to DateTime.Now. Applications can also explicitly
+ set those times by calling .
+
+
+ PKWARE's
+ zip specification describes multiple ways to format these times in a
+ zip file. One is the format Windows applications normally use: 100ns ticks
+ since Jan 1, 1601 UTC. The other is a format Unix applications typically
+ use: seconds since Jan 1, 1970 UTC. Each format can be stored in an "extra
+ field" in the zip entry when saving the zip archive. The former uses an
+ extra field with a Header Id of 0x000A, while the latter uses a header ID of
+ 0x5455.
+
+
+ Not all tools and libraries can interpret these fields. Windows compressed
+ folders is one that can read the Windows Format timestamps, while I believe
+ the Infozip tools can read the Unix
+ format timestamps. Some tools and libraries may be able to read only one or
+ the other.
+
+
+ The times stored are taken from , , and .
+
+
+ This property is not mutually exclusive from the flag. It is possible that a
+ zip entry can embed the timestamps in both forms.
+
+
+ Normally you will use the property, to specify the
+ behavior for all entries, rather than the property on each individual entry.
+
+
+
+
+
+
+
+
+
+
+
+ The type of timestamp attached to the ZipEntry.
+
+
+ This property is valid only for a ZipEntry that was read from a zip archive.
+ It indicates the type of timestamp attached to the entry.
+
+
+
+
+
+
+ The file attributes for the entry.
+
+
+
+ The attributes in NTFS include
+ ReadOnly, Archive, Hidden, System, and Indexed. When adding a
+ ZipEntry to a ZipFile, these attributes are set implicitly when
+ adding an entry from the filesystem. When adding an entry from a stream or
+ string, the Attributes are not set.
+
+
+ When reading a ZipEntry from a ZipFile, the attributes are set
+ according to the data stored in the ZipFile. If you extract the entry from
+ the archive to a disk file, DotNetZip will set the attributes on the
+ resulting file accordingly.
+
+
+ The attributes can be set explicitly by the application for whatever
+ purpose. For example the application may wish to set the
+ FileAttributes.ReadOnly bit for all entries added to an archive, so that on
+ unpack, this attribute will be set on the extracted file. Any changes you
+ make to this property are made permanent only when you call a Save() method
+ on the ZipFile instance that contains the ZipEntry.
+
+
+ For example, an application may wish to zip up a directory and set the
+ ReadOnly bit on every file in the archive, so that upon later extraction,
+ the resulting files will be marked as ReadOnly. Not every extraction tool
+ respects these attributes, but if you unpack with DotNetZip, then the
+ attributes will be set as they are stored in the ZipFile.
+
+
+ These attributes may not be interesting or useful if the resulting archive
+ is extracted on a non-Windows platform. How these attributes get used upon
+ extraction depends on the platform and tool used.
+
+
+
+
+
+ Disables compression for the entry when calling ZipFile.Save().
+
+
+
+ By default, the library compresses entries when saving them to archives.
+ When this property is set to true, the entry is not compressed when written to
+ the archive. For example, the application might want to set flag to true
+ this when zipping up JPG or MP3 files, which are already compressed. The application
+ may also want to turn off compression for other reasons.
+
+ When updating a ZipFile, you may not turn off compression on an entry
+ that has been encrypted. In other words, if you read an existing ZipFile with
+ one of the ZipFile.Read() methods, and then change the
+ CompressionMethod on an entry that has Encryption not equal to
+ None, you will receive an exception. There is no way to modify the
+ compression on an encrypted entry, without extracting it and re-adding it into
+ the ZipFile.
+
+
+
+
+
+
+ The name of the file contained in the ZipEntry.
+
+
+
+ This is the name of the entry in the ZipFile itself. When creating a zip
+ archive, if the ZipEntry has been created from a filesystem file, via a
+ call to or , or a related overload, the value of this
+ property is derived from the name of that file. The FileName property does
+ not include drive letters, and may include a different directory path, depending
+ on the value of the directoryPathInArchive parameter used when adding the
+ entry into the ZipFile.
+
+
+ In some cases there is no related filesystem file - for example when a
+ ZipEntry is created using or , or one of
+ the related overloads. In this case, the value of this property is derived from
+ the fileName and the directory path passed to that method.
+
+
+ When reading a zip file, this property takes the value of the entry name as
+ stored in the zip file. If you extract such an entry, the extracted file will
+ take the name given by this property.
+
+
+ Applications can set this property when creating new zip archives or when reading
+ existing archives. When setting this property, the actual value that is set will
+ replace backslashes with forward slashes, in accordance with the Zip
+ specification, for compatibility with Unix(tm) and ... get this.... Amiga!
+
+
+ If an application reads a ZipFile via
+ or a related overload, and then explicitly sets the FileName on an entry
+ contained within the ZipFile, and then calls ,
+ the application will effectively rename the entry within the zip archive.
+
+
+ If an application sets the value of FileName, then calls Extract()
+ on the entry, the entry is extracted to a file using the newly set value as the
+ filename. The FileName value is made permanent in the zip archive only
+ after a call to one of the ZipFile.Save() methods on the
+ ZipFile that contains the ZipEntry.
+
+
+ If an application attempts to set the FileName to a value that would
+ result in a duplicate entry in the ZipFile, an exception is thrown.
+
+
+
+
+
+ The stream that provides content for the ZipEntry.
+
+
+ The application can use this property to set the input stream for an
+ entry on a just-in-time basis. Imagine a scenario where the application
+ creates a ZipFile comprised of content obtained from hundreds of
+ files, via calls to AddFile(). The DotNetZip library opens streams on
+ these files on a just-in-time basis, only when writing the entry out to an
+ external store within the scope of a ZipFile.Save() call. Only one
+ input stream is opened at a time, as each entry is being written
+ out.
+ Now imagine a different application that creates a zipfile with
+ content obtained from hundreds of streams, added through .
+ Normally the application would supply an open stream to that call. But when
+ large numbers of streams are being added, this can mean many open streams at
+ one time, unnecessarily.
+ To avoid this, at the time of calling
+ ZipFile.AddFileFromStream for each entry, the application can supply
+ Stream.Null as the value of the stream parameter. The application
+ can then open the stream on a just-in-time basis, setting this property, and
+ thus insuring, as with the latter example, that only one stream need be
+ opened at a time while constructing and saving the ZipFile.
+ To do this, the application should set the InputStream
+ property within the context of the event,
+ when the event type is . The application
+ should only set for a ZipEntry which has the equal to . When
+ the input stream is provided by the application in this way, the application
+ is also responsible for closing or disposing the stream. This would
+ normally be done in the event, when the
+ event type is . See
+ the example code provided here for how this can be done.
+ Setting the value of this property when the entry was not added from
+ a stream (for example, when the ZipEntry was added with or , or when the entry was added by
+ reading an existing zip archive) will throw an exception.
+
+
+ This example adds a large number of entries to a ZipFile. The
+ application uses the just-in-time stream provisioning mechanism to avoid
+ keeping all the streams open simultaneiously.
+
+ public static void ProvisionStreams(object sender, SaveProgressEventArgs e)
+ {
+ if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry)
+ {
+ if (e.CurrentEntry.Source == ZipEntrySource.Stream &&
+ e.CurrentEntry.InputStream == Stream.Null)
+ {
+ System.IO.Stream s = MyStreamOpener(e.CurrentEntry.FileName);
+ e.CurrentEntry.InputStream = s;
+ }
+ }
+ else if (e.EventType == ZipProgressEventType.Saving_AfterWriteEntry)
+ {
+ if (e.CurrentEntry.InputStreamWasJitProvided)
+ {
+ e.CurrentEntry.InputStream.Close();
+ }
+ }
+ }
+
+ public void CreateZip()
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ // add content into a "content" dir in the zip archive
+ foreach (string s in namesOfStreamsToZip)
+ zip.AddFileFromStream(s, "content", null);
+ // set up the event handler to provision streams "just-in-time"
+ zip.SaveProgress += ProvisionStreams;
+ zip.AddFile("Readme.txt");
+ zip.Save(ZipToCreate);
+ }
+ }
+
+
+ Public Shared Sub ProvisionStreams(ByVal sender As Object, ByVal e As SaveProgressEventArgs)
+ If (e.EventType = ZipProgressEventType.Saving_BeforeWriteEntry) Then
+ If (e.CurrentEntry.Source = ZipEntrySource.Stream) Then
+ If (e.CurrentEntry.InputStream = Stream.Null) Then
+ Dim s As Stream = MyStreamOpener(e.CurrentEntry.FileName)
+ e.CurrentEntry.InputStream = s
+ End If
+ End If
+ ElseIf (e.EventType = ZipProgressEventType.Saving_AfterWriteEntry) Then
+ If (e.CurrentEntry.InputStreamWasJitProvided) Then
+ e.CurrentEntry.InputStream.Close
+ End If
+ End If
+ End Sub
+
+ Public Sub CreateZip()
+ Using zip As ZipFile = new ZipFile()
+ ' add content into a "content" dir in the zip archive
+ Dim s As String
+ For Each s In namesOfStreamsToZip
+ zip.AddFileFromStream(s, "content", Nothing)
+ ' set up the event handler to provision streams "just-in-time"
+ AddHandler zip.SaveProgress, AddressOf ProvisionStreams
+ zip.AddFile("Readme.txt")
+ zip.Save(ZipToCreate)
+ End Using
+ End Sub
+
+
+
+
+
+
+ A flag indicating whether the InputStream was provided Just-in-time.
+
+
+
+ When creating a zip archive, an application can obtain content for one or more of the
+ ZipEntry instances from streams, using the method. At the
+ time of calling that method, the application can supply null as the value of the
+ stream parameter. By doing so, the application indicates to the library that it will
+ provide a stream for the entry on a just-in-time basis, at the time one of the
+ ZipFile.Save() methods is called and the data for the various entries are being
+ compressed and written out.
+
+
+ In this case, the application can set the property,
+ typically within the SaveProgress event (event type: ) for that entry.
+
+
+ The application will later want to call Close() and Dispose() on that stream. In the
+ SaveProgress event, when the event type is , the application can do so. This
+ flag indicates that the stream has been provided by the application on a just-in-time
+ basis and that it is the application's responsibility to call Close/Dispose on that
+ stream.
+
+
+
+
+
+
+ An enum indicating the source of the ZipEntry.
+
+
+
+
+ The version of the zip engine needed to read the ZipEntry.
+
+
+
+ This is a readonly property, indicating the version of the Zip
+ specification that the extracting tool or library must support to
+ extract the given entry. Generally higher versions indicate newer features.
+ Older zip engines obviously won't know about new features, and won't be able
+ to extract entries that depend on those newer features.
+
+
+
+ value
+ Features
+
+
+ 20
+ a basic Zip Entry, potentially using PKZIP encryption.
+
+
+
+ 45
+ The ZIP64 extension is used on the entry.
+
+
+
+ 46
+ File is compressed using BZIP2 compression*
+
+
+ 50
+ File is encrypted using PkWare's DES, 3DES, (broken) RC2 or RC4
+
+
+ 51
+ File is encrypted using PKWare's AES encryption or corrected RC2 encryption.
+
+
+ 52
+ File is encrypted using corrected RC2-64 encryption**
+
+
+ 61
+ File is encrypted using non-OAEP key wrapping***
+
+
+ 63
+ File is compressed using LZMA, PPMd+, Blowfish, or Twofish
+
+
+
+ There are other values possible, not listed here. DotNetZip supports regular
+ PKZip encryption, and ZIP64 extensions. DotNetZip cannot extract entries
+ that require a zip engine higher than 45.
+
+
+ This value is set upon reading an existing zip file, or after saving a zip
+ archive.
+
+
+
+
+
+ The comment attached to the ZipEntry.
+
+
+
+ Each entry in a zip file can optionally have a comment associated to it. The
+ comment might be displayed by a zip tool during extraction, for example.
+
+
+ By default, the Comment is encoded in IBM437 code page. You can specify
+ an alternative with
+
+
+
+
+
+ Indicates whether the entry requires ZIP64 extensions.
+
+
+ This property is null (Nothing in VB) until a Save() method on the
+ containing instance has been called. The property is
+ non-null (HasValue is true) only after a Save() method has been called.
+
+ After the containing ZipFile has been saved, the Value of this
+ property is true if any of the following three conditions holds: the
+ uncompressed size of the entry is larger than 0xFFFFFFFF; the compressed size of
+ the entry is larger than 0xFFFFFFFF; the relative offset of the entry within the
+ zip archive is larger than 0xFFFFFFFF. These quantities are not known until a
+ Save() is attempted on the zip archive and the compression is applied.
+
+ If none of the three conditions holds, then the Value is false.
+ A Value of false does not indicate that the entry, as saved in the
+ zip archive, does not use ZIP64. It merely indicates that ZIP64 is not
+ required. An entry may use ZIP64 even when not required if the property on the containing ZipFile instance
+ is set to , or if the property on the containing ZipFile
+ instance is set to and the output stream
+ was not seekable.
+
+
+
+
+
+ Indicates whether the entry actually used ZIP64 extensions, as it was most recently
+ written to the output file or stream.
+
+
+ This Nullable property is null (Nothing in VB) until a Save()
+ method on the containing instance has been
+ called. HasValue is true only after a Save() method has been
+ called.
+
+ The value of this property for a particular ZipEntry may change over successive calls to
+ Save() methods on the containing ZipFile, even if the file that corresponds to the ZipEntry does
+ not. This may happen if other entries contained in the ZipFile expand, causing the offset
+ for this particular entry to exceed 0xFFFFFFFF.
+
+
+
+
+
+
+ The bitfield for the entry as defined in the zip spec. You probably never need to look at this.
+
+
+
+
+ bit
+ meaning
+
+
+ 0
+ set if encryption is used.
+
+
+ 1-2
+
+ set to determine whether normal, max, fast deflation. DotNetZip library
+ always leaves these bits unset when writing (indicating "normal"
+ deflation"), but can read an entry with any value here.
+
+
+
+ 3
+
+ Indicates that the Crc32, Compressed and Uncompressed sizes are zero in the
+ local header. This bit gets set on an entry during writing a zip file, when
+ it is saved to a non-seekable output stream.
+
+
+
+ 4
+ reserved for "enhanced deflating". This library doesn't do enhanced deflating.
+
+
+ 5
+ set to indicate the zip is compressed patched data. This library doesn't do that.
+
+
+ 6
+
+ set if PKWare's strong encryption is used (must also set bit 1 if bit 6 is
+ set). This bit is not set if WinZip's AES encryption is set.
+
+
+ 7
+ not used
+
+
+ 8
+ not used
+
+
+ 9
+ not used
+
+
+ 10
+ not used
+
+
+ 11
+
+ Language encoding flag (EFS). If this bit is set, the filename and comment
+ fields for this file must be encoded using UTF-8. This library currently
+ does not support UTF-8.
+
+
+
+ 12
+ Reserved by PKWARE for enhanced compression.
+
+
+ 13
+
+ Used when encrypting the Central Directory to indicate selected data values
+ in the Local Header are masked to hide their actual values. See the section
+ in the Zip
+ specification describing the Strong Encryption Specification for
+ details.
+
+
+
+ 14
+ Reserved by PKWARE.
+
+
+ 15
+ Reserved by PKWARE.
+
+
+
+
+
+
+ The compression method employed for this ZipEntry.
+
+
+
+ The
+ Zip specification allows a variety of compression methods. This library
+ supports just two: 0x08 = Deflate. 0x00 = Store (no compression).
+
+ When reading an entry from an existing zipfile, the value you retrieve here
+ indicates the compression method used on the entry by the original creator of the zip.
+ When writing a zipfile, you can specify either 0x08 (Deflate) or 0x00 (None). If you
+ try setting something else, you will get an exception.
+
+ You may wish to set CompressionMethod to 0 (None) when zipping
+ previously compressed data like a jpg, png, or mp3 file. This can save time and
+ cpu cycles. Setting CompressionMethod to 0 is equivalent to setting
+ ForceNoCompression to true.
+ When updating a ZipFile, you may not modify the
+ CompressionMethod on an entry that has been encrypted. In other words,
+ if you read an existing ZipFile with one of the ZipFile.Read()
+ methods, and then change the CompressionMethod on an entry that has
+ Encryption not equal to None, you will receive an exception.
+ There is no way to modify the compression on an encrypted entry, without
+ extracting it and re-adding it into the ZipFile.
+
+
+ In this example, the first entry added to the zip archive uses
+ the default behavior - compression is used where it makes sense.
+ The second entry, the MP3 file, is added to the archive without being compressed.
+
+ using (ZipFile zip = new ZipFile(ZipFileToCreate))
+ {
+ ZipEntry e1= zip.AddFile(@"notes\Readme.txt");
+ ZipEntry e2= zip.AddFile(@"music\StopThisTrain.mp3");
+ e2.CompressionMethod = 0;
+ zip.Save();
+ }
+
+ Using zip As New ZipFile(ZipFileToCreate)
+ zip.AddFile("notes\Readme.txt")
+ Dim e2 as ZipEntry = zip.AddFile("music\StopThisTrain.mp3")
+ e2.CompressionMethod = 0
+ zip.Save
+ End Using
+
+
+
+
+ The compressed size of the file, in bytes, within the zip archive.
+
+ The compressed size is computed during compression. The value is valid
+ AFTER reading in an existing zip file, or AFTER saving a zipfile you are
+ creating.
+
+
+
+
+ The size of the file, in bytes, before compression, or after extraction.
+
+
+ This property is valid AFTER reading in an existing zip file, or AFTER saving the
+ ZipFile that contains the ZipEntry.
+
+
+
+
+
+ The ratio of compressed size to uncompressed size of the ZipEntry.
+
+
+
+ This is a ratio of the compressed size to the uncompressed size of the entry,
+ expressed as a double in the range of 0 to 100+. A value of 100 indicates no
+ compression at all. It could be higher than 100 when the compression algorithm
+ actually inflates the data, as may occur for small files, or uncompressible
+ data that is encrypted.
+
+
+ You could format it for presentation to a user via a format string of "{3,5:F0}%"
+ to see it as a percentage.
+
+
+ If the size of the original uncompressed file is 0, (indicating a denominator of 0)
+ the return value will be zero.
+
+
+ This property is valid AFTER reading in an existing zip file, or AFTER saving the
+ ZipFile that contains the ZipEntry. You cannot know the effect of a compression
+ transform until you try it.
+
+
+
+
+
+ The 32-bit CRC (Cyclic Redundancy Check) on the contents of the ZipEntry.
+
+
+ You probably don't need to concern yourself with this. It is used
+ internally by DotNetZip to verify files or streams upon extraction.
+ The value is a 32-bit
+ CRC using 0xEDB88320 for the polynomial. This is the same CRC-32 used in
+ PNG, MPEG-2, and other protocols and formats. It is a read-only property; when
+ creating a Zip archive, the CRC for each entry is set only after a call to
+ Save() on the containing ZipFile. When reading an existing zip file, the value
+ of this property reflects the stored CRC for the entry.
+
+
+
+
+ True if the entry is a directory (not a file).
+ This is a readonly property on the entry.
+
+
+
+
+ A derived property that is true if the entry uses encryption.
+
+
+
+ This is a readonly property on the entry. When reading a zip file, the
+ value for the ZipEntry is determined by the data read from the zip
+ file. After saving a ZipFile, the value of this property for each
+ ZipEntry indicates whether encryption was actually used (which will
+ have been true if the was set and the property was something other than .
+
+
+
+
+
+ Set this to specify which encryption algorithm to use for the entry
+ when saving it to a zip archive.
+
+
+
+ Set this property in order to encrypt the entry when the ZipFile is
+ saved. When setting this property, you must also set a on the entry. If you set a value other than on this property and do not set a
+ Password then the entry will not be encrypted. The ZipEntry
+ data is encrypted as the ZipFile is saved, when you call or one of its cousins on the containing
+ ZipFile instance. You do not need to specify the Encryption
+ when extracting entries from an archive.
+
+
+ The Zip specification from PKWare defines a set of encryption algorithms,
+ and the data formats for the zip archive that support them, and PKWare
+ supports those algorithms in the tools it produces. Other vendors of tools
+ and libraries, such as WinZip or Xceed, typically support a subset
+ of the algorithms specified by PKWare. These tools can sometimes support
+ additional different encryption algorithms and data formats, not specified
+ by PKWare. The AES Encryption specified and supported by WinZip is the most
+ popular example. This library supports a subset of the complete set of
+ algorithms specified by PKWare and other vendors.
+
+
+ There is no common, ubiquitous multi-vendor standard for strong encryption
+ within zip files. There is broad support for so-called "traditional" Zip
+ encryption, sometimes called Zip 2.0 encryption, as specified
+ by PKWare, but this encryption is considered weak and
+ breakable. This library currently supports the Zip 2.0 "weak" encryption,
+ and also a stronger WinZip-compatible AES encryption, using either 128-bit
+ or 256-bit key strength. If you want DotNetZip to support an algorithm
+ that is not currently supported, call the author of this library and maybe
+ we can talk business.
+
+
+ The class also has a
+ property. In most cases you will use that property when setting
+ encryption. This property takes precedence over any Encryption set on the
+ ZipFile itself. Typically, you would use the per-entry Encryption when
+ most entries in the zip archive use one encryption algorithm, and a few entries
+ use a different one. If all entries in the zip file use the same Encryption,
+ then it is simpler to just set this property on the ZipFile itself, when
+ creating a zip archive.
+
+
+ Some comments on updating archives: If you read a ZipFile, you cannot
+ modify the Encryption on any encrypted entry, except by extracting the entry
+ using the original password (if any), removing the original entry via , and then adding a new entry with a
+ new Password and Encryption.
+
+
+ For example, suppose you read a ZipFile, and there is an entry encrypted
+ with PKZip 2.0 encryption. Setting the Encryption property on that
+ ZipEntry to EncryptionAlgorithm.WinZipAes256 will cause an
+ exception to be thrown. Setting the Encryption on the ZipFile and
+ then adding new entries will allow that encryption to be used on the newly added
+ entries. During the Save(), the existing entries are copied through to
+ the new zip archive, in their original encrypted form (encrypted or not), while
+ the newly-added entries are encrypted as usual.
+
+
+ The WinZip AES encryption algorithms are not supported on the .NET Compact
+ Framework.
+
+
+
+
+ This example creates a zip archive that uses encryption, and then extracts entries
+ from the archive. When creating the zip archive, the ReadMe.txt file is zipped
+ without using a password or encryption. The other file uses encryption.
+
+
+ // Create a zip archive with AES Encryption.
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddFile("ReadMe.txt")
+ ZipEntry e1= zip.AddFile("2008-Regional-Sales-Report.pdf");
+ e1.Encryption= EncryptionAlgorithm.WinZipAes256;
+ e1.Password= "Top.Secret.No.Peeking!";
+ zip.Save("EncryptedArchive.zip");
+ }
+
+ // Extract a zip archive that uses AES Encryption.
+ // You do not need to specify the algorithm during extraction.
+ using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip"))
+ {
+ // Specify the password that is used during extraction, for
+ // all entries that require a password:
+ zip.Password= "Top.Secret.No.Peeking!";
+ zip.ExtractAll("extractDirectory");
+ }
+
+
+ ' Create a zip that uses Encryption.
+ Using zip As New ZipFile()
+ zip.AddFile("ReadMe.txt")
+ Dim e1 as ZipEntry
+ e1= zip.AddFile("2008-Regional-Sales-Report.pdf")
+ e1.Encryption= EncryptionAlgorithm.WinZipAes256
+ e1.Password= "Top.Secret.No.Peeking!"
+ zip.Save("EncryptedArchive.zip")
+ End Using
+
+ ' Extract a zip archive that uses AES Encryption.
+ ' You do not need to specify the algorithm during extraction.
+ Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip"))
+ ' Specify the password that is used during extraction, for
+ ' all entries that require a password:
+ zip.Password= "Top.Secret.No.Peeking!"
+ zip.ExtractAll("extractDirectory")
+ End Using
+
+
+
+ Thrown in the setter if EncryptionAlgorithm.Unsupported is specified, or
+ if setting the property on an entry read from a zip archive.
+
+ ZipEntry.Password
+ ZipFile.Encryption
+
+
+
+ The Password to be used when encrypting a ZipEntry upon
+ ZipFile.Save(), or when decrypting an entry upon Extract().
+
+
+
+ This is a write-only property on the entry. Set this to request that the
+ entry be encrypted when writing the zip archive, or set it to specify the
+ password to be used when extracting an existing entry that is encrypted.
+
+
+ The password set here is implicitly used to encrypt the entry during the
+ operation, or to decrypt during the or operation. If you set the
+ Password on a ZipEntry after calling Save(), there is no effect.
+
+
+ Consider setting the property when using a
+ password. Answering concerns that the standard password protection supported by
+ all zip tools is weak, WinZip has extended the ZIP specification with a way to
+ use AES Encryption to protect entries in the Zip file. Unlike the "PKZIP 2.0"
+ encryption specified in the PKZIP specification, AES Encryption
+ uses a standard, strong, tested, encryption algorithm. DotNetZip can create zip
+ archives that use WinZip-compatible AES encryption, if you set the property. But, archives created that use AES encryption may
+ not be readable by all other tools and libraries. For example, Windows Explorer
+ cannot read a "compressed folder" (a zip file) that uses AES encryption, though
+ it can read a zip file that uses "PKZIP encryption."
+
+
+ The class also has a
+ property. This property takes precedence over any password set on the ZipFile
+ itself. Typically, you would use the per-entry Password when most entries in
+ the zip archive use one password, and a few entries use a different password.
+ If all entries in the zip file use the same password, then it is simpler to just
+ set this property on the ZipFile itself, whether creating a zip archive or
+ extracting a zip archive.
+
+
+ Some comments on updating archives: If you read a ZipFile, you cannot
+ modify the password on any encrypted entry, except by extracting the entry
+ with the original password (if any), removing the original entry via , and then adding a new entry with a
+ new Password.
+
+
+ For example, suppose you read a ZipFile, and there is an encrypted entry.
+ Setting the Password property on that ZipEntry and then calling
+ Save() on the ZipFile does not update the password on that entry in
+ the archive. Neither is an exception thrown. Instead, what happens during
+ the Save() is the existing entry is copied through to the new zip
+ archive, in its original encrypted form. Upon re-reading that archive, the
+ entry can be decrypted with its original password.
+
+
+ If you read a ZipFile, and there is an un-encrypted entry, you can set the
+ Password on the entry and then call Save() on the ZipFile, and get
+ encryption on that entry.
+
+
+
+
+ This example creates a zip file with two entries, and then extracts the
+ entries from the zip file. When creating the zip file, the two files are
+ added to the zip file using password protection. Each entry uses a different
+ password. During extraction, each file is extracted with the appropriate
+ password.
+
+
+ // create a file with encryption
+ using (ZipFile zip = new ZipFile())
+ {
+ ZipEntry entry;
+ entry= zip.AddFile("Declaration.txt");
+ entry.Password= "123456!";
+ entry = zip.AddFile("Report.xls");
+ entry.Password= "1Secret!";
+ zip.Save("EncryptedArchive.zip");
+ }
+
+ // extract entries that use encryption
+ using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip"))
+ {
+ ZipEntry entry;
+ entry = zip["Declaration.txt"];
+ entry.Password = "123456!";
+ entry.Extract("extractDir");
+ entry = zip["Report.xls"];
+ entry.Password = "1Secret!";
+ entry.Extract("extractDir");
+ }
+
+
+
+ Using zip As New ZipFile
+ Dim entry as ZipEntry
+ entry= zip.AddFile("Declaration.txt")
+ entry.Password= "123456!"
+ entry = zip.AddFile("Report.xls")
+ entry.Password= "1Secret!"
+ zip.Save("EncryptedArchive.zip")
+ End Using
+
+
+ ' extract entries that use encryption
+ Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip"))
+ Dim entry as ZipEntry
+ entry = zip("Declaration.txt")
+ entry.Password = "123456!"
+ entry.Extract("extractDir")
+ entry = zip("Report.xls")
+ entry.Password = "1Secret!"
+ entry.Extract("extractDir")
+ End Using
+
+
+
+
+ ZipFile.Password
+
+
+
+ Specifies that the extraction should overwrite any existing files. This
+ property is Obsolete.
+
+
+ This property is Obsolete. Please don't use it! Instead, use property . If you must use it, you should know this:
+ this property applies only when calling an Extract method. By default this
+ property is false.
+
+
+
+
+
+ The action the library should take when extracting a file that already exists.
+
+
+
+ This property affects the behavior of the Extract methods (one of the
+ Extract() or ExtractWithPassword() overloads), when
+ extraction would would overwrite an existing filesystem file. If you do
+ not set this property, the library throws an exception when extracting
+ an entry would overwrite an existing file.
+
+
+ This property has no effect when extracting to a stream, or when the file to be
+ extracted does not already exist.
+
+
+
+
+ This example shows how to set the ExtractExistingFile property in an
+ ExtractProgress event, in response to user input. The ExtractProgress event
+ is invoked if and only if the ExtractExistingFile property was previously
+ set to ExtractExistingFileAction.InvokeExtractProgressEvent.
+
+ public static void ExtractProgress(object sender, ExtractProgressEventArgs e)
+ {
+ if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
+ Console.WriteLine("extract {0} ", e.CurrentEntry.FileName);
+
+ else if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite)
+ {
+ ZipEntry entry = e.CurrentEntry;
+ string response = null;
+ // Ask the user if he wants overwrite the file
+ do
+ {
+ Console.Write("Overwrite {0} in {1} ? (y/n/C) ", entry.FileName, e.ExtractLocation);
+ response = Console.ReadLine();
+ Console.WriteLine();
+
+ } while (response != null && response[0]!='Y' && response[0]!='N' && response[0]!='C');
+
+ if (response[0]=='C')
+ e.Cancel = true;
+ else if (response[0]=='Y')
+ entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
+ else
+ entry.ExtractExistingFile= ExtractExistingFileAction.DoNotOverwrite;
+ }
+ }
+
+
+
+
+ The action the library should take when an error is encountered while
+ opening or reading files as they are added to a zip archive.
+
+
+
+ In some cases an error will occur when DotNetZip tries to open a file to be
+ added to the zip archive. In other cases, an error might occur after the
+ file has been successfully opened, while DotNetZip is reading the file.
+
+
+ The first problem might occur when calling Adddirectory() on a directory
+ that contains a Clipper .dbf file; the file is locked by Clipper and
+ cannot be opened bby another process. An example of the second problem is
+ the ERROR_LOCK_VIOLATION that results when a file is opened by another
+ process, but not locked, and a range lock has been taken on the file.
+ Microsoft Outlook takes range locks on .PST files.
+
+
+
+
+
+
+ Indicates whether the entry was included in the most recent save.
+
+
+ An entry can be excluded or skipped from a save if there is an error
+ opening or reading the entry.
+
+
+
+
+
+ A callback that allows the application to specify whether multiple reads of the
+ stream should be performed, in the case that a compression operation actually
+ inflates the size of the file data.
+
+
+
+ In some cases, applying the Deflate compression algorithm in DeflateStream can
+ result an increase in the size of the data. This "inflation" can happen with
+ previously compressed files, such as a zip, jpg, png, mp3, and so on. In a few
+ tests, inflation on zip files can be as large as 60%! Inflation can also happen
+ with very small files. In these cases, by default, the DotNetZip library
+ discards the compressed bytes, and stores the uncompressed file data into the
+ zip archive. This is an optimization where smaller size is preferred over
+ longer run times.
+
+
+ The application can specify that compression is not even tried, by setting the
+ ForceNoCompression flag. In this case, the compress-and-check-sizes process as
+ decribed above, is not done.
+
+
+ In some cases, neither choice is optimal. The application wants compression,
+ but in some cases also wants to avoid reading the stream more than once. This
+ may happen when the stream is very large, or when the read is very expensive, or
+ when the difference between the compressed and uncompressed sizes is not
+ significant.
+
+
+ To satisfy these applications, this delegate allows the DotNetZip library to ask
+ the application to for approval for re-reading the stream. As with other
+ properties (like Password and ForceNoCompression), setting the corresponding
+ delegate on the ZipFile class itself will set it on all ZipEntry items that are
+ subsequently added to the ZipFile instance.
+
+
+
+
+
+
+
+ A callback that allows the application to specify whether compression should
+ be used for a given entry that is about to be added to the zip archive.
+
+
+ See
+
+
+
+ Set to indicate whether to use UTF-8 encoding for filenames and
+ comments.
+
+
+ If this flag is set, the comment and filename for the entry will be
+ encoded with UTF-8, as described in the Zip
+ specification, if necessary. "Necessary" means, the filename or entry
+ comment (if any) cannot be reflexively encoded and decoded using the default
+ code page, IBM437.
+
+ Setting this flag to true is equivalent to setting
+ to System.Text.Encoding.UTF8.
+
+ This flag has no effect or relation to the text encoding used within the file
+ itself.
+
+
+
+
+ The text encoding to use for the FileName and Comment on this ZipEntry, when the
+ default encoding is insufficient.
+
+
+
+ This is a long and odd name for a property, but there's a good reason for
+ it. According to the Zip
+ specification from PKWare, filenames and comments for a
+ ZipEntry are encoded either with IBM437 or with UTF8. But, some zip
+ archiver tools or libraries do not follow the specification, and instead
+ encode characters using the system default code page, or an arbitrary code
+ page. For example, WinRAR when run on a machine in Shanghai may encode
+ filenames with the Chinese (Big-5) code page. This behavior is contrary to
+ the Zip specification, but it occurs anyway. This property exists to
+ support that non-compliant behavior when reading or writing zip files.
+
+
+ When writing zip archives that will be read by one of these other archivers,
+ use this property to specify the code page to use when encoding filenames
+ and comments into the zip file, when the IBM437 code page will not suffice.
+
+
+ Be aware that a zip file created after you've explicitly specified the code
+ page will not be compliant to the PKWare specification, and may not be
+ readable by compliant archivers. On the other hand, many archivers are
+ non-compliant and can read zip files created in arbitrary code pages. For
+ example, if you run WinRar on your PC desktop in Kyoto, Japan, you will
+ probably be able to open zip files that we encoded by DotNetZip in the
+ Shift_JIS code page.
+
+
+ When using an arbitrary, non-UTF8 code page for encoding, there is no
+ standard way for the creator (DotNetZip) to specify in the zip file which
+ code page has been used. DotNetZip is not able to inspect the zip file and
+ determine the codepage used for the entries within it. Therefore, you, the
+ application author, must determine that. If you read a zip file using a
+ codepage other than the one used to encode the zipfile, this may result in
+ filenames that are not legal in the filesystem, and you will get exceptions
+ during calls to Extract() methods for those entries. Caveat Emptor.
+
+
+
+
+
+ The text encoding actually used for this ZipEntry.
+
+
+ This read-only property describes the encoding used by the
+ ZipEntry. If the entry has been read in from an existing ZipFile, then
+ it may take the value UTF-8, if the entry is coded to specify UTF-8. If the
+ entry does not specify UTF-8, the typical case, then the encoding used is
+ whatever the application specified in the call to ZipFile.Read(). If the
+ application has used one of the overloads of ZipFile.Read() that does not
+ accept an encoding parameter, then the encoding used is IBM437, which is the
+ default encoding described in the ZIP specification.
+ If the entry is being created, then the value of ActualEncoding is taken
+ according to the logic described in the documentation for .
+ An application might be interested in retrieving this property to see if
+ an entry read in from a file has used Unicode (UTF-8).
+
+
+
+
+
+ Indicates whether an entry is mark as a text file.
+
+
+
+ The ZIP format includes a provision for specifying whether an entry in the
+ zip archive is a text or binary file. Such a distinction may seem irrelevant
+ now, but some zip tools or libraries, in particular older PKUnzip on IBM
+ mainframes, require this bit to be set in order to unzip text and binary
+ files properly. Set this property to true to set the Text bit for an entry
+ that represents a text file, if you want your zip files to be readable by
+ these older zip tools and libraries.
+
+
+ When writing a zip file, you must set the property before calling
+ Save() on the ZipFile.
+
+
+ If you are not having compatibility problems with zip archives, you can
+ safely ignore this property.
+
+
+
+
+ using (var zip = new ZipFile())
+ {
+ var e = zip.UpdateFile("Descriptions.txt", string.Empty);
+ e.IsText = true;
+ zip.Save(zipPath);
+ }
+
+
+ Using zip As New ZipFile
+ Dim e2 as ZipEntry = zip.AddFile("Descriptions.txt", string.Empty)
+ e.IsText= True
+ zip.Save(zipPath)
+ End Using
+
+
+
+
+
+ The ZipFile type represents a zip archive file. This is the main type in the
+ DotNetZip class library. This class reads and writes zip files, as defined in
+ the format for zip described by PKWare. The compression for this implementation
+ was, at one time, based on the System.IO.Compression.DeflateStream base class in
+ the .NET Framework base class library, available in v2.0 and later of the .NET
+ Framework. As of v1.7 of DotNetZip, the compression is provided by a
+ managed-code version of Zlib, included with DotNetZip.
+
+
+
+
+ The default text encoding used in zip archives. It is numeric 437, also
+ known as IBM437.
+
+
+
+
+ Provides a string representation of the instance.
+ a string representation of the instance.
+
+
+
+ Creates a new ZipFile instance, using the specified filename.
+
+
+
+ Applications can use this constructor to create a new ZipFile for writing,
+ or to slurp in an existing zip archive for read and update purposes.
+
+
+ To create a new zip archive, an application can call this constructor,
+ passing the name of a file that does not exist. The name may be a fully
+ qualified path. Then the application can add directories or files to the
+ ZipFile via AddDirectory(), AddFile(), AddItem()
+ and then write the zip archive to the disk by calling Save(). The zip
+ file is not actually opened and written to the disk until the application
+ calls ZipFile.Save(). At that point the new zip file with the given
+ name is created.
+
+
+ If you won't know the name of the Zipfile until the time you call
+ ZipFile.Save(), or if you plan to save to a stream (which has no
+ name), then you should use the no-argument constructor.
+
+
+ The application can also call this constructor to read an existing zip
+ archive. passing the name of a valid zip file that does exist. But, it's
+ better form to use the static method,
+ passing the name of the zip file, because using ZipFile.Read() in
+ your code communicates very clearly what you are doing. In either case, the
+ file is then read into the ZipFile instance. The app can then
+ enumerate the entries or can modify the zip file, for example adding
+ entries, removing entries, changing comments, and so on.
+
+
+ One advantage to this parameterized constructor: it allows applications to
+ use the same code to add items to a zip archive, regardless of whether the
+ zip file exists.
+
+
+ Instances of the ZipFile class are not multi-thread safe. You may
+ not party on a single instance with multiple threads. You may have multiple
+ threads that each use a distinct ZipFile instance, or you can
+ synchronize multi-thread access to a single instance.
+
+
+ By the way, since DotNetZip is so easy to use, don't you think you should donate
+ $5 or $10?
+
+
+
+ Thrown if name refers to an existing file that is not a valid zip file.
+
+
+ This example shows how to create a zipfile, and add a few files into it.
+
+ string ZipFileToCreate = "archive1.zip";
+ string DirectoryToZip = "c:\\reports";
+ using (ZipFile zip = new ZipFile())
+ {
+ // Store all files found in the top level directory, into the zip archive.
+ string[] filenames = System.IO.Directory.GetFiles(DirectoryToZip);
+ zip.AddFiles(filenames, "files");
+ zip.Save(ZipFileToCreate);
+ }
+
+ Dim ZipFileToCreate As string = "archive1.zip"
+ Dim DirectoryToZip As string = "c:\reports"
+ Using zip As ZipFile = New ZipFile()
+ Dim filenames As string() = System.IO.Directory.GetFiles(DirectoryToZip)
+ zip.AddFiles(filenames, "files")
+ zip.Save(ZipFileToCreate)
+ End Using
+
+ The filename to use for the new zip archive.
+
+
+
+ Creates a new ZipFile instance, using the specified name for the
+ filename, and the specified Encoding.
+
+
+
+ See the documentation on the ZipFile constructor
+ that accepts a single string argument for basic information on all the
+ ZipFile constructors.
+
+
+ The Encoding is used as the default alternate encoding for entries with
+ filenames or comments that cannot be encoded with the IBM437 code page.
+ This is equivalent to setting the
+ property on the ZipFile instance after construction.
+
+
+ Instances of the ZipFile class are not multi-thread safe. You may
+ not party on a single instance with multiple threads. You may have multiple
+ threads that each use a distinct ZipFile instance, or you can
+ synchronize multi-thread access to a single instance.
+
+
+
+ Thrown if name refers to an existing file that is not a valid zip file.
+
+ The filename to use for the new zip archive.
+ The Encoding is used as the default alternate
+ encoding for entries with filenames or comments that cannot be encoded
+ with the IBM437 code page.
+
+
+
+ Create a zip file, without specifying a target filename or stream to save to.
+
+
+
+ See the documentation on the ZipFile constructor
+ that accepts a single string argument for basic information on all the
+ ZipFile constructors.
+
+ After instantiating with this constructor and adding entries to the
+ archive, the application should call or
+ to save to a file or a stream,
+ respectively. The application can also set the property
+ and then call the no-argument method. (This is the
+ preferred approach for applications that use the library through COM
+ interop.) If you call the no-argument method without
+ having set the Name of the ZipFile, either through the
+ parameterized constructor or through the explicit property , the Save() will
+ throw, because there is no place to save the file.
+
+ Instances of the ZipFile class are not multi-thread safe. You may
+ have multiple threads that each use a distinct ZipFile instance, or
+ you can synchronize multi-thread access to a single instance.
+
+
+ This example creates a Zip archive called Backup.zip, containing all the files
+ in the directory DirectoryToZip. Files within subdirectories are not zipped up.
+
+ using (ZipFile zip = new ZipFile())
+ {
+ // Store all files found in the top level directory, into the zip archive.
+ // note: this code does not recurse subdirectories!
+ string[] filenames = System.IO.Directory.GetFiles(DirectoryToZip);
+ zip.AddFiles(filenames, "files");
+ zip.Save("Backup.zip");
+ }
+
+ Using zip As New ZipFile
+ ' Store all files found in the top level directory, into the zip archive.
+ ' note: this code does not recurse subdirectories!
+ Dim filenames As string() = System.IO.Directory.GetFiles(DirectoryToZip)
+ zip.AddFiles(filenames, "files")
+ zip.Save("Backup.zip")
+ End Using
+
+
+
+
+ Create a zip file, specifying a text Encoding, but without specifying a target
+ filename or stream to save to.
+
+
+
+ See the documentation on the ZipFile constructor
+ that accepts a single string argument for basic information on all the
+ ZipFile constructors.
+
+
+
+ The Encoding is used as the default alternate encoding for entries with
+ filenames or comments that cannot be encoded with the IBM437 code page.
+
+
+
+
+ Creates a new ZipFile instance, using the specified name for the
+ filename, and the specified status message writer.
+
+
+
+ See the documentation on the ZipFile constructor
+ that accepts a single string argument for basic information on all the
+ ZipFile constructors.
+
+
+ This version of the constructor allows the caller to pass in a TextWriter,
+ to which verbose messages will be written during extraction or creation of
+ the zip archive. A console application may wish to pass System.Console.Out
+ to get messages on the Console. A graphical or headless application may wish
+ to capture the messages in a different TextWriter, for example, a
+ StringWriter, and then display the messages in a TextBox, or generate
+ an audit log of ZipFile operations.
+
+
+ To encrypt the data for the files added to the ZipFile instance, set
+ the Password property after creating the ZipFile instance.
+
+
+ Instances of the ZipFile class are not multi-thread safe. You may
+ not party on a single instance with multiple threads. You may have multiple
+ threads that each use a distinct ZipFile instance, or you can
+ synchronize multi-thread access to a single instance.
+
+
+
+ Thrown if name refers to an existing file that is not a valid zip file.
+
+
+
+ using (ZipFile zip = new ZipFile("Backup.zip", Console.Out))
+ {
+ // Store all files found in the top level directory, into the zip archive.
+ // note: this code does not recurse subdirectories!
+ // Status messages will be written to Console.Out
+ string[] filenames = System.IO.Directory.GetFiles(DirectoryToZip);
+ zip.AddFiles(filenames);
+ zip.Save();
+ }
+
+
+ Using zip As New ZipFile("Backup.zip", Console.Out)
+ ' Store all files found in the top level directory, into the zip archive.
+ ' note: this code does not recurse subdirectories!
+ ' Status messages will be written to Console.Out
+ Dim filenames As string() = System.IO.Directory.GetFiles(DirectoryToZip)
+ zip.AddFiles(filenames)
+ zip.Save()
+ End Using
+
+
+ The filename to use for the new zip archive.
+ A TextWriter to use for writing
+ verbose status messages.
+
+
+
+ Creates a new ZipFile instance, using the specified name for the
+ filename, the specified status message writer, and the specified Encoding.
+
+
+
+ This constructor works like the ZipFile
+ constructor that accepts a single string argument. See that reference
+ for detail on what this constructor does.
+
+
+ This version of the constructor allows the caller to pass in a TextWriter,
+ and an Encoding. The TextWriter will collect verbose messages that are
+ generated by the library during extraction or creation of the zip archive.
+ A console application may wish to pass System.Console.Out to get messages on
+ the Console. A graphical or headless application may wish to capture the
+ messages in a different TextWriter, for example, a
+ StringWriter, and then display the messages in a TextBox, or generate
+ an audit log of ZipFile operations.
+
+
+ The Encoding is used as the default alternate encoding for entries with
+ filenames or comments that cannot be encoded with the IBM437 code page.
+ This is a equivalent to setting the property on the ZipFile
+ instance after construction.
+
+
+ To encrypt the data for the files added to the ZipFile instance, set
+ the Password property after creating the ZipFile instance.
+
+
+ Instances of the ZipFile class are not multi-thread safe. You may
+ not party on a single instance with multiple threads. You may have multiple
+ threads that each use a distinct ZipFile instance, or you can synchronize
+ multi-thread access to a single instance.
+
+
+
+ Thrown if name refers to an existing file that is not a valid zip file.
+
+ The filename to use for the new zip archive.
+ A TextWriter to use for writing verbose
+ status messages.
+
+ The Encoding is used as the default alternate encoding for entries with
+ filenames or comments that cannot be encoded with the IBM437 code page.
+
+
+
+
+ Initialize a ZipFile instance by reading in a zip file.
+
+
+
+ This method is primarily useful from COM Automation environments, when
+ reading or extracting zip files. In COM, it is not possible to invoke
+ parameterized constructors for a class. A COM Automation application can
+ update a zip file by using the default (no argument) constructor, then
+ calling Initialize() to read the contents of an on-disk zip archive into the
+ ZipFile instance.
+
+
+ .NET applications are encouraged to use the ZipFile.Read() methods for
+ better clarity.
+
+
+ the name of the existing zip file to read in.
+
+
+
+ Removes the given ZipEntry from the zip archive.
+
+
+
+ After calling RemoveEntry, the application must call Save to
+ make the changes permanent.
+
+
+
+ Thrown if the specified ZipEntry does not exist in the ZipFile.
+
+
+ In this example, all entries in the zip archive dating from before December
+ 31st, 2007, are removed from the archive. This is actually much easier if
+ you use the RemoveSelectedEntries method. But I needed an example for
+ RemoveEntry, so here it is.
+
+ string ZipFileToRead = "ArchiveToModify.zip";
+ System.DateTime Threshold = new System.DateTime(2007,12,31);
+ using (ZipFile zip = ZipFile.Read(ZipFileToRead))
+ {
+ var EntriesToRemove = new System.Collections.Generic.List<ZipEntry>();
+ foreach (ZipEntry e in zip)
+ {
+ if (e.LastModified < Threshold)
+ {
+ // We cannot remove the entry from the list, within the context of
+ // an enumeration of said list.
+ // So we add the doomed entry to a list to be removed later.
+ EntriesToRemove.Add(e);
+ }
+ }
+
+ // actually remove the doomed entries.
+ foreach (ZipEntry zombie in EntriesToRemove)
+ zip.RemoveEntry(zombie);
+
+ zip.Comment= string.Format("This zip archive was updated at {0}.",
+ System.DateTime.Now.ToString("G"));
+
+ // save with a different name
+ zip.Save("Archive-Updated.zip");
+ }
+
+ Dim ZipFileToRead As string = "ArchiveToModify.zip"
+ Dim Threshold As New DateTime(2007, 12, 31)
+ Using zip As ZipFile = ZipFile.Read(ZipFileToRead)
+ Dim EntriesToRemove As New System.Collections.Generic.List(Of ZipEntry)
+ Dim e As ZipEntry
+ For Each e In zip
+ If (e.LastModified < Threshold) Then
+ ' We cannot remove the entry from the list, within the context of
+ ' an enumeration of said list.
+ ' So we add the doomed entry to a list to be removed later.
+ EntriesToRemove.Add(e)
+ End If
+ Next
+
+ ' actually remove the doomed entries.
+ Dim zombie As ZipEntry
+ For Each zombie In EntriesToRemove
+ zip.RemoveEntry(zombie)
+ Next
+ zip.Comment = string.Format("This zip archive was updated at {0}.", DateTime.Now.ToString("G"))
+ 'save as a different name
+ zip.Save("Archive-Updated.zip")
+ End Using
+
+
+ The ZipEntry to remove from the zip.
+
+
+
+
+ Removes the ZipEntry with the given filename from the zip archive.
+
+
+
+ After calling RemoveEntry, the application must call Save to
+ make the changes permanent.
+
+
+
+ Thrown if the ZipFile is not updatable.
+
+
+ Thrown if a ZipEntry with the specified filename does not exist in the ZipFile.
+
+
+ This example shows one way to remove an entry with a given filename from an
+ existing zip archive.
+
+ string ZipFileToRead= "PackedDocuments.zip";
+ string Candidate = "DatedMaterial.xps";
+ using (ZipFile zip = new ZipFile(ZipFileToRead))
+ {
+ if (zip.EntryFilenames.Contains(Candidate))
+ {
+ zip.RemoveEntry(Candidate);
+ zip.Comment= string.Format("The file '{0}' has been removed from this archive.",
+ Candidate);
+ zip.Save();
+ }
+ }
+
+ Dim ZipFileToRead As string = "PackedDocuments.zip"
+ Dim Candidate As string = "DatedMaterial.xps"
+ Using zip As ZipFile = New ZipFile(ZipFileToRead)
+ If zip.EntryFilenames.Contains(Candidate) Then
+ zip.RemoveEntry(Candidate)
+ zip.Comment = string.Format("The file '{0}' has been removed from this archive.", Candidate)
+ zip.Save
+ End If
+ End Using
+
+
+ The name of the file, including any directory path, to remove from the zip.
+ The filename match is not case-sensitive by default; you can use the
+ CaseSensitiveRetrieval property to change this behavior. The
+ pathname can use forward-slashes or backward slashes.
+
+
+
+
+ This is the class Destructor, which gets called implicitly when the instance
+ is destroyed. Because the ZipFile type implements IDisposable, this
+ method calls Dispose(false).
+
+
+
+
+ Handles closing of the read and write streams associated
+ to the ZipFile, if necessary.
+
+
+ The Dispose() method is generally
+ employed implicitly, via a using() {} statement. (Using...End Using in VB)
+ Always use a using statement, or always insure that you are calling Dispose()
+ explicitly.
+
+
+ This example extracts an entry selected by name, from the Zip file to the
+ Console.
+
+ using (ZipFile zip = ZipFile.Read(zipfile))
+ {
+ foreach (ZipEntry e in zip)
+ {
+ if (WantThisEntry(e.FileName))
+ zip.Extract(e.FileName, Console.OpenStandardOutput());
+ }
+ } // Dispose() is called implicitly here.
+
+ Using zip As ZipFile = ZipFile.Read(zipfile)
+ Dim e As ZipEntry
+ For Each e In zip
+ If WantThisEntry(e.FileName) Then
+ zip.Extract(e.FileName, Console.OpenStandardOutput())
+ End If
+ Next
+ End Using ' Dispose is implicity called here
+
+
+
+
+ The Dispose() method. It disposes any managed resources,
+ if the flag is set, then marks the instance disposed.
+ This method is typically not called from application code.
+
+ indicates whether the
+ method should dispose streams or not.
+
+
+
+ Adds an item, either a file or a directory, to a zip file archive.
+
+
+
+ This method is handy if you are adding things to zip archive and don't want
+ to bother distinguishing between directories or files. Any files are added
+ as single entries. A directory added through this method is added
+ recursively: all files and subdirectories contained within the directory are
+ added to the ZipFile.
+
+
+ The name of the item may be a relative path or a fully-qualified
+ path. Remember, the items contained in ZipFile instance get written
+ to the disk only when you call ZipFile.Save() or a similar save method.
+
+
+ The directory name used for the file within the archive is the same as the
+ directory name (potentially a relative path) specified in the
+ fileOrDirectoryName.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+ This method has two overloads.
+
+ the name of the file or directory to add.
+ The ZipEntry added.
+
+
+
+ Adds an item, either a file or a directory, to a zip file archive,
+ explicitly specifying the directory path to be used in the archive.
+
+
+
+ If adding a directory, the add is recursive on all files and subdirectories
+ contained within it.
+
+
+ The name of the item may be a relative path or a fully-qualified path.
+ The item added by this call to the ZipFile is not written to the zip file
+ archive until the application calls Save() on the ZipFile.
+
+
+ This version of the method allows the caller to explicitly specify the
+ directory path to be used in the archive, which would override the
+ "natural" path of the filesystem file.
+
+
+ Encryption will be used on the file data if the Password
+ has been set on the ZipFile object, prior to calling this method.
+
+
+ For ZipFile properties including , ,
+ , ,
+ , , and , their respective values at the time of this call will be
+ applied to the ZipEntry added.
+
+
+
+ Thrown if the file or directory passed in does not exist.
+
+ the name of the file or directory to add.
+
+
+ The name of the directory path to use within the zip archive. This path
+ need not refer to an extant directory in the current filesystem. If the
+ files within the zip are later extracted, this is the path used for the
+ extracted file. Passing null (Nothing in VB) will use the
+ path on the fileOrDirectoryName. Passing the empty string (string.Empty) will insert
+ the item at the root path within the archive.
+
+
+
+
+
+ This example shows how to zip up a set of files into a flat hierarchy,
+ regardless of where in the filesystem the files originated. The resulting
+ zip archive will contain a toplevel directory named "flat", which itself
+ will contain files Readme.txt, MyProposal.docx, and Image1.jpg. A
+ subdirectory under "flat" called SupportFiles will contain all the files in
+ the "c:\SupportFiles" directory on disk.
+
+
+ string[] itemnames= {
+ "c:\\fixedContent\\Readme.txt",
+ "MyProposal.docx",
+ "c:\\SupportFiles", // a directory
+ "images\\Image1.jpg"
+ };
+
+ try
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ for (int i = 1; i < itemnames.Length; i++)
+ {
+ // will add Files or Dirs, recurses and flattens subdirectories
+ zip.AddItem(itemnames[i],"flat");
+ }
+ zip.Save(ZipToCreate);
+ }
+ }
+ catch (System.Exception ex1)
+ {
+ System.Console.Error.WriteLine("exception: {0}", ex1);
+ }
+
+ Dim itemnames As string() = _
+ New string() { "c:\fixedContent\Readme.txt", _
+ "MyProposal.docx", _
+ "SupportFiles", _
+ "images\Image1.jpg" }
+ Try
+ Using zip As New ZipFile
+ Dim i As Integer
+ For i = 1 To itemnames.Length - 1
+ ' will add Files or Dirs, recursing and flattening subdirectories.
+ zip.AddItem(itemnames(i), "flat")
+ Next i
+ zip.Save(ZipToCreate)
+ End Using
+ Catch ex1 As Exception
+ Console.Error.WriteLine("exception: {0}", ex1.ToString())
+ End Try
+
+ The ZipEntry added.
+
+
+
+ Adds a File to a Zip file archive.
+
+ The name of the file to add. It should refer to a file in the filesystem.
+ The name of the file may be a relative path or a fully-qualified path.
+
+ The ZipEntry corresponding to the File added.
+
+
+
+ In this example, three files are added to a Zip archive. The ReadMe.txt file
+ will be placed in the root of the archive. The .png file will be placed in a
+ folder within the zip called photos\personal. The pdf file will be included
+ into a folder within the zip called Desktop.
+
+
+ try
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddFile("c:\\photos\\personal\\7440-N49th.png");
+ zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf");
+ zip.AddFile("ReadMe.txt");
+ zip.Save("Package.zip");
+ }
+ }
+ catch (System.Exception ex1)
+ {
+ System.Console.Error.WriteLine("exception: " + ex1);
+ }
+
+
+ Try
+ Using zip As ZipFile = New ZipFile
+ zip.AddFile("c:\photos\personal\7440-N49th.png")
+ zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf")
+ zip.AddFile("ReadMe.txt")
+ zip.Save("Package.zip")
+ End Using
+ Catch ex1 As Exception
+ Console.Error.WriteLine("exception: {0}", ex1.ToString)
+ End Try
+
+
+ This method has two overloads.
+
+
+
+
+
+ The file added by this call to the ZipFile is not written to the zip
+ file archive until the application calls Save() on the ZipFile.
+
+
+ This method will throw an Exception if an entry with the same name already
+ exists in the ZipFile.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+ Adds a File to a Zip file archive, potentially overriding the path to be used
+ within the zip archive.
+
+ The name of the file to add. The name of the file may be a relative path or
+ a fully-qualified path.
+ Specifies a directory path to use to override any path in the fileName. This path
+ may, or may not, correspond to a real directory in the current filesystem. If the
+ files within the zip are later extracted, this is the path used for the extracted
+ file. Passing null (Nothing in VB) will use the path on the
+ fileName, if any. Passing the empty string (string.Empty) will insert the item at the root
+ path within the archive.
+
+ The ZipEntry corresponding to the file added.
+
+
+
+ In this example, three files are added to a Zip archive. The ReadMe.txt file
+ will be placed in the root of the archive. The .png file will be placed in a
+ folder within the zip called images. The pdf file will be included into a
+ folder within the zip called files\docs, and will be encrypted with the
+ given password.
+
+
+ try
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ // the following entry will be inserted at the root in the archive.
+ zip.AddFile("c:\\datafiles\\ReadMe.txt", string.Empty);
+ // this image file will be inserted into the "images" directory in the archive.
+ zip.AddFile("c:\\photos\\personal\\7440-N49th.png", "images");
+ // the following will result in a password-protected file called
+ // files\\docs\\2008-Regional-Sales-Report.pdf in the archive.
+ zip.Password = "EncryptMe!";
+ zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf", "files\\docs");
+ zip.Save("Archive.zip");
+ }
+ }
+ catch (System.Exception ex1)
+ {
+ System.Console.Error.WriteLine("exception: {0}", ex1);
+ }
+
+
+ Try
+ Using zip As ZipFile = New ZipFile
+ ' the following entry will be inserted at the root in the archive.
+ zip.AddFile("c:\datafiles\ReadMe.txt", string.Empty)
+ ' this image file will be inserted into the "images" directory in the archive.
+ zip.AddFile("c:\photos\personal\7440-N49th.png", "images")
+ ' the following will result in a password-protected file called
+ ' files\\docs\\2008-Regional-Sales-Report.pdf in the archive.
+ zip.Password = "EncryptMe!"
+ zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf", "files\documents")
+ zip.Save("Archive.zip")
+ End Using
+ Catch ex1 As Exception
+ Console.Error.WriteLine("exception: {0}", ex1)
+ End Try
+
+
+
+
+
+
+
+ The file added by this call to the ZipFile is not written to the zip file
+ archive until the application calls Save() on the ZipFile.
+
+
+ This method will throw an Exception if an entry with the same name already exists
+ in the ZipFile.
+
+
+ This version of the method allows the caller to explicitly specify the
+ directory path to be used in the archive.
+
+
+ For ZipFile properties including , ,
+ , ,
+ , , and , their respective values at the time of this call will be
+ applied to the ZipEntry added.
+
+
+
+
+
+ This method removes a collection of entries from the ZipFile.
+
+
+ A collection of ZipEntry instances from this zip file to be removed. For
+ example, you can pass in an array of ZipEntry instances; or you can call
+ SelectEntries(), and then add or remove entries from that
+ ICollection<ZipEntry> (ICollection(Of ZipEntry) in VB), and pass that
+ ICollection to this method.
+
+
+
+
+ This method adds a set of files to the ZipFile.
+
+
+
+ Use this method to add a set of files to the zip archive, in one call.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+ The collection of names of the files to add. Each string should refer to a
+ file in the filesystem. The name of the file may be a relative path or a
+ fully-qualified path.
+
+
+ This example shows how to create a zipfile, and add a few files into it.
+
+ string ZipFileToCreate = "archive1.zip";
+ string DirectoryToZip = "c:\\reports";
+ using (ZipFile zip = new ZipFile())
+ {
+ // Store all files found in the top level directory, into the zip archive.
+ string[] filenames = System.IO.Directory.GetFiles(DirectoryToZip);
+ zip.AddFiles(filenames);
+ zip.Save(ZipFileToCreate);
+ }
+
+ Dim ZipFileToCreate As string = "archive1.zip"
+ Dim DirectoryToZip As string = "c:\reports"
+ Using zip As ZipFile = New ZipFile
+ ' Store all files found in the top level directory, into the zip archive.
+ Dim filenames As string() = System.IO.Directory.GetFiles(DirectoryToZip)
+ zip.AddFiles(filenames)
+ zip.Save(ZipFileToCreate)
+ End Using
+
+
+
+
+ Adds or updates a set of files in the ZipFile.
+
+
+
+ Any files that already exist in the archive are updated. Any files that
+ don't yet exist in the archive are added.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+ The collection of names of the files to update. Each string should refer to a file in
+ the filesystem. The name of the file may be a relative path or a fully-qualified path.
+
+
+
+
+ Adds a set of files to the ZipFile, using the specified directory path
+ in the archive.
+
+
+
+ Any directory structure that may be present in the filenames contained in
+ the list is "flattened" in the archive. Each file in the list is added to
+ the archive in the specified top-level directory.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+ The names of the files to add. Each string should refer to a file in the
+ filesystem. The name of the file may be a relative path or a
+ fully-qualified path.
+
+
+ Specifies a directory path to use to override any path in the file name.
+ This path may, or may not, correspond to a real directory in the current
+ filesystem. If the files within the zip are later extracted, this is the
+ path used for the extracted file. Passing null (Nothing in
+ VB) will use the path on each of the fileNames, if any. Passing the
+ empty string (string.Empty) will insert the item at the root path within the archive.
+
+
+
+
+ Adds a set of files to the ZipFile, using the specified directory
+ path in the archive, and preserving the full directory structure in the
+ filenames.
+
+ The names of the files to add. Each string should refer to a file in the filesystem.
+ The name of the file may be a relative path or a fully-qualified path.
+ whether the entries in the zip archive will reflect the dir hierarchy that
+ is present in each filename.
+ Specifies a directory path to use to override any path in the file name.
+ This path may, or may not, correspond to a real directory in the current
+ filesystem. If the files within the zip are later extracted, this is the
+ path used for the extracted file. Passing null (Nothing in
+ VB) will use the path on each of the fileNames, if any. Passing the
+ empty string (string.Empty) will insert the item at the root path within the archive.
+
+
+ If preserveDirHierarchy is true, any directory structure present in the
+ filenames contained in the list is preserved in the archive. On the other
+ hand, if preserveDirHierarchy is false, any directory structure that may be
+ present in the filenames contained in the list is "flattened" in the
+ archive; Each file in the list is added to the archive in the specified
+ top-level directory.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+
+
+ Adds or updates a set of files to the ZipFile, using the specified
+ directory path in the archive.
+
+
+
+ Any files that already exist in the archive are updated. Any files that
+ don't yet exist in the archive are added.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+ The names of the files to add or update. Each string should refer to a file
+ in the filesystem. The name of the file may be a relative path or a
+ fully-qualified path.
+
+
+ Specifies a directory path to use to override any path in the file name.
+ This path may, or may not, correspond to a real directory in the current
+ filesystem. If the files within the zip are later extracted, this is the
+ path used for the extracted file. Passing null (Nothing in
+ VB) will use the path on each of the fileNames, if any. Passing the
+ empty string (string.Empty) will insert the item at the root path within the archive.
+
+
+
+
+ Adds or Updates a File in a Zip file archive.
+
+
+
+ This method adds a file to a zip archive, or, if the file already exists in
+ the zip archive, this method Updates the content of that given filename in
+ the zip archive. The UpdateFile method might more accurately be
+ called "AddOrUpdateFile".
+
+
+ Upon success, there is no way for the application to learn whether the file
+ was added versus updated.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+ This example shows how to Update an existing entry in a zipfile. The first
+ call to UpdateFile adds the file to the newly-created zip archive. The
+ second call to UpdateFile updates the content for that file in the zip
+ archive.
+
+ using (ZipFile zip1 = new ZipFile())
+ {
+ // UpdateFile might more accurately be called "AddOrUpdateFile"
+ zip1.UpdateFile("MyDocuments\\Readme.txt", string.Empty);
+ zip1.UpdateFile("CustomerList.csv", string.Empty);
+ zip1.Comment = "This zip archive has been created.";
+ zip1.Save("Content.zip");
+ }
+
+ using (ZipFile zip2 = ZipFile.Read("Content.zip"))
+ {
+ zip2.UpdateFile("Updates\\Readme.txt", string.Empty);
+ zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed.";
+ zip2.Save();
+ }
+
+
+ Using zip1 As New ZipFile
+ ' UpdateFile might more accurately be called "AddOrUpdateFile"
+ zip1.UpdateFile("MyDocuments\Readme.txt", string.Empty)
+ zip1.UpdateFile("CustomerList.csv", string.Empty)
+ zip1.Comment = "This zip archive has been created."
+ zip1.Save("Content.zip")
+ End Using
+
+ Using zip2 As ZipFile = ZipFile.Read("Content.zip")
+ zip2.UpdateFile("Updates\Readme.txt", string.Empty)
+ zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed."
+ zip2.Save
+ End Using
+
+
+
+
+
+ The name of the file to add or update. It should refer to a file in the
+ filesystem. The name of the file may be a relative path or a
+ fully-qualified path.
+
+
+ The ZipEntry corresponding to the File that was added or updated.
+
+
+
+
+ Adds or Updates a File in a Zip file archive.
+
+
+
+ This method adds a file to a zip archive, or, if the file already exists in
+ the zip archive, this method Updates the content of that given filename in
+ the zip archive.
+
+
+ This version of the method allows the caller to explicitly specify the
+ directory path to be used in the archive. The entry to be added or updated
+ is found by using the specified directory path, combined with the basename
+ of the specified filename.
+
+
+ Upon success, there is no way for the application to learn if the file was
+ added versus updated.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+
+ The name of the file to add or update. It should refer to a file in the filesystem.
+ The name of the file may be a relative path or a fully-qualified path.
+
+
+ Specifies a directory path to use to override any path in the
+ fileName. This path may, or may not, correspond to a real directory
+ in the current filesystem. If the files within the zip are later extracted,
+ this is the path used for the extracted file. Passing null
+ (Nothing in VB) will use the path on the fileName, if any.
+ Passing the empty string (string.Empty) will insert the item at the root path within
+ the archive.
+
+
+ The ZipEntry corresponding to the File that was added or updated.
+
+
+
+
+ Add or update a directory in a zip archive.
+
+
+ If the specified directory does not exist in the archive, then this method
+ is equivalent to calling AddDirectory(). If the specified directory already
+ exists in the archive, then this method updates any existing entries, and
+ adds any new entries. Any entries that are in the zip archive but not in the
+ specified directory, are left alone. In other words, the contents of the
+ zip file will be a union of the previous contents and the new files.
+
+
+
+
+
+ The path to the directory to be added to the zip archive,
+ or updated in the zip archive.
+
+
+ The ZipEntry corresponding to the Directory that was added or updated.
+
+
+
+
+ Add or update a directory in the zip archive at the specified root directory
+ in the archive.
+
+
+ If the specified directory does not exist in the archive, then this method
+ is equivalent to calling AddDirectory(). If the specified directory already
+ exists in the archive, then this method updates any existing entries, and
+ adds any new entries. Any entries that are in the zip archive but not in the
+ specified directory, are left alone. In other words, the contents of the
+ zip file will be a union of the previous contents and the new files.
+
+
+
+
+
+ The path to the directory to be added to the zip archive, or updated in the
+ zip archive.
+
+
+ Specifies a directory path to use to override any path in the
+ directoryName. This path may, or may not, correspond to a real
+ directory in the current filesystem. If the files within the zip are later
+ extracted, this is the path used for the extracted file. Passing
+ null (Nothing in VB) will use the path on the
+ directoryName, if any. Passing the empty string (string.Empty) will insert the
+ item at the root path within the archive.
+
+
+ The ZipEntry corresponding to the Directory that was added or updated.
+
+
+
+
+ Add or update a file or directory in the zip archive.
+
+
+
+ This is useful when the application is not sure or does not care if the item
+ to be added is a file or directory, and does not know or does not care if
+ the item already exists in the ZipFile. Calling this method is
+ equivalent to calling RemoveEntry() if an entry by the same name
+ already exists, followed calling by AddItem().
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+ the path to the file or directory to be added or updated.
+
+
+
+ Add or update a file or directory.
+
+
+
+ This method is useful when the application is not sure or does not care if
+ the item to be added is a file or directory, and does not know or does not
+ care if the item already exists in the ZipFile. Calling this method is
+ equivalent to calling RemoveEntry(), if an entry by that name exists,
+ and then calling AddItem().
+
+
+ This version of the method allows the caller to explicitly specify the
+ directory path to be used for the item being added to the archive. The
+ entry or entries that are added or updated will use the specified
+ DirectoryPathInArchive. Extracting the entry from the archive will
+ result in a file stored in that directory path.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+ The path for the File or Directory to be added or updated.
+
+ Specifies a directory path to use to override any path in the
+ itemName. This path may, or may not, correspond to a real directory
+ in the current filesystem. If the files within the zip are later extracted,
+ this is the path used for the extracted file. Passing null
+ (Nothing in VB) will use the path on the itemName, if any.
+ Passing the empty string (string.Empty) will insert the item at the root path within
+ the archive.
+
+
+
+
+ Create an entry in the ZipFile using the given Stream as input. The
+ entry will have the given filename and given directory path.
+
+ Name of the file.
+ The directory path in archive.
+ The stream.
+ Returns zip entry
+
+ This method has been deprecated. Please use . This method will be removed in a future
+ version of this library.
+
+
+
+
+ Uses the given stream as input to create an entry in the ZipFile,
+ with the given filename and given directory path.
+
+ Name of the file.
+ The directory path in archive.
+ The stream.
+ Returns entry
+
+ This method has been deprecated. Please use . This method will be removed in a future
+ version of this library.
+
+
+
+
+ Adds a named entry into the zip archive, taking content for the entry
+ from a string.
+
+ The filename to use within the archive.
+ Specifies a directory path to use to override any path in the fileName.
+ This path need not correspond to a real directory in the current filesystem
+ when creating the zip file. If the files within the zip are later
+ extracted, this is the path used for the extracted file. Passing
+ null (Nothing in VB) will use the path on the fileName, if
+ any. Passing the empty string (string.Empty) will insert the item at the root path
+ within the archive.
+ The content of the file, should it be extracted from
+ the zip.
+
+ The ZipEntry added.
+
+
+ This example shows how to add an entry to the zipfile, using a string as
+ content for that entry.
+
+ string Content = "This string will be the content of the Readme.txt file in the zip archive.";
+ using (ZipFile zip1 = new ZipFile())
+ {
+ zip1.AddFile("MyDocuments\\Resume.doc", "files");
+ zip1.AddEntry("Readme.txt", string.Empty, Content);
+ zip1.Comment = "This zip file was created at " + System.DateTime.Now.ToString("G");
+ zip1.Save("Content.zip");
+ }
+
+ Public Sub Run()
+ Dim Content As string = "This string will be the content of the Readme.txt file in the zip archive."
+ Using zip1 As ZipFile = New ZipFile
+ zip1.AddEntry("Readme.txt", string.Empty, Content)
+ zip1.AddFile("MyDocuments\Resume.doc", "files")
+ zip1.Comment = ("This zip file was created at " & DateTime.Now.ToString("G"))
+ zip1.Save("Content.zip")
+ End Using
+ End Sub
+
+
+ Calling this method creates an entry using the given fileName and directory
+ path within the archive. There is no need for a file by the given name to
+ exist in the filesystem; the name is used within the zip archive only. The
+ content for the entry is encoded using the default text encoding ().
+
+
+
+
+ Adds a named entry into the zip archive, taking content for the entry
+ from a string.
+
+ The filename to use within the archive.
+ Specifies a directory path to use to override any path in the fileName.
+ This path need not correspond to a real directory in the current filesystem when
+ creating the zip file. If the files within the zip are later extracted, this is
+ the path used for the extracted file. Passing null (Nothing in VB)
+ will use the path on the fileName, if any. Passing the empty string (string.Empty)
+ will insert the item at the root path within the archive.
+ The content of the file, should it be extracted from
+ the zip.
+ The text encoding to use when encoding the string. Be aware: This is
+ distinct from the text encoding used to encode the fileName, as specified in .
+
+ The ZipEntry added.
+
+
+ Calling this method creates an entry using the given fileName and
+ directory path within the archive. There is no need for a file by the given
+ name to exist in the filesystem; the name is used within the zip archive
+ only.
+ The content for the entry is encoded using the given text
+ encoding. No Byte-order-mark (BOM) is emitted into the file.
+ If you wish to create within a zip file a file entry with
+ Unicode-encoded content that includes a byte-order-mark, you can convert
+ your string to a byte array using the appropriate method, then prepend to that byte
+ array the output of , and use the
+ AddEntry(string,string,byte[]) method, to add the entry.
+
+
+
+
+
+ Create an entry in the ZipFile using the given Stream as input. The
+ entry will have the given filename and given directory path.
+
+ the name which is shown in the zip file for the added entry.
+ Specifies a directory path to use to override any path in the itemName.
+ This path may, or may not, correspond to a real directory in the current
+ filesystem. If the files within the zip are later extracted, this is the path used
+ for the extracted file. Passing null (Nothing in VB) will use the
+ path on the fileName, if any. Passing the empty string (string.Empty) will insert the
+ item at the root path within the archive.
+ the input stream from which to grab content for the file
+
+ The ZipEntry added.
+
+
+
+ This example adds a single entry to a ZipFile via a stream.
+
+
+ string ZipToCreate = "Content.zip";
+ string FileNameInArchive = "Content-From-Stream.bin";
+ using (System.IO.Stream StreamToRead = MyStreamOpener())
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ ZipEntry entry= zip.AddEntry(FileNameInArchive, "basedirectory", StreamToRead);
+ entry.Comment = "The content for this entry in the zip file was obtained from a stream";
+ zip.AddFile("Readme.txt");
+ zip.Save(ZipToCreate);
+ }
+ }
+
+
+ Dim ZipToCreate As string = "Content.zip"
+ Dim FileNameInArchive As string = "Content-From-Stream.bin"
+ Using StreamToRead as System.IO.Stream = MyStreamOpener()
+ Using zip As ZipFile = New ZipFile()
+ Dim entry as ZipEntry = zip.AddEntry(FileNameInArchive, "basedirectory", StreamToRead)
+ entry.Comment = "The content for this entry in the zip file was obtained from a stream"
+ zip.AddFile("Readme.txt")
+ zip.Save(ZipToCreate)
+ End Using
+ End Using
+
+
+
+
+
+ The application can provide an open, readable stream; in this case it will
+ be read during the call to or one of its
+ overloads.
+
+
+ In cases where a large number of streams will be added to the
+ ZipFile, the application may wish to avoid maintaining all of the
+ streams open simultaneously. To handle this situation, the application can
+ provide a null value (Nothing in VB) for the stream, and
+ provide a handler for the event. Later,
+ during the call to ZipFile.Save, DotNetZip will invoke the
+ SaveProgress event handler, and within that handler, when the e.EventType is
+ ZipProgressEventType.Saving_BeforeWriteEntry, the application can
+ dispense the stream for each entry on a just-in-time basis by setting the
+ property. The application can close or
+ dispose the stream for each entry in a similar manner, when the
+ e.EventType is
+ ZipProgressEventType.Saving_AfterWriteEntry. Check the documentation
+ of for more information and a code
+ sample.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+
+ Adds a named entry into the zip archive, taking content for the entry
+ from a string.
+
+ Name of the file.
+ The directory path in archive.
+ The content.
+ Returns zip entry
+
+ This method has been deprecated. Please use . This method will be removed in a future version of this library.
+
+
+
+
+ Updates the given entry in the ZipFile, using the given string as input.
+
+
+
+ Calling this method is equivalent to removing the ZipEntry for the
+ given file name and directory path, if it exists, and then calling . See the documentation
+ for that method for further explanation.
+
+ The filename to use within the archive.
+
+ Specifies a directory path to use to override any path in the fileName.
+ This path need not correspond to a real directory in the current filesystem when
+ creating the zip file. If the files within the zip are later extracted, this is
+ the path used for the extracted file. Passing null (Nothing in VB)
+ will use the path on the fileName, if any. Passing the empty string (string.Empty)
+ will insert the item at the root path within the archive.
+
+
+ The content of the file, should it be extracted from the zip.
+
+ The ZipEntry added.
+
+
+
+ Updates the given entry in the ZipFile, using the given string as content
+ for the ZipEntry.
+
+ Calling this method is equivalent to removing the ZipEntry for the
+ given file name and directory path, if it exists, and then calling .
+ See the documentation for that method for further explanation.
+ The filename to use within the archive.
+
+ Specifies a directory path to use to override any path in the fileName.
+ This path need not correspond to a real directory in the current filesystem
+ when creating the zip file. If the files within the zip are later
+ extracted, this is the path used for the extracted file. Passing
+ null (Nothing in VB) will use the path on the fileName,
+ if any. Passing the empty string (string.Empty) will insert the item at the root path
+ within the archive.
+
+
+ The content of the file, should it be extracted from the zip.
+
+
+ The text encoding to use when encoding the string. Be aware: This is
+ distinct from the text encoding used to encode the filename. See .
+
+ The ZipEntry added.
+
+
+
+ Updates the given entry in the ZipFile, using the given stream as
+ input, and the given filename and given directory Path.
+
+
+
+ Calling the method is equivalent to calling RemoveEntry() if an entry by the
+ same name already exists, and then calling AddEntry() with the given
+ fileName and stream.
+
+
+ The stream must be open and readable during the call to
+ ZipFile.Save. You can dispense the stream on a just-in-time basis using
+ the property. Check the documentation of that
+ property for more information.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to the ZipEntry added.
+
+
+
+
+ the name associated to the entry in the zip archive.
+
+ The root path to be used in the zip archive,
+ for the entry added from the stream.
+ The input stream from which to read file data.
+ The ZipEntry added.
+
+
+
+ Updates the given entry in the ZipFile, using the given stream as
+ input, and the given filename and given directory path.
+
+ Name of the file.
+ The directory path in archive.
+ The stream.
+ Returns zip entry
+
+ This method has been deprecated. Please use . This method will be removed in a future
+ version of this library.
+
+
+
+
+ Add an entry into the zip archive using the given filename and directory
+ path within the archive, and the given content for the file. No file is
+ created in the filesystem.
+
+ The filename to use within the archive.
+ Specifies a directory path to use for the entry. This path may, or may not,
+ correspond to a real directory in the current filesystem. If the files
+ within the zip are later extracted, this is the path used for the extracted
+ file. Passing null (Nothing in VB) will use the path on the
+ fileName, if any. Passing the empty string (string.Empty) will insert the item
+ at the root path within the archive.
+ The data to use for the entry.
+
+ The ZipEntry added.
+
+
+
+
+ Updates the given entry in the ZipFile, using the given byte array as
+ content for the entry.
+
+
+ Calling this method is equivalent to removing the ZipEntry for the
+ given filename and directory path, if it exists, and then calling .
+ See the documentation for that method for further explanation.
+
+ The filename to use within the archive.
+
+ Specifies a directory path to use to override any path in the fileName.
+ This path need not correspond to a real directory in the current filesystem when
+ creating the zip file. If the files within the zip are later extracted, this is
+ the path used for the extracted file. Passing null (Nothing in VB)
+ will use the path on the fileName, if any. Passing the empty string (string.Empty)
+ will insert the item at the root path within the archive.
+
+ The content to use for the ZipEntry.
+ The ZipEntry added.
+
+
+
+ Adds the contents of a filesystem directory to a Zip file archive.
+
+
+
+ The name of the directory may be a relative path or a fully-qualified
+ path. Any files within the named directory are added to the archive. Any
+ subdirectories within the named directory are also added to the archive,
+ recursively.
+
+
+ Top-level entries in the named directory will appear as top-level
+ entries in the zip archive. Entries in subdirectories in the named
+ directory will result in entries in subdirectories in the zip archive.
+
+
+ If you want the entries to appear in a containing directory in the zip
+ archive itself, then you should call the AddDirectory() overload that allows
+ you to explicitly specify a directory path for use in the archive.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+
+
+
+ This method has 2 overloads.
+ The name of the directory to add.
+ The ZipEntry added.
+
+
+
+ Adds the contents of a filesystem directory to a Zip file archive,
+ overriding the path to be used for entries in the archive.
+
+
+
+ The name of the directory may be a relative path or a fully-qualified
+ path. The add operation is recursive, so that any files or subdirectories
+ within the name directory are also added to the archive.
+
+
+ Top-level entries in the named directory will appear as top-level
+ entries in the zip archive. Entries in subdirectories in the named
+ directory will result in entries in subdirectories in the zip archive.
+
+
+ For ZipFile properties including , , , , ,
+ ,
+ and , their respective values at the time of
+ this call will be applied to each ZipEntry added.
+
+
+
+
+ In this code, calling the ZipUp() method with a value of "c:\reports" for the
+ directory parameter will result in a zip file structure in which all entries
+ are contained in a toplevel "reports" directory.
+
+
+ public void ZipUp(string targetZip, string directory)
+ {
+ using (var zip = new ZipFile())
+ {
+ zip.AddDirectory(directory, System.IO.Path.GetFileName(directory));
+ zip.Save(targetZip);
+ }
+ }
+
+
+
+
+
+ The name of the directory to add.
+
+ Specifies a directory path to use to override any path in the DirectoryName.
+ This path may, or may not, correspond to a real directory in the current
+ filesystem. If the zip is later extracted, this is the path used for the
+ extracted file or directory. Passing null (Nothing in VB) or
+ the empty string (string.Empty) will insert the items at the root path within the
+ archive.
+
+ The ZipEntry added.
+
+
+
+ Creates a directory in the zip archive.
+
+
+
+ Use this when you want to create a directory in the archive but there is no
+ corresponding filesystem representation for that directory.
+
+
+ You will probably not need to do this in your code. One of the only times
+ you will want to do this is if you want an empty directory in the zip
+ archive. The reason: if you add a file to a zip archive that is stored within a
+ multi-level directory, all of the directory tree is implicitly created in
+ the zip archive.
+
+
+
+ The name of the directory to create in the archive.
+
+ The ZipEntry added.
+
+
+
+ Checks a zip file to see if its directory is consistent.
+
+
+ In cases of data error, the directory within a zip file can get out of
+ synch with the entries in the zip file. This method checks the given
+ zip file and returns true if this has occurred.
+ This method may take a long time to run for large zip files.
+
+ This method is not supported in the Reduced or Compact
+ Framework versions of DotNetZip.
+
+
+ The filename to of the zip file to check.
+ true if the named zip file checks OK. Otherwise, false.
+
+
+
+
+ Checks a zip file to see if its directory is consistent,
+ and optionally fixes the directory if necessary.
+
+
+ In cases of data error, the directory within a zip file can get out of
+ synch with the entries in the zip file. This method checks the given
+ zip file, and returns true if this has occurred. It also optionally
+ fixes the zipfile, saving the fixed copy in Name_Fixed.zip.
+ This method may take a long time to run for large zip files. It will
+ take even longer if the file actually needs to be fixed, and if
+ fixIfNecessary is true.
+
+ This method is not supported in the Reduced or Compact
+ Framework versions of DotNetZip.
+
+
+ The filename to of the zip file to check.
+ If true, the method will fix the zip file if
+ necessary.
+
+ a collection of messages generated while checking, indicating any problems that are found.
+
+ true if the named zip is OK; false if the file needs to be fixed.
+
+
+
+
+
+ Rewrite the directory within a zipfile.
+
+ Name of the zip file.
+
+
+ In cases of data error, the directory in a zip file can get out of
+ synch with the entries in the zip file. This method returns true if
+ this has occurred.
+ This can take a long time for large zip files.
+
+ This method is not supported in the Reduced or Compact
+ Framework versions of DotNetZip.
+
+
+
+
+
+ Extracts all of the items in the zip archive, to the specified path in the
+ filesystem. The path can be relative or fully-qualified.
+
+
+
+ This method will extract all entries in the ZipFile to the specified path.
+
+
+ If an extraction of a file from the zip archive would overwrite an existing
+ file in the filesystem, the action taken is dictated by the
+ ExtractExistingFile property, which overrides any setting you may have made
+ on individual ZipEntry instances. By default, if you have not set that
+ property on the ZipFile instance, the entry will not be extracted,
+ the existing file will not be overwritten and an exception will be
+ thrown. To change this, set the property, or use the
+ overload that allows you to specify an ExtractExistingFileAction parameter.
+
+
+ The action to take when an extract would overwrite an existing file applies
+ to all entries. If you want to set this on a per-entry basis, then you must
+ use one of the ZipEntry.Extract methods.
+
+
+ This method will send verbose output messages to the
+ StatusMessageTextWriter, if it is set on the ZipFile instance.
+
+
+ You may wish to take advantage of the ExtractProgress event.
+
+
+ About Timestamps: When extracting a file entry from a zip archive, the
+ extracted file gets the last modified time of the entry as stored in the
+ archive. The archive may also store extended file timestamp information,
+ including last accessed and created times. If these are present in the
+ ZipEntry, then the extracted file will also get these times.
+
+
+ A Directory entry is somewhat different. It will get the times as described
+ for a file entry, but, if there are file entries in the zip archive that,
+ when extracted, appear in the just-created directory, then when those file
+ entries are extracted, the last modified and last accessed times of the
+ directory will change, as a side effect. The result is that after an
+ extraction of a directory and a number of files within the directory, the
+ last modified and last accessed timestamps on the directory will reflect the
+ time that the last file was extracted into the directory, rather than the
+ time stored in the zip archive for the directory.
+
+
+ To compensate, when extracting an archive with ExtractAll, DotNetZip
+ will extract all the file and directory entries as described above, but it
+ will then make a second pass on the directories, and reset the times on the
+ directories to reflect what is stored in the zip archive.
+
+
+ This compensation is performed only within the context of an
+ ExtractAll. If you call ZipEntry.Extract on a directory entry,
+ the timestamps on directory in the filesystem will reflect the times stored
+ in the zip. If you then call ZipEntry.Extract on a file entry, which
+ is extracted into the directory, the timestamps on the directory will be
+ updated to the current time.
+
+
+
+ This example extracts all the entries in a zip archive file, to the
+ specified target directory. The extraction will overwrite any existing
+ files silently.
+
+ string TargetDirectory= "unpack";
+ using(ZipFile zip= ZipFile.Read(ZipFileToExtract))
+ {
+ zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently;
+ zip.ExtractAll(TargetDirectory);
+ }
+
+ Dim TargetDirectory As string = "unpack"
+ Using zip As ZipFile = ZipFile.Read(ZipFileToExtract)
+ zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently
+ zip.ExtractAll(TargetDirectory)
+ End Using
+
+
+
+
+ The path to which the contents of the zipfile will be extracted.
+ The path can be relative or fully-qualified.
+
+
+
+
+ Extracts all of the items in the zip archive, to the specified path in the filesystem,
+ optionally overwriting any existing files. The path can be relative or fully-qualified.
+
+
+ This method will send verbose output messages to the
+ StatusMessageTextWriter, if it is set on the ZipFile instance.
+
+
+ This example extracts all the entries in a zip archive file,
+ to the specified target directory. It overwrites any existing files.
+
+ string TargetDirectory= "unpack";
+ using(ZipFile zip= ZipFile.Read(ZipFileToExtract))
+ {
+ zip.ExtractAll(TargetDirectory, true);
+ }
+
+ Dim TargetDirectory As string = "unpack"
+ Using zip As ZipFile = ZipFile.Read(ZipFileToExtract)
+ zip.ExtractAll(TargetDirectory, True)
+ End Using
+
+ the path to which the contents of the zipfile are extracted.
+
+ true to overwrite any existing files on extraction
+
+
+
+
+
+ Extracts all of the items in the zip archive, to the specified path in the
+ filesystem, using the specified behavior when extraction would overwrite an
+ existing file.
+
+
+
+ This method will extract all entries in the ZipFile to the specified
+ path. For an extraction that would overwrite an existing file, the behavior
+ is dictated by the extractExistingFile parameter, which overrides any
+ setting you may have made on individual ZipEntry instances.
+
+
+ The action to take when an extract would overwrite an existing file applies
+ to all entries. If you want to set this on a per-entry basis, then you must
+ use one of the methods.
+
+
+ Calling this method is equivalent to setting the property and then calling .
+
+
+ This method will send verbose output messages to the
+ StatusMessageTextWriter, if it is set on the ZipFile instance.
+
+
+
+ This example extracts all the entries in a zip archive file, to the
+ specified target directory. It does not overwrite any existing files.
+
+ string TargetDirectory= "c:\\unpack";
+ using(ZipFile zip= ZipFile.Read(ZipFileToExtract))
+ {
+ zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite);
+ }
+
+ Dim TargetDirectory As string = "c:\unpack"
+ Using zip As ZipFile = ZipFile.Read(ZipFileToExtract)
+ zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite)
+ End Using
+
+
+ The path to which the contents of the zipfile will be extracted.
+ The path can be relative or fully-qualified.
+
+
+ The action to take if extraction would overwrite an existing file.
+
+
+
+
+ Extract a single item from the archive to the current working directory.
+
+
+
+ A file corresponding to the entry named by the fileName parameter,
+ including any relative qualifying path for the entry, is created at the
+ specified directory.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ For an extraction that would overwrite an existing file, the action taken is
+ dictated by the property, which
+ overrides any setting you may have made on the individual ZipEntry instance,
+ unless it is not the default "Throw" action. If it is the default "Throw",
+ then the action taken is that specified in the property on the ZipEntry
+ instance.
+
+
+ The file, including any relative qualifying path, is extracted to the current working
+ directory.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has been set.
+
+
+
+ The file to extract. It must be the exact name of the file, including the path
+ contained in the archive, if any. The filename match is not case-sensitive by
+ default; you can use the CaseSensitiveRetrieval property to change
+ this behavior.
+
+
+
+
+ Extract a single item from the archive to the specified directory.
+
+
+
+ A file corresponding to the entry named by the fileName parameter,
+ including any relative qualifying path for the entry, is created at the
+ specified directory.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ For an extraction that would overwrite an existing file, the action taken is
+ dictated by the property, which
+ overrides any setting you may have made on the individual ZipEntry instance,
+ unless it is not the default "Throw" action. If it is the default "Throw",
+ then the action taken is that specified in the property on the ZipEntry
+ instance.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has
+ been set.
+
+
+
+ the name of the entry to extract. It must be the exact filename, including
+ the path specified on the entry in the archive, if any. The match is not
+ case-sensitive by default; you can use the CaseSensitiveRetrieval
+ property to change this behavior.
+
+
+ the directory into which to extract. It will be created
+ if it does not exist.
+
+
+
+
+ Extract a single item from the archive to the current working directory,
+ potentially overwriting any existing file in the filesystem by the same
+ name.
+
+
+
+ A file corresponding to the entry named by the fileName parameter,
+ including any relative qualifying path for the entry, is created at the
+ current working directory.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has
+ been set.
+
+
+
+
+
+ The name of the entry to extract. It must be the exact name, including the
+ path specified on the entry in the archive, if any. The match is not
+ case-sensitive by default; you can use the CaseSensitiveRetrieval
+ property to change this behavior. The path, if any, can use forward-slashes
+ or backward slashes.
+
+
+ True if the caller wants to overwrite any existing files by the given name.
+
+
+
+
+ Extract a single item from the archive to the current working directory,
+ potentially overwriting any existing file in the filesystem by the same
+ name.
+
+
+
+ Using this method, the entry is extracted using the Password that is
+ specified on the ZipFile instance. If you have not set the Password
+ property, then the password is null, and the entry is extracted with
+ no password. The file, including any relative qualifying path, is created
+ at the current working directory.
+
+
+ For an extraction that would overwrite an existing file, the action taken is
+ dictated by the extractExistingFile parameter, which overrides any setting
+ you may have made on the individual ZipEntry instance. To avoid this, use
+ one of the ZipEntry.Extract methods.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has
+ been set.
+
+
+
+
+ The name of the entry to extract. It must be the exact name, including the
+ path specified on the entry in the archive, if any. The match is not
+ case-sensitive by default; you can use the CaseSensitiveRetrieval
+ property to change this behavior. The path, if any, can use forward-slashes
+ or backward slashes.
+
+
+ The action to take if extraction would overwrite an existing file.
+
+
+
+
+ Extract a single item from the archive, into the specified directory,
+ potentially overwriting any existing file in the filesystem by the same
+ name.
+
+
+
+ A file corresponding to the entry named by the fileName parameter,
+ including any relative qualifying path for the entry, is created at the
+ specified directory.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has
+ been set.
+
+
+
+
+ The name of the entry to extract. It must be the exact name, including the
+ path specified on the entry in the archive, if any. The match is not
+ case-sensitive by default; you can use the CaseSensitiveRetrieval
+ property to change this behavior. The path, if any, can use forward-slashes
+ or backward slashes.
+
+
+ The directory into which to extract. It will be created
+ if it does not exist.
+
+
+ True if the caller wants to overwrite any existing files
+ by the given name.
+
+
+
+
+ Extract a single item from the archive, into the specified directory,
+ using the specified behavior when extraction would overwrite an existing file.
+
+
+
+ A file corresponding to the entry named by the fileName parameter,
+ including any relative qualifying path for the entry, is created at the
+ specified directory.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ For an extraction that would overwrite an existing file, the action taken is
+ dictated by the extractExistingFile parameter, which overrides any setting
+ you may have made on the individual ZipEntry instance. To avoid this, use
+ one of the ZipEntry.Extract methods.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has been set.
+
+
+
+ The name of the entry to extract. It must be the exact name, including the path
+ specified on the entry in the archive, if any. The match is not case-sensitive by
+ default; you can use the CaseSensitiveRetrieval property to change this
+ behavior. The path, if any, can use forward-slashes or backward slashes.
+
+
+ The directory into which to extract. It will be created if it does not exist.
+
+
+ The action to take if extraction would overwrite an existing file.
+
+
+
+
+ Extract a single specified file from the archive, to the given stream.
+
+
+
+ The entry identified by the entryName parameter is extracted to the given stream.
+
+
+ An entry that requires a password for extraction is extracted using the that is specified on the ZipFile instance,
+ which overrides any Password you may have set directly on the
+ ZipEntry instance. If you have not set the property, or if you have set it to null,
+ and the entry requires a password for extraction, an Exception will be
+ thrown. An exception will also be thrown if the entry requires a password
+ for extraction, and the password specified on the ZipFile instance
+ does not match that required for the ZipEntry.
+
+
+ The ExtractProgress event is invoked before and after extraction, if it has
+ been set.
+
+
+
+ Thrown if the outputStream is not writable, or if the filename is
+ null or empty. The inner exception is an ArgumentException in each
+ case.
+
+
+ the name of the entry to extract, including the path used in the archive, if
+ any. The match is not case-sensitive by default; you can use the
+ CaseSensitiveRetrieval property to change this behavior. The
+ application can specify pathnames using forward-slashes or backward slashes.
+
+
+ the stream to which the extacted, decompressed file data is written.
+ The stream must be writable.
+
+
+
+
+ Reads a zip file archive and returns the instance.
+
+
+
+ The stream is read using the default System.Text.Encoding, which is the
+ IBM437 codepage.
+
+
+
+ Thrown if the ZipFile cannot be read. The implementation of this method
+ relies on System.IO.File.OpenRead, which can throw a variety of exceptions,
+ including specific exceptions if a file is not found, an unauthorized access
+ exception, exceptions for poorly formatted filenames, and so on.
+
+
+ The name of the zip archive to open. This can be a fully-qualified or relative
+ pathname.
+
+ This method has a bunch of interesting overloads. They are all
+ static (Shared in VB). One of them is bound to be right for you. The
+ reason there are so many is that there are a few properties on the
+ ZipFile class that must be set before you read the zipfile in, for
+ them to be useful. The set of overloads covers the most interesting cases.
+ Probably there are still too many, though.
+ The instance read from the zip archive.
+
+
+
+ Reads a zip file archive and returns the instance, using the specified
+ ReadProgress event handler.
+
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+
+
+ An event handler for Read operations.
+
+ The instance read from the zip archive.
+
+
+
+ Reads a zip file archive using the specified text encoding, and returns the
+ instance.
+
+
+
+ This version of the method allows the caller to pass in a TextWriter.
+ The ZipFile is read in using the default IBM437 encoding for entries where UTF-8
+ encoding is not explicitly specified.
+
+
+
+
+ var sw = new System.IO.StringWriter();
+ using (ZipFile zip = ZipFile.Read("PackedDocuments.zip", sw))
+ {
+ var Threshold = new DateTime(2007,7,4);
+ // We cannot remove the entry from the list, within the context of
+ // an enumeration of said list.
+ // So we add the doomed entry to a list to be removed later.
+ // pass 1: mark the entries for removal
+ var MarkedEntries = new System.Collections.Generic.List<ZipEntry>();
+ foreach (ZipEntry e in zip)
+ {
+ if (e.LastModified < Threshold)
+ MarkedEntries.Add(e);
+ }
+ // pass 2: actually remove the entry.
+ foreach (ZipEntry zombie in MarkedEntries)
+ zip.RemoveEntry(zombie);
+ zip.Comment = "This archive has been updated.";
+ zip.Save();
+ }
+ // can now use contents of sw, eg store in an audit log
+
+
+ Dim sw As New System.IO.StringWriter
+ Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip", sw)
+ Dim Threshold As New DateTime(2007, 7, 4)
+ ' We cannot remove the entry from the list, within the context of
+ ' an enumeration of said list.
+ ' So we add the doomed entry to a list to be removed later.
+ ' pass 1: mark the entries for removal
+ Dim MarkedEntries As New System.Collections.Generic.List(Of ZipEntry)
+ Dim e As ZipEntry
+ For Each e In zip
+ If (e.LastModified < Threshold) Then
+ MarkedEntries.Add(e)
+ End If
+ Next
+ ' pass 2: actually remove the entry.
+ Dim zombie As ZipEntry
+ For Each zombie In MarkedEntries
+ zip.RemoveEntry(zombie)
+ Next
+ zip.Comment = "This archive has been updated."
+ zip.Save
+ End Using
+ ' can now use contents of sw, eg store in an audit log
+
+
+
+ Thrown if the zipfile cannot be read. The implementation of this
+ method relies on System.IO.File.OpenRead, which can throw
+ a variety of exceptions, including specific exceptions if a file
+ is not found, an unauthorized access exception, exceptions for
+ poorly formatted filenames, and so on.
+
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+
+
+ The System.IO.TextWriter to use for writing verbose status messages
+ during operations on the zip archive. A console application may wish to
+ pass System.Console.Out to get messages on the Console. A graphical
+ or headless application may wish to capture the messages in a different
+ TextWriter, such as a System.IO.StringWriter.
+
+ The instance read from the zip archive.
+
+
+
+ Reads a zip file archive using the specified text encoding, and the
+ specified ReadProgress event handler, and returns the instance.
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+ The System.IO.TextWriter to use for writing verbose status messages
+ during operations on the zip archive. A console application may wish to
+ pass System.Console.Out to get messages on the Console. A graphical
+ or headless application may wish to capture the messages in a different
+ TextWriter, such as a System.IO.StringWriter.
+ An event handler for Read operations.
+
+ The instance read from the zip archive.
+
+
+
+
+ Reads a zip file archive using the specified text encoding, and returns the instance.
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+ The System.Text.Encoding to use when reading in the zip archive. Be
+ careful specifying the encoding. If the value you use here is not the same
+ as the Encoding used when the zip archive was created (possibly by a
+ different archiver) you will get unexpected results and possibly exceptions.
+
+ The instance read from the zip archive.
+
+
+ This example shows how to read a zip file using the Big-5 Chinese code page
+ (950), and extract each entry in the zip file. For this code to work as
+ desired, the zipfile must have been created using the big5 code page
+ (CP950). This is typical, for example, when using WinRar on a machine with
+ CP950 set as the default code page. In that case, the names of entries
+ within the Zip archive will be stored in that code page, and reading the zip
+ archive must be done using that code page. If the application did not use
+ the correct code page in ZipFile.Read(), then names of entries within the
+ zip archive would not be correctly retrieved.
+
+ using (ZipFile zip = ZipFile.Read(ZipToExtract,
+ System.Text.Encoding.GetEncoding(950)))
+ {
+ foreach (ZipEntry e in zip)
+ {
+ e.Extract(extractDirectory);
+ }
+ }
+
+ Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.GetEncoding(950))
+ Dim e As ZipEntry
+ For Each e In zip
+ e.Extract(extractDirectory)
+ Next
+ End Using
+
+
+ Thrown if the zipfile cannot be read. The implementation of this
+ method relies on System.IO.File.OpenRead, which can throw
+ a variety of exceptions, including specific exceptions if a file
+ is not found, an unauthorized access exception, exceptions for
+ poorly formatted filenames, and so on.
+
+
+ .
+
+ This version of the method allows the caller to pass in an Encoding.
+ The ZipFile is read in using the specified encoding for entries where UTF-8
+ encoding is not explicitly specified.
+
+
+
+ Reads a zip file archive using the specified text encoding and ReadProgress
+ event handler, and returns the instance.
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+ The System.Text.Encoding to use when reading in the zip archive. Be
+ careful specifying the encoding. If the value you use here is not the same
+ as the Encoding used when the zip archive was created (possibly by a
+ different archiver) you will get unexpected results and possibly exceptions.
+ An event handler for Read operations.
+
+ The instance read from the zip archive.
+
+
+
+
+ Reads a zip file archive using the specified text encoding and the specified
+ TextWriter for status messages, and returns the instance.
+
+
+
+ This version of the method allows the caller to pass in a TextWriter
+ and an Encoding. The ZipFile is read in using the specified encoding
+ for entries where UTF-8 encoding is not explicitly specified.
+
+
+
+ This example shows how to read a zip file using the Big-5 Chinese code page
+ (950), and extract each entry in the zip file, while sending status messages
+ out to the Console.
+
+ using (ZipFile zip = ZipFile.Read(ZipToExtract,
+ System.Console.Out,
+ System.Text.Encoding.GetEncoding(950)))
+ {
+ foreach (ZipEntry e in zip)
+ {
+ e.Extract(extractDirectory);
+ }
+ }
+
+
+ Thrown if the zipfile cannot be read. The implementation of this
+ method relies on System.IO.File.OpenRead, which can throw
+ a variety of exceptions, including specific exceptions if a file
+ is not found, an unauthorized access exception, exceptions for
+ poorly formatted filenames, and so on.
+
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+
+
+ The System.IO.TextWriter to use for writing verbose status messages
+ during operations on the zip archive. A console application may wish to
+ pass System.Console.Out to get messages on the Console. A graphical
+ or headless application may wish to capture the messages in a different
+ TextWriter, such as a System.IO.StringWriter.
+
+
+ The System.Text.Encoding to use when reading in the zip archive. Be
+ careful specifying the encoding. If the value you use here is not the same
+ as the Encoding used when the zip archive was created (possibly by a
+ different archiver) you will get unexpected results and possibly exceptions.
+
+
+ The instance read from the zip archive.
+
+
+
+ Reads a zip file archive using the specified text encoding, the specified
+ TextWriter for status messages, and the specified ReadProgress event handler,
+ and returns the instance.
+
+ The name of the zip archive to open.
+ This can be a fully-qualified or relative pathname.
+ The System.IO.TextWriter to use for writing verbose status messages
+ during operations on the zip archive. A console application may wish to
+ pass System.Console.Out to get messages on the Console. A graphical
+ or headless application may wish to capture the messages in a different
+ TextWriter, such as a System.IO.StringWriter.
+ The System.Text.Encoding to use when reading in the zip archive. Be
+ careful specifying the encoding. If the value you use here is not the same
+ as the Encoding used when the zip archive was created (possibly by a
+ different archiver) you will get unexpected results and possibly exceptions.
+ An event handler for Read operations.
+
+ The instance read from the zip archive.
+
+
+
+
+ Reads a zip archive from a stream.
+
+
+
+ This is useful when when the zip archive content is available from an
+ already-open stream. The stream must be open and readable when calling this
+ method. The stream is left open when the reading is completed.
+
+
+ Using this overload, the stream is read using the default
+ System.Text.Encoding, which is the IBM437 codepage. If you
+ want to specify the encoding to use when reading the zipfile content, check
+ out the other overloads of the ZipFile constructor.
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+
+
+ This example shows how to Read zip content from a stream, and extract one
+ entry into a different stream. In this example, the filename
+ "NameOfEntryInArchive.doc", refers only to the name of the entry within the
+ zip archive. A file by that name is not created in the filesystem. The I/O
+ is done strictly with the given streams.
+
+
+ using (ZipFile zip = ZipFile.Read(InputStream))
+ {
+ zip.Extract("NameOfEntryInArchive.doc", OutputStream);
+ }
+
+
+ Using zip as ZipFile = ZipFile.Read(InputStream)
+ zip.Extract("NameOfEntryInArchive.doc", OutputStream)
+ End Using
+
+
+ the stream containing the zip data.
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, with a given ReadProgress event handler.
+
+
+
+ When opening large zip archives, you may want to display a progress bar or
+ other indicator of status progress while reading. This Read() method allows
+ you to specify a ReadProgress Event Handler directly. The stream is read
+ using the default encoding (IBM437).
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+ the stream containing the zip data.
+
+ An event handler for Read operations.
+
+ an instance of ZipFile corresponding to the stream being read.
+
+
+
+ Reads a zip archive from a stream, using the specified TextWriter for status
+ messages.
+
+
+
+ This method is useful when when the zip archive content is available from
+ an already-open stream. The stream must be open and readable when calling this
+ method. The stream is left open when the reading is completed.
+
+
+ The stream is read using the default System.Text.Encoding, which is
+ the IBM437 codepage. For more information on the encoding, see the
+ property.
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+
+ Thrown if zipStream is null (Nothing in VB).
+ In this case, the inner exception is an ArgumentException.
+
+ the stream containing the zip data.
+
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, using the specified TextWriter for status
+ messages, and the specified ReadProgress event handler.
+
+
+
+ The stream is read using the default System.Text.Encoding, which is
+ the IBM437 codepage. For more information on the encoding, see the
+ property.
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+ the stream containing the zip data.
+
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+
+
+ An event handler for Read operations.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, using the specified encoding.
+
+
+
+ This method is useful when when the zip archive content is available from
+ an already-open stream. The stream must be open and readable when calling this
+ method. The stream is left open when the reading is completed.
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+
+ Thrown if zipStream is null (Nothing in VB).
+ In this case, the inner exception is an ArgumentException.
+
+ the stream containing the zip data.
+
+ The text encoding to use when reading entries that do not have the UTF-8
+ encoding bit set. Be careful specifying the encoding. If the value you use
+ here is not the same as the Encoding used when the zip archive was created
+ (possibly by a different archiver) you will get unexpected results and
+ possibly exceptions. See the
+ property for more information.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, using the specified encoding, and
+ and the specified ReadProgress event handler.
+
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+ the stream containing the zip data.
+
+ The text encoding to use when reading entries that do not have the UTF-8
+ encoding bit set. Be careful specifying the encoding. If the value you use
+ here is not the same as the Encoding used when the zip archive was created
+ (possibly by a different archiver) you will get unexpected results and
+ possibly exceptions. See the
+ property for more information.
+
+
+ An event handler for Read operations.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, using the specified text Encoding and the
+ specified TextWriter for status messages.
+
+
+
+ This method is useful when when the zip archive content is available from an
+ already-open stream. The stream must be open and readable when calling this
+ method. The stream is left open when the reading is completed.
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+
+ Thrown if zipStream is null (Nothing in VB).
+ In this case, the inner exception is an ArgumentException.
+
+ the stream containing the zip data.
+
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+
+
+ The text encoding to use when reading entries that do not have the UTF-8
+ encoding bit set. Be careful specifying the encoding. If the value you use
+ here is not the same as the Encoding used when the zip archive was created
+ (possibly by a different archiver) you will get unexpected results and
+ possibly exceptions. See the
+ property for more information.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a stream, using the specified text Encoding, the
+ specified TextWriter for status messages,
+ and the specified ReadProgress event handler.
+
+
+
+ Reading of zip content begins at the current position in the stream. This
+ means if you have a stream that concatenates regular data and zip data, if
+ you position the open, readable stream at the start of the zip data, you
+ will be able to read the zip archive using this constructor, or any of the
+ ZipFile constructors that accept a as
+ input. Some examples of where this might be useful: the zip content is
+ concatenated at the end of a regular EXE file, as some self-extracting
+ archives do. (Note: SFX files produced by DotNetZip do not work this
+ way). Another example might be a stream being read from a database, where
+ the zip content is embedded within an aggregate stream of data.
+
+
+ the stream containing the zip data.
+
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+
+
+ The text encoding to use when reading entries that do not have the UTF-8
+ encoding bit set. Be careful specifying the encoding. If the value you use
+ here is not the same as the Encoding used when the zip archive was created
+ (possibly by a different archiver) you will get unexpected results and
+ possibly exceptions. See the
+ property for more information.
+
+
+ An event handler for Read operations.
+
+ an instance of ZipFile
+
+
+
+ Reads a zip archive from a byte array.
+
+ The byte array containing the zip data.
+ (I don't know why, but sometimes the compiled helpfile (.chm) indicates a 2d
+ array when it is just one-dimensional. This is a one-dimensional array.)
+
+ an instance of ZipFile. The name on the ZipFile will be null
+ (Nothing in VB).
+
+
+
+ This is useful when the data for the zipfile is contained in a byte array,
+ for example, downloaded from an FTP server without being saved to a
+ filesystem.
+
+
+
+
+ Reads a zip archive from a byte array, using the given StatusMessageWriter.
+
+ the byte array containing the zip data.
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+
+ an instance of ZipFile. The name is set to null (Nothing in VB).
+
+
+ This method is useful when the data for the zipfile is contained in a byte
+ array, for example when retrieving the data from a database or other
+ non-filesystem store. The default Text Encoding (IBM437) is used to read
+ the zipfile data.
+
+
+
+
+ Reads a zip archive from a byte array, using the given StatusMessageWriter and text Encoding.
+
+ the byte array containing the zip data.
+ The System.IO.TextWriter to which verbose status messages are written
+ during operations on the ZipFile. For example, in a console
+ application, System.Console.Out works, and will get a message for each entry
+ added to the ZipFile. If the TextWriter is null, no verbose messages
+ are written.
+ The text encoding to use when reading entries that do not have the UTF-8
+ encoding bit set. Be careful specifying the encoding. If the value you use
+ here is not the same as the Encoding used when the zip archive was created
+ (possibly by a different archiver) you will get unexpected results and
+ possibly exceptions. See the
+ property for more information.
+
+ an instance of ZipFile. The name is set to null (Nothing in VB).
+
+
+ This method is useful when the data for the zipfile is contained in a byte
+ array, for example when retrieving the data from a database or other
+ non-filesystem store.
+
+
+
+
+ Reads the into instance.
+
+ The zf.
+
+
+
+ Checks the given file to see if it appears to be a valid zip file.
+
+ The file to check.
+
+ true if the file appears to be a zip file.
+
+
+ Calling this method is equivalent to calling with the testExtract parameter set to false.
+
+
+
+
+ Checks a file to see if it is a valid zip file.
+
+ The zip file to check.
+ true if the caller wants to extract each entry.
+
+ true if the file contains a valid zip file.
+
+
+
+ This method opens the specified zip file, reads in the zip archive,
+ verifying the ZIP metadata as it reads. Then, if testExtract is true, this
+ method extracts each entry in the archive, dumping all the bits.
+
+
+ If everything succeeds, then the method returns true. If anything fails -
+ for example if an incorrect signature or CRC is found, indicating a corrupt
+ file, the the method returns false. This method also returns false for a
+ file that does not exist.
+
+
+ If testExtract is true, this method reads in the content for each
+ entry, expands it, and checks CRCs. This provides an additional check
+ beyond verifying the zip header data.
+
+
+ If testExtract is true, and if any of the zip entries are protected
+ with a password, this method will return false. If you want to verify a
+ ZipFile that has entries which are protected with a password, you will need
+ to do that manually.
+
+
+
+
+
+ Checks a stream to see if it contains a valid zip archive.
+
+ The stream to check.
+ true if the caller wants to extract each entry.
+
+ true if the stream contains a valid zip archive.
+
+
+
+
+ This method reads the zip archive contained in the specified stream, verifying
+ the ZIP metadata as it reads. If testExtract is true, this method also extracts
+ each entry in the archive, dumping all the bits into .
+
+
+ If everything succeeds, then the method returns true. If anything fails -
+ for example if an incorrect signature or CRC is found, indicating a corrupt
+ file, the the method returns false. This method also returns false for a
+ file that does not exist.
+
+
+ If testExtract is true, this method reads in the content for each
+ entry, expands it, and checks CRCs. This provides an additional check
+ beyond verifying the zip header data.
+
+
+ If testExtract is true, and if any of the zip entries are protected
+ with a password, this method will return false. If you want to verify a
+ ZipFile that has entries which are protected with a password, you will need
+ to do that manually.
+
+
+
+
+
+ Saves the Zip archive to a file, specified by the Name property of the ZipFile.
+
+
+
+ Thrown if you haven't specified a location or stream for saving the zip,
+ either in the constructor or by setting the Name property, or if you try to
+ save a regular zip archive to a filename with a .exe extension.
+
+
+
+ The ZipFile instance is written to storage, typically a zip file in a
+ filesystem, only when the caller calls Save. The Save operation writes
+ the zip content to a temporary file, and then renames the temporary file
+ to the desired name. If necessary, this method will delete a pre-existing file
+ before the rename.
+
+ The property is specified either
+ explicitly, or implicitly using one of the parameterized ZipFile
+ constructors. For COM Automation clients, the Name property must be
+ set explicitly, because COM Automation clients cannot call parameterized
+ constructors.
+
+ When using a filesystem file for the Zip output, it is possible to call
+ Save multiple times on the ZipFile instance. With each call the zip
+ content is re-written to the same output file.
+
+
+ Data for entries that have been added to the ZipFile instance is written
+ to the output when the Save method is called. This means that the input
+ streams for those entries must be available at the time the application calls
+ Save. If, for example, the application adds entries with AddEntry
+ using a dynamically-allocated MemoryStream, the memory stream must not
+ have been disposed before the call to Save. See the property for more discussion of the availability
+ requirements of the input stream for an entry, and an approach for providing
+ just-in-time stream lifecycle management.
+
+
+
+
+
+ Save the file to a new zipfile, with the given name.
+
+ The name of the zip archive to save to. Existing files will
+ be overwritten with great prejudice.
+
+ Thrown if you specify a directory for the filename.
+
+
+ This example shows how to create and Save a zip file.
+
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddDirectory(@"c:\reports\January");
+ zip.Save("January.zip");
+ }
+
+ Using zip As New ZipFile()
+ zip.AddDirectory("c:\reports\January")
+ zip.Save("January.zip")
+ End Using
+
+
+ This example shows how to update a zip file.
+
+ using (ZipFile zip = ZipFile.Read("ExistingArchive.zip"))
+ {
+ zip.AddFile("NewData.csv");
+ zip.Save("UpdatedArchive.zip");
+ }
+
+ Using zip As ZipFile = ZipFile.Read("ExistingArchive.zip")
+ zip.AddFile("NewData.csv")
+ zip.Save("UpdatedArchive.zip")
+ End Using
+
+
+
+ This method allows the application to explicitly specify the name of the zip
+ file when saving. Use this when creating a new zip file, or when
+ updating a zip archive.
+
+
+ An application can also save a zip archive in several places by calling this
+ method multiple times in succession, with different filenames.
+
+
+ The ZipFile instance is written to storage, typically a zip file in a
+ filesystem, only when the caller calls Save. The Save operation writes
+ the zip content to a temporary file, and then renames the temporary file
+ to the desired name. If necessary, this method will delete a pre-existing file
+ before the rename.
+
+
+
+
+
+ Save the zip archive to the specified stream.
+
+
+
+ The ZipFile instance is written to storage - typically a zip file in a
+ filesystem, but using this overload, the storage can eb anything accessible via
+ a writable stream - only when the caller calls Save.
+
+
+ Use this method to save the zip content to a stream directly. A common
+ scenario is an ASP.NET application that dynamically generates a zip file and
+ allows the browser to download it. The application can call
+ Save(Response.OutputStream) to write a zipfile directly to the output
+ stream, without creating a zip file on the disk on the ASP.NET server.
+
+
+
+ The System.IO.Stream to write to. It must be writable.
+
+
+
+
+ IEnumerator support, for use of a ZipFile in a foreach construct.
+
+
+ This method is included for COM support. An application generally does not call
+ this method directly. It is called implicitly by COM clients when enumerating
+ the entries in the ZipFile instance. In VBScript, this is done with a For Each
+ statement. In Javascript, this is done with new Enumerator(zipfile).
+
+
+ The IEnumerator over the entries in the ZipFile.
+
+
+
+
+ Indicates whether to perform a full scan of the zip file when reading it.
+
+
+
+ When reading a zip file, if this flag is true (True in
+ VB), the entire zip archive will be scanned and searched for entries.
+ For large archives, this can take a very, long time. The much more
+ efficient default behavior is to read the zip directory, at the end of
+ the zip file. However, in some cases the directory is corrupted and it
+ is desirable to perform a full scan of the zip file to determine the
+ contents of the zip file.
+
+
+ If you want to track progress, you can set the ReadProgress event.
+
+
+ This flag is effective only when calling Initialize. The Initialize
+ method may take a long time to run for large zip files, when
+ Fullscan is true.
+
+
+
+ This example shows how to read a zip file using the full scan approach,
+ and then save it, thereby producing a corrected zip file.
+
+ using (var zip = new ZipFile())
+ {
+ zip.FullScan = true;
+ zip.Initialize(zipFileName);
+ zip.Save(newName);
+ }
+
+ Using zip As New ZipFile
+ zip.FullScan = True
+ zip.Initialize(zipFileName)
+ zip.Save(newName)
+ End Using
+
+
+
+
+ Size of the IO buffer used while saving.
+
+
+
+ First, let me say that you really don't need to bother with this. It is
+ here to allow for optimizations that you probably won't make! It will work
+ fine if you don't set or get this property at all. Ok?
+
+
+ Now that we have that out of the way, the fine print: This
+ property affects the size of the buffer that is used for I/O for each entry
+ contained in the zip file. When a file is read in to be compressed, it uses
+ a buffer given by the size here. When you update a zip file, the data for
+ unmodified entries is copied from the first zip file to the other, through a
+ buffer given by the size here.
+
+
+ Changing the buffer size affects a few things: first, for larger buffer
+ sizes, the memory used by the ZipFile, obviously, will be larger
+ during I/O operations. This may make operations faster for very much larger
+ files. Last, for any given entry, when you use a larger buffer there will be
+ fewer progress events during I/O operations, because there's one progress
+ event generated for each time the buffer is filled and then emptied.
+
+
+ The default buffer size is 8k. Increasing the buffer size may speed things
+ up as you compress larger files. But there are no hard-and-fast rules here,
+ eh? You won't know til you test it. And there will be a limit where ever
+ larger buffers actually slow things down. So as I said in the beginning,
+ it's probably best if you don't set or get this property at all.
+
+
+
+ This example shows how you might set a large buffer size for efficiency when
+ dealing with zip entries that are larger than 1gb.
+
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.SaveProgress += this.zip1_SaveProgress;
+ zip.AddDirectory(directoryToZip, string.Empty);
+ zip.UseZip64WhenSaving = Zip64Option.Always;
+ zip.BufferSize = 65536*8; // 65536 * 8 = 512k
+ zip.Save(ZipFileToCreate);
+ }
+
+
+
+
+ Size of the work buffer to use for the ZLIB codec during compression.
+
+
+
+
+ Indicates whether extracted files should keep their paths as
+ stored in the zip archive.
+
+
+ true if [flatten folders on extract]; otherwise, false.
+
+
+
+
+ The compression strategy to use for all entries.
+
+
+ The strategy.
+
+
+ This refers to the Strategy used by the ZLIB-compatible compressor. Different
+ compression strategies work better on different sorts of data. The strategy parameter
+ can affect the compression ratio and the speed of compression but not the correctness
+ of the compresssion. For more information see .
+
+
+
+
+ The name of the ZipFile, on disk.
+
+
+ The name.
+
+
+
+ When the ZipFile instance was created by reading an archive using one
+ of the ZipFile.Read methods, this property represents the name of the
+ zip file that was read. When the ZipFile instance was created by
+ using the no-argument constructor, this value is null (Nothing
+ in VB).
+
+
+ If you use the no-argument constructor, and you then explicitly set this
+ property, when you call , this name will specify
+ the name of the zip file created. Doing so is equivalent to calling . When instantiating a ZipFile by reading from
+ a stream or byte array, the Name property remains null. When saving
+ to a stream, the Name property is implicitly set to null.
+
+
+
+
+
+ Sets the compression level to be used for entries when saving the zip archive.
+
+
+ The compression level.
+
+
+ The compression level setting is used at the time of Save(). The same
+ level is applied to all ZipEntry instances contained in the
+ ZipFile during the save. If you do not set this property, the
+ default compression level is used, which normally gives a good balance of
+ compression efficiency and compression speed. In some tests, using
+ BestCompression can double the time it takes to compress, while
+ delivering just a small increase in compression efficiency. This behavior
+ will vary with the type of data you compress. If you are in doubt, just
+ leave this setting alone, and accept the default.
+
+
+
+
+ A comment attached to the zip archive.
+
+
+ The comment.
+
+
+
+ This property is read/write. It allows the application to specify a comment
+ for the ZipFile, or read the comment for the ZipFile. After
+ setting this property, changes are only made permanent when you call a
+ Save() method.
+
+
+ According to PKWARE's zip
+ specification, the comment is not encrypted, even if there is a
+ password set on the zip file.
+
+
+ The zip spec does not describe how to encode the comment string in a code
+ page other than IBM437. Therefore, for "compliant" zip tools and libraries,
+ comments will use IBM437. However, there are situations where you want an
+ encoded Comment, for example using code page 950 "Big-5 Chinese". DotNetZip
+ will encode the comment in the code page specified by , at the time of the call to
+ ZipFile.Save().
+
+
+ When creating a zip archive using this library, it is possible to change the
+ value of between each entry you
+ add, and between adding entries and the call to Save(). Don't do this. It
+ will likely result in a zipfile that is not readable by any tool or
+ application. For best interoperability, leave alone, or specify it only once,
+ before adding any entries to the ZipFile instance.
+
+
+
+
+
+ Specifies whether the Creation, Access, and Modified times
+ for entries added to the zip file will be emitted in "Unix(tm)
+ format" when the zip archive is saved.
+
+
+
+ An application creating a zip archive can use this flag to explicitly
+ specify that the file times for the entries should or should not be stored
+ in the zip archive in the format used by Unix. By default this flag is
+ false.
+
+
+ When adding an entry from a file or directory, the Creation (), Access (),
+ and Modified () times for the given entry are
+ automatically set from the filesystem values. When adding an entry from a stream
+ or string, all three values are implicitly set to DateTime.Now. Applications
+ can also explicitly set those times by calling .
+
+
+ PKWARE's
+ zip specification describes multiple ways to format these times in a
+ zip file. One is the format Windows applications normally use: 100ns ticks
+ since Jan 1, 1601 UTC. The other is a format Unix applications typically
+ use: seconds since Jan 1, 1970 UTC. Each format can be stored in an "extra
+ field" in the zip entry when saving the zip archive. The former uses an
+ extra field with a Header Id of 0x000A, while the latter uses a header ID of
+ 0x5455.
+
+
+ Not all tools and libraries can interpret these fields. Windows compressed
+ folders is one that can read the Windows Format timestamps, while I believe
+ the Infozip tools can read the Unix
+ format timestamps. Some tools and libraries may be able to read only one or
+ the other.
+
+
+ The times stored are taken from , , and .
+
+
+ The value set here applies to all entries subsequently added to the
+ ZipFile.
+
+
+ This property is not mutually exclusive of the property. It is possible and
+ legal and valid to produce a zip file that contains timestamps encoded in
+ the Unix format as well as in the Windows format. I haven't got a complete
+ list of tools and which sort of timestamps they can use and will
+ tolerate. You'll have to test it yourself. If you get any good information
+ and would like to pass it on, please do so and I will include that
+ information in this documentation.
+
+
+
+ This example shows how to save a zip file that contains file timestamps
+ in a format normally used by Unix.
+
+ using (var zip = new ZipFile())
+ {
+ zip.EmitTimesInWindowsFormatWhenSaving = false;
+ zip.EmitTimesInUnixFormatWhenSaving = true;
+ zip.AddDirectory(directoryToZip, "files");
+ zip.Save(outputFile);
+ }
+
+ Using zip As New ZipFile
+ zip.EmitTimesInWindowsFormatWhenSaving = False
+ zip.EmitTimesInUnixFormatWhenSaving = True
+ zip.AddDirectory(directoryToZip, "files")
+ zip.Save(outputFile)
+ End Using
+
+
+
+
+
+
+ Specifies whether the Creation, Access, and Modified times
+ for entries added to the zip file will be emitted in "Unix(tm)
+ format" when the zip archive is saved.
+
+
+
+ An application creating a zip archive can use this flag to explicitly
+ specify that the file times for the entries should or should not be stored
+ in the zip archive in the format used by Unix. By default this flag is
+ false.
+
+
+ When adding an entry from a file or directory, the Creation (), Access (), and
+ Modified () times for the given entry are
+ automatically set from the filesystem values. When adding an entry from a
+ stream or string, all three values are implicitly set to DateTime.Now.
+ Applications can also explicitly set those times by calling .
+
+
+ PKWARE's
+ zip specification describes multiple ways to format these times in a
+ zip file. One is the format Windows applications normally use: 100ns ticks
+ since Jan 1, 1601 UTC. The other is a format Unix applications typically
+ use: seconds since Jan 1, 1970 UTC. Each format can be stored in an "extra
+ field" in the zip entry when saving the zip archive. The former uses an
+ extra field with a Header Id of 0x000A, while the latter uses a header ID of
+ 0x5455.
+
+
+ Not all tools and libraries can interpret these fields. Windows compressed
+ folders is one that can read the Windows Format timestamps, while I believe
+ the Infozip tools can read the Unix
+ format timestamps. Some tools and libraries may be able to read only one or
+ the other.
+
+
+ The times stored are taken from , , and .
+
+
+ This property is not mutually exclusive of the property. It is possible and
+ legal and valid to produce a zip file that contains timestamps encoded in
+ the Unix format as well as in the Windows format. I haven't got a complete
+ list of tools and which sort of timestamps they can use and will
+ tolerate. You'll have to test it yourself. If you get any good information
+ and would like to pass it on, please do so and I will include that
+ information in this documentation.
+
+
+
+
+
+
+
+ Indicates whether to perform case-sensitive matching on the filename when
+ retrieving entries in the zipfile via the string-based indexer.
+
+
+ true if [case sensitive retrieval]; otherwise, false.
+
+
+ The default value is false, which means DON'T do case-sensitive
+ matching. In other words, retrieving zip["ReadMe.Txt"] is the same as
+ zip["readme.txt"]. It really makes sense to set this to true only if
+ you are not running on Windows, which has case-insensitive filenames. But
+ since this library is not built for non-Windows platforms, in most cases you
+ should just leave this property alone.
+
+
+
+
+ Indicates whether to encode entry filenames and entry comments using Unicode
+ (UTF-8).
+
+
+ true if [use unicode as necessary]; otherwise, false.
+
+
+
+
+ The
+ PKWare zip specification provides for encoding file names and file
+ comments in either the IBM437 code page, or in UTF-8. This flag selects the
+ encoding according to that specification. By default, this flag is false,
+ and filenames and comments are encoded into the zip file in the IBM437
+ codepage. Setting this flag to true will specify that filenames and
+ comments that cannot be encoded with IBM437 will be encoded with UTF-8.
+
+
+ Zip files created with strict adherence to the PKWare specification with
+ respect to UTF-8 encoding can contain entries with filenames containing any
+ combination of Unicode characters, including the full range of characters
+ from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other alphabets.
+ However, because at this time, the UTF-8 portion of the PKWare specification
+ is not broadly supported by other zip libraries and utilities, such zip
+ files may not be readable by your favorite zip tool or archiver. In other
+ words, interoperability will decrease if you set this flag to true.
+
+
+ In particular, Zip files created with strict adherence to the PKWare
+ specification with respect to UTF-8 encoding will not work well with
+ Explorer in Windows XP or Windows Vista, because Windows compressed folders,
+ as far as I know, do not support UTF-8 in zip files. Vista can read the zip
+ files, but shows the filenames incorrectly. Unpacking from Windows Vista
+ Explorer will result in filenames that have rubbish characters in place of
+ the high-order UTF-8 bytes.
+
+
+ Also, zip files that use UTF-8 encoding will not work well with Java
+ applications that use the java.util.zip classes, as of v5.0 of the Java
+ runtime. The Java runtime does not correctly implement the PKWare
+ specification in this regard.
+
+
+ As a result, we have the unfortunate situation that "correct" behavior by the
+ DotNetZip library with regard to Unicode encoding of filenames during zip
+ creation will result in zip files that are readable by strictly compliant and
+ current tools (for example the most recent release of the commercial WinZip
+ tool); but these zip files will not be readable by various other tools or
+ libraries, including Windows Explorer.
+
+
+ The DotNetZip library can read and write zip files with UTF8-encoded
+ entries, according to the PKware spec. If you use DotNetZip for both
+ creating and reading the zip file, and you use UTF-8, there will be no loss
+ of information in the filenames. For example, using a self-extractor created
+ by this library will allow you to unpack files correctly with no loss of
+ information in the filenames.
+
+
+ If you do not set this flag, it will remain false. If this flag is false,
+ your ZipFile will encode all filenames and comments using the IBM437
+ codepage. This can cause "loss of information" on some filenames, but the
+ resulting zipfile will be more interoperable with other utilities. As an
+ example of the loss of information, diacritics can be lost. The o-tilde
+ character will be down-coded to plain o. The c with a cedilla (Unicode
+ 0xE7) used in Portugese will be downcoded to a c. Likewise, the O-stroke
+ character (Unicode 248), used in Danish and Norwegian, will be down-coded to
+ plain o. Chinese characters cannot be represented in codepage IBM437; when
+ using the default encoding, Chinese characters in filenames will be
+ represented as ?. These are all examples of "information loss".
+
+
+ The loss of information associated to the use of the IBM437 encoding is
+ inconvenient, and can also lead to runtime errors. For example, using
+ IBM437, any sequence of 4 Chinese characters will be encoded as ????. If
+ your application creates a ZipFile, then adds two files, each with names of
+ four Chinese characters each, this will result in a duplicate filename
+ exception. In the case where you add a single file with a name containing
+ four Chinese characters, calling Extract() on the entry that has question
+ marks in the filename will result in an exception, because the question mark
+ is not legal for use within filenames on Windows. These are just a few
+ examples of the problems associated to loss of information.
+
+
+ This flag is independent of the encoding of the content within the entries
+ in the zip file. Think of the zip file as a container - it supports an
+ encoding. Within the container are other "containers" - the file entries
+ themselves. The encoding within those entries is independent of the
+ encoding of the zip archive container for those entries.
+
+
+ Rather than specify the encoding in a binary fashion using this flag, an
+ application can specify an arbitrary encoding via the property. Setting the encoding
+ explicitly when creating zip archives will result in non-compliant zip files
+ that, curiously, are fairly interoperable. The challenge is, the PKWare
+ specification does not provide for a way to specify that an entry in a zip
+ archive uses a code page that is neither IBM437 nor UTF-8. Therefore if you
+ set the encoding explicitly when creating a zip archive, you must take care
+ upon reading the zip archive to use the same code page. If you get it
+ wrong, the behavior is undefined and may result in incorrect filenames,
+ exceptions, stomach upset, hair loss, and acne.
+
+
+
+
+
+ Specify whether to use ZIP64 extensions when saving a zip archive.
+
+
+
+ Designed many years ago, the original zip
+ specification from PKWARE allowed for 32-bit quantities for the
+ compressed and uncompressed sizes of zip entries, as well as a 32-bit
+ quantity for specifying the length of the zip archive itself, and a maximum
+ of 65535 entries. These limits are now regularly exceeded in many backup
+ and archival scenarios. Recently, PKWare added extensions to the original
+ zip spec, called "ZIP64 extensions", to raise those limitations. This
+ property governs whether the ZipFile instance will use those
+ extensions when writing zip archives within a call to one of the Save()
+ methods. The use of these extensions is optional and explicit in DotNetZip
+ because, despite the status of ZIP64 as a bona fide standard, many other zip
+ tools and libraries do not support ZIP64, and therefore a zip file saved
+ with ZIP64 extensions may be unreadable by some of those other tools.
+
+
+ Set this property to to always use ZIP64
+ extensions when saving, regardless of whether your zip archive needs it.
+ Suppose you add 5 files, each under 100k, to a ZipFile. If you specify
+ Always for this flag before calling the Save() method, you will get a ZIP64
+ archive, though you do not need to use ZIP64 because none of the original
+ zip limits had been exceeded.
+
+
+ Set this property to to tell the DotNetZip
+ library to never use ZIP64 extensions. This is useful for maximum
+ compatibility and interoperability, at the expense of the capability of
+ handling large files or large archives. NB: Windows Explorer in Windows XP
+ and Windows Vista cannot currently extract files from a zip64 archive, so if
+ you want to guarantee that a zip archive produced by this library will work
+ in Windows Explorer, use Never. If you set this property to , and your application creates a zip that would
+ exceed one of the ZIP limits, the library will throw an exception during the
+ Save().
+
+
+ Set this property to to tell the
+ DotNetZip library to use the zip64 extensions when required by the
+ entry. After the file is compressed, the original and compressed sizes are
+ checked, and if they exceed the limits described above, then zip64 can be
+ used. That is the general idea, but there is an additional wrinkle when
+ saving to a non-seekable device, like the ASP.NET
+ Response.OutputStream, or Console.Out. When using
+ non-seekable streams for output, the entry header - which indicates whether
+ zip64 is in use - is emitted before it is known if zip64 is necessary. It
+ is only after all entries have been saved that it can be known if ZIP64 will
+ be required. On seekable output streams, after saving all entries, the
+ library can seek backward and re-emit the zip file header to be consistent
+ with the actual ZIP64 requirement. But using a non-seekable output stream,
+ the library cannot seek backward, so the header can never be changed. In
+ other words, the archive's use of ZIP64 extensions is not alterable after
+ the header is emitted. Therefore, when saving to non-seekable streams,
+ using is the same as using : it will always produce a zip archive that uses
+ zip64 extensions.
+
+
+ The default value for the property is . is safest, in the sense that you will not
+ get an Exception if a pre-ZIP64 limit is exceeded.
+
+
+ You may set the property at any time before calling Save().
+
+
+ The Zipfile.Read() method will properly read ZIP64-endowed zip
+ archives, regardless of the value of this property. DotNetZip will always
+ read ZIP64 archives. This property governs whether DotNetZip will write
+ them. Therefore, when updating archives, be careful about setting this
+ property after reading an archive that may use ZIP64 extensions.
+
+
+ An interesting question is, if you have set this property to
+ AsNecessary, and then successfully saved, does the resulting archive
+ use ZIP64 extensions or not? To learn this, check the property, after calling Save().
+
+
+ Have you thought about
+ donating?
+
+
+
+
+
+
+ Indicates whether the archive requires ZIP64 extensions.
+
+
+
+ This property is null (or Nothing in VB) if the archive has not been
+ saved, and there are fewer than 65334 ZipEntry items contained in the archive.
+
+
+ The Value is true if any of the following four conditions holds: the
+ uncompressed size of any entry is larger than 0xFFFFFFFF; the compressed
+ size of any entry is larger than 0xFFFFFFFF; the relative offset of any
+ entry within the zip archive is larger than 0xFFFFFFFF; or there are more
+ than 65534 entries in the archive. (0xFFFFFFFF = 4,294,967,295). The
+ result may not be known until a Save() is attempted on the zip archive. The
+ Value of this property may be set only AFTER
+ one of the Save() methods has been called.
+
+
+ If none of the four conditions holds, and the archive has been saved, then
+ the Value is false.
+
+
+ A Value of false does not indicate that the zip archive, as saved,
+ does not use ZIP64. It merely indicates that ZIP64 is not required. An
+ archive may use ZIP64 even when not required if the property is set to , or if the property is set to and the output stream was not seekable. Use
+ the property to determine if the most recent
+ Save() method resulted in an archive that utilized the ZIP64
+ extensions.
+
+
+
+
+
+
+
+ Describes whether the most recent Save() operation used ZIP64 extensions.
+
+
+
+ The use of ZIP64 extensions within an archive is not always necessary, and for
+ interoperability concerns, it may be desired to NOT use ZIP64 if possible. The
+ property can be set to use ZIP64
+ extensions only when necessary. In those cases, Sometimes applications want to
+ know whether a Save() actually used ZIP64 extensions. Applications can query
+ this read-only property to learn whether ZIP64 has been used in a just-saved
+ ZipFile.
+
+
+ The value is null (or Nothing in VB) if the archive has not
+ been saved.
+
+
+ Non-null values (HasValue is true) indicate whether ZIP64 extensions
+ were used during the most recent Save() operation. The ZIP64
+ extensions may have been used as required by any particular entry because of
+ its uncompressed or compressed size, or because the archive is larger than
+ 4294967295 bytes, or because there are more than 65534 entries in the
+ archive, or because the UseZip64WhenSaving property was set to , or because the UseZip64WhenSaving
+ property was set to and the output
+ stream was not seekable. The value of this property does not indicate the
+ reason the ZIP64 extensions were used.
+
+
+
+
+
+
+
+ The text encoding to use when writing new entries to the ZipFile, for
+ those entries that cannot be encoded with the default (IBM437) encoding; or,
+ the text encoding that was used when reading the entries from the
+ ZipFile.
+
+
+
+ In its
+ zip specification, PKWare describes two options for encoding filenames
+ and comments: using IBM437 or UTF-8. But, some archiving tools or libraries
+ do not follow the specification, and instead encode characters using the
+ system default code page. For example, WinRAR when run on a machine in
+ Shanghai may encode filenames with the Big-5 Chinese (950) code page. This
+ behavior is contrary to the Zip specification, but it occurs anyway.
+
+
+ When using DotNetZip to write zip archives that will be read by one of these
+ other archivers, set this property to specify the code page to use when
+ encoding the and for each ZipEntry in the zip file, for values that
+ cannot be encoded with the default codepage for zip files, IBM437. This is
+ why this property is "provisional". In all cases, IBM437 is used where
+ possible, in other words, where no loss of data would result. It is
+ possible, therefore, to have a given entry with a Comment encoded in IBM437
+ and a FileName encoded with the specified "provisional" codepage.
+
+
+ Be aware that a zip file created after you've explicitly set the property to a value other than IBM437
+ may not be compliant to the PKWare specification, and may not be readable by
+ compliant archivers. On the other hand, many (most?) archivers are
+ non-compliant and can read zip files created in arbitrary code pages. The
+ trick is to use or specify the proper codepage when reading the zip.
+
+
+ When creating a zip archive using this library, it is possible to change the
+ value of between each entry you
+ add, and between adding entries and the call to Save(). Don't do this. It
+ will likely result in a zipfile that is not readable. For best
+ interoperability, either leave
+ alone, or specify it only once, before adding any entries to the
+ ZipFile instance. There is one exception to this recommendation,
+ described later.
+
+
+ When using an arbitrary, non-UTF8 code page for encoding, there is no
+ standard way for the creator application - whether DotNetZip, WinZip,
+ WinRar, or something else - to formally specify in the zip file which
+ codepage has been used for the entries. As a result, readers of zip files
+ are not able to inspect the zip file and determine the codepage that was
+ used for the entries contained within it. It is left to the application or
+ user to determine the necessary codepage when reading zip files encoded this
+ way. If you use an incorrect codepage when reading a zipfile, you will get
+ entries with filenames that are incorrect, and the incorrect filenames may
+ even contain characters that are not legal for use within filenames in
+ Windows. Extracting entries with illegal characters in the filenames will
+ lead to exceptions. It's too bad, but this is just the way things are with
+ code pages in zip files. Caveat Emptor.
+
+
+ When using DotNetZip to read a zip archive, and the zip archive uses an
+ arbitrary code page, you must specify the encoding to use before or when the
+ Zipfile is READ. This means you must use a ZipFile.Read()
+ method that allows you to specify a System.Text.Encoding parameter. Setting
+ the ProvisionalAlternateEncoding property after your application has read in
+ the zip archive will not affect the entry names of entries that have already
+ been read in, and is probably not what you want.
+
+
+ And now, the exception to the rule described above. One strategy for
+ specifying the code page for a given zip file is to describe the code page
+ in a human-readable form in the Zip comment. For example, the comment may
+ read "Entries in this archive are encoded in the Big5 code page". For
+ maximum interoperability, the zip comment in this case should be encoded in
+ the default, IBM437 code page. In this case, the zip comment is encoded
+ using a different page than the filenames. To do this, Specify
+ ProvisionalAlternateEncoding to your desired region-specific code
+ page, once before adding any entries, and then reset
+ ProvisionalAlternateEncoding to IBM437 before setting the property and calling Save().
+
+
+
+ This example shows how to read a zip file using the Big-5 Chinese code page
+ (950), and extract each entry in the zip file. For this code to work as
+ desired, the Zipfile must have been created using the big5 code page
+ (CP950). This is typical, for example, when using WinRar on a machine with
+ CP950 set as the default code page. In that case, the names of entries
+ within the Zip archive will be stored in that code page, and reading the zip
+ archive must be done using that code page. If the application did not use
+ the correct code page in ZipFile.Read(), then names of entries within the
+ zip archive would not be correctly retrieved.
+
+ using (var zip = ZipFile.Read(zipFileName, System.Text.Encoding.GetEncoding("big5")))
+ {
+ // retrieve and extract an entry using a name encoded with CP950
+ zip[MyDesiredEntry].Extract("unpack");
+ }
+
+ Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.fileGetencoding(950))
+ ' retrieve and extract an entry using a name encoded with CP950
+ zip(MyDesiredEntry).Extract("unpack")
+ End Using
+
+ DefaultEncoding
+
+
+
+ Gets or sets the TextWriter to which status messages are delivered
+ for the instance.
+
+
+ If the TextWriter is set to a non-null value, then verbose output is sent to the
+ TextWriter during Add, Read, Save and Extract
+ operations. Typically, console applications might use Console.Out
+ and graphical or headless applications might use a
+ System.IO.StringWriter. The output of this is suitable for viewing by
+ humans.
+
+
+
+ In this example, a console application instantiates a ZipFile, then sets
+ the StatusMessageTextWriter to Console.Out. At that point, all verbose
+ status messages for that ZipFile are sent to the console.
+
+
+ using (ZipFile zip= ZipFile.Read(FilePath))
+ {
+ zip.StatusMessageTextWriter= System.Console.Out;
+ // messages are sent to the console during extraction
+ zip.ExtractAll();
+ }
+
+
+ Using zip As ZipFile = ZipFile.Read(FilePath)
+ zip.StatusMessageTextWriter= System.Console.Out
+ 'Status Messages will be sent to the console during extraction
+ zip.ExtractAll()
+ End Using
+
+
+
+
+
+ Gets or sets the flag that indicates whether the ZipFile should use
+ compression for subsequently added entries in the ZipFile instance.
+
+
+ When saving an entry into a zip archive, the DotNetZip by default
+ compresses the file. That's what a ZIP archive is all about, isn't it? For
+ files that are already compressed, like MP3's or JPGs, the deflate algorithm
+ can actually slightly expand the size of the data. Setting this property to
+ trye allows you to specify that compression should not be used. The default
+ value is false.
+
+ Do not construe setting this flag to false as "Force Compression". Setting
+ it to false merely does NOT force No compression. If you want to force the
+ use of the deflate algorithm when storing each entry into the zip archive,
+ define a callback, which always
+ returns false, and a callback that always
+ returns true. This is probably the wrong thing to do, but you could do
+ it. Forcing the use of the Deflate algorithm when storing an entry does not
+ guarantee that the data size will get smaller. It could increase, as
+ described above.
+
+
+ Changes to this flag apply to all entries subsequently added to the archive.
+ The application can also set the
+ property on each ZipEntry, for more granular control of this capability.
+
+
+
+
+
+
+ This example shows how to specify that Compression will not be used when
+ adding files to the zip archive. None of the files added to the archive in
+ this example will use compression.
+
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.ForceNoCompression = true;
+ zip.AddDirectory(@"c:\reports\January");
+ zip.Comment = "All files in this archive will be uncompressed.";
+ zip.Save(ZipFileToCreate);
+ }
+
+ Using zip As New ZipFile()
+ zip.ForceNoCompression = true
+ zip.AddDirectory("c:\reports\January")
+ zip.Comment = "All files in this archive will be uncompressed."
+ zip.Save(ZipFileToCreate)
+ End Using
+
+
+
+
+ Gets or sets the name for the folder to store the temporary file
+ this library writes when saving a zip archive.
+
+
+
+ This library will create a temporary file when saving a Zip archive to a file.
+ This file is written when calling one of the Save() methods that does
+ not save to a stream, or one of the SaveSelfExtractor() methods.
+
+ By default, the library will create the temporary file in the directory
+ specified for the file itself, via the property or via the
+ method.
+
+
+ Setting this property allows applications to override this default behavior,
+ so that the library will create the temporary file in the specified
+ folder. For example, to have the library create the temporary file in the
+ current working directory, regardless where the ZipFile is saved,
+ specfy ".". To revert to the default behavior, set this property to
+ null (Nothing in VB).
+
+
+ When setting the property to a non-null value, the folder specified must exist;
+ if it does not an exception is thrown. The application should have write and
+ delete permissions on the folder. The permissions are not explicitly checked
+ ahead of time; if the application does not have the appropriate rights, an
+ exception will be thrown at the time Save() is called.
+
+
+ There is no temporary file created when reading a zip archive. When saving
+ to a Stream, there is no temporary file created. For example, if the
+ application is an ASP.NET application and calls Save() specifying the
+ Response.OutputStream as the output stream, there is no temporary
+ file created.
+
+
+
+ Thrown when setting the property if the directory does not exist.
+
+
+
+
+ Sets the password to be used on the ZipFile instance.
+
+
+
+ When writing a zip archive, this password is applied to the entries, not to
+ the zip archive itself. It applies to any ZipEntry subsequently added to the
+ ZipFile, using one of the AddFile, AddDirectory,
+ AddEntry, or AddItem methods, etc. When reading a zip
+ archive, this property applies to any entry subsequently extracted from the
+ ZipFile using one of the Extract methods on the ZipFile class.
+
+
+ When writing a zip archive, keep this in mind: though the password is set on the
+ ZipFile object, according to the Zip spec, the "directory" of the archive - in
+ other words the list of entries contained in the archive - is not encrypted with
+ the password, or protected in any way. if you set the Password property, the
+ password actually applies to individual entries that are added to the archive,
+ subsequent to the setting of this property. The list of filenames in the
+ archive that is eventually created will appear in clear text, but the contents
+ of the individual files are encrypted. This is how Zip encryption works.
+
+
+ If you set the password on the zip archive, and then add a set of files to the
+ archive, then each entry is encrypted with that password. You may also want to
+ change the password between adding different entries. If you set the password,
+ add an entry, then set the password to null (Nothing in VB), and
+ add another entry, the first entry is encrypted and the second is not. If you
+ call AddFile(), then set the Password property, then call
+ ZipFile.Save, the file added will not be password-protected, and no
+ warning will be generated.
+
+
+ When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added to
+ the ZipFile. If you set the Password to a non-null value and do not set
+ , then PKZip 2.0 ("Weak") encryption is used. This
+ encryption is relatively weak but is very interoperable. If you set the
+ password to a null value (Nothing in VB), Encryption is reset
+ to None.
+
+
+ All of the preceding applies to writing zip archives, in other words when
+ you use one of the Save methods. To use this property when reading or an
+ existing ZipFile, do the following: set the Password property on the
+ ZipFile, then call one of the Extract() overloads on the . In this case, the entry is extracted using the
+ Password that is specified on the ZipFile instance. If you
+ have not set the Password property, then the password is null,
+ and the entry is extracted with no password.
+
+
+ If you set the Password property on the ZipFile, then call Extract()
+ an entry that has not been encrypted with a password, the password is not
+ used for that entry, and the ZipEntry is extracted as normal. In
+ other words, the password is used only if necessary.
+
+
+ The class also has a Password property. It takes precedence over
+ this property on the ZipFile. Typically, you would use the per-entry
+ Password when most entries in the zip archive use one password, and a few
+ entries use a different password. If all entries in the zip file use the
+ same password, then it is simpler to just set this property on the
+ ZipFile itself, whether creating a zip archive or extracting a zip
+ archive.
+
+
+
+
+ This example creates a zip file, using password protection for the entries,
+ and then extracts the entries from the zip file. When creating the zip
+ file, the Readme.txt file is not protected with a password, but the other
+ two are password-protected as they are saved. During extraction, each file
+ is extracted with the appropriate password.
+
+
+ // create a file with encryption
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddFile("ReadMe.txt");
+ zip.Password= "!Secret1";
+ zip.AddFile("MapToTheSite-7440-N49th.png");
+ zip.AddFile("2008-Regional-Sales-Report.pdf");
+ zip.Save("EncryptedArchive.zip");
+ }
+
+ // extract entries that use encryption
+ using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip"))
+ {
+ zip.Password= "!Secret1";
+ zip.ExtractAll("extractDir");
+ }
+
+
+
+ Using zip As New ZipFile
+ zip.AddFile("ReadMe.txt")
+ zip.Password = "123456!"
+ zip.AddFile("MapToTheSite-7440-N49th.png")
+ zip.Password= "!Secret1";
+ zip.AddFile("2008-Regional-Sales-Report.pdf")
+ zip.Save("EncryptedArchive.zip")
+ End Using
+
+
+ ' extract entries that use encryption
+ Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip"))
+ zip.Password= "!Secret1"
+ zip.ExtractAll("extractDir")
+ End Using
+
+
+
+ ZipFile.Encryption
+ ZipEntry.Password
+
+
+
+ The action the library should take when extracting a file that already exists.
+
+
+
+ This property affects the behavior of the Extract methods (one of the
+ Extract() or ExtractWithPassword() overloads), when extraction
+ would would overwrite an existing filesystem file. If you do not set this
+ property, the library throws an exception when extracting an entry would
+ overwrite an existing file.
+
+
+ This property has no effect when extracting to a stream, or when the file to
+ be extracted does not already exist.
+
+
+
+
+
+
+ The action the library should take when an error is encountered while
+ opening or reading files as they are added to a zip archive.
+
+
+
+ In some cases an error will occur when DotNetZip tries to open a file to be
+ added to the zip archive. In other cases, an error might occur after the
+ file has been successfully opened, while DotNetZip is reading the file.
+
+
+ The first problem might occur when calling Adddirectory() on a directory
+ that contains a Clipper .dbf file; the file is locked by Clipper and
+ cannot be opened bby another process. An example of the second problem is
+ the ERROR_LOCK_VIOLATION that results when a file is opened by another
+ process, but not locked, and a range lock has been taken on the file.
+ Microsoft Outlook takes range locks on .PST files.
+
+
+
+
+
+
+ The Encryption to use for entries added to the ZipFile.
+
+
+
+ Set this when creating a zip archive, or when updating a zip archive. The
+ specified Encryption is applied to the entries subsequently added to the
+ ZipFile instance. Applications do not need to set Encryption
+ when reading or extracting a zip archive.
+
+
+ If you set this to something other than EncryptionAlgorithm.None, you will also
+ need to set the .
+
+
+ As with other properties (like and ), setting this property a ZipFile
+ instance will cause that EncryptionAlgorithm to be used on all items that are subsequently added to the ZipFile
+ instance. In other words, if you set this property after you have added
+ items to the ZipFile, but before you have called Save(), those
+ items will not be encrypted or protected with a password in the resulting
+ zip archive. To get a zip archive with encrypted entries, set this property,
+ along with the property, before calling
+ AddFile, AddItem, or AddDirectory (etc.) on
+ the ZipFile instance.
+
+
+ Some comments on updating archives: If you read a ZipFile, you cannot
+ modify the Encryption on any encrypted entry, except by extracting the entry
+ with the original password (if any), removing the original entry via , and then adding a new entry with a
+ new Password and Encryption setting.
+
+
+ For example, suppose you read a ZipFile, and there is an encrypted
+ entry. Setting the Encryption property on that ZipFile and then
+ calling Save() on the ZipFile does not update the Encryption
+ used for the entries in the archive. Neither is an exception
+ thrown. Instead, what happens during the Save() is that all
+ previously existing entries are copied through to the new zip archive, with
+ whatever encryption and password that was used when originally creating the
+ zip archive. Upon re-reading that archive, to extract entries, applications
+ should use the original password or passwords, if any.
+
+
+
+
+ This example creates a zip archive that uses encryption, and then extracts
+ entries from the archive. When creating the zip archive, the ReadMe.txt
+ file is zipped without using a password or encryption. The other files use
+ encryption.
+
+
+ // Create a zip archive with AES Encryption.
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddFile("ReadMe.txt");
+ zip.Encryption= EncryptionAlgorithm.WinZipAes256;
+ zip.Password= "Top.Secret.No.Peeking!";
+ zip.AddFile("7440-N49th.png");
+ zip.AddFile("2008-Regional-Sales-Report.pdf");
+ zip.Save("EncryptedArchive.zip");
+ }
+
+ // Extract a zip archive that uses AES Encryption.
+ // You do not need to specify the algorithm during extraction.
+ using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip"))
+ {
+ zip.Password= "Top.Secret.No.Peeking!";
+ zip.ExtractAll("extractDirectory");
+ }
+
+
+ ' Create a zip that uses Encryption.
+ Using zip As New ZipFile()
+ zip.Encryption= EncryptionAlgorithm.WinZipAes256
+ zip.Password= "Top.Secret.No.Peeking!"
+ zip.AddFile("ReadMe.txt")
+ zip.AddFile("7440-N49th.png")
+ zip.AddFile("2008-Regional-Sales-Report.pdf")
+ zip.Save("EncryptedArchive.zip")
+ End Using
+
+ ' Extract a zip archive that uses AES Encryption.
+ ' You do not need to specify the algorithm during extraction.
+ Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip"))
+ zip.Password= "Top.Secret.No.Peeking!"
+ zip.ExtractAll("extractDirectory")
+ End Using
+
+
+ ZipFile.Password
+ ZipEntry.Encryption
+
+
+
+ A callback that allows the application to specify whether multiple reads of the
+ stream should be performed, in the case that a compression operation actually
+ inflates the size of the file data.
+
+
+
+ In some cases, applying the Deflate compression algorithm in
+ DeflateStream can result an increase in the size of the data. This
+ "inflation" can happen with previously compressed files, such as a zip, jpg,
+ png, mp3, and so on. In a few tests, inflation on zip files can be as large
+ as 60%! Inflation can also happen with very small files. In these cases,
+ by default, the DotNetZip library discards the compressed bytes, and stores
+ the uncompressed file data into the zip archive. This is an optimization
+ where smaller size is preferred over longer run times.
+
+
+ The application can specify that compression is not even tried, by setting the
+ ForceNoCompression flag. In this case, the compress-and-check-sizes process as
+ decribed above, is not done.
+
+
+ In some cases, neither choice is optimal. The application wants compression,
+ but in some cases also wants to avoid reading the stream more than once. This
+ may happen when the stream is very large, or when the read is very expensive, or
+ when the difference between the compressed and uncompressed sizes is not
+ significant.
+
+
+ To satisfy these applications, this delegate allows the DotNetZip library to ask
+ the application to for approval for re-reading the stream, in the case where
+ inflation occurs. The callback is invoked only in the case of inflation; that
+ is to say when the uncompressed stream is smaller than the compressed stream.
+
+
+ As with other properties (like and ), setting the corresponding delegate on a
+ ZipFile instance will caused it to be applied to all ZipEntry items
+ that are subsequently added to the ZipFile instance. In other words,
+ if you set this callback after you have added files to the ZipFile,
+ but before you have called Save(), those items will not be governed by the
+ callback when you do call Save(). Your best bet is to set this callback
+ before adding any entries.
+
+
+ Of course, if you want to have different callbacks for different entries,
+ you may do so.
+
+
+
+
+ In this example, the application callback checks to see if the difference
+ between the compressed and uncompressed data is greater than 25%. If it is,
+ then the callback returns true, and the application tells the library to
+ re-read the stream. If not, then the callback returns false, and the
+ library just keeps the "inflated" file data.
+
+
+
+ public bool ReadTwiceCallback(long uncompressed, long compressed, string filename)
+ {
+ return ((uncompressed * 1.0/compressed) > 1.25);
+ }
+
+ public void CreateTheZip()
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ // set the callback before adding files to the zip
+ zip2.WillReadTwiceOnInflation = ReadTwiceCallback;
+ zip2.AddFile(filename1);
+ zip2.AddFile(filename2);
+ zip2.Save(ZipFileToCreate);
+ }
+ }
+
+
+
+
+
+
+
+
+ A callback that allows the application to specify whether compression should
+ be used for entries subsequently added to the zip archive.
+
+
+
+ In some cases, applying the Deflate compression algorithm to an entry *may*
+ result a slight increase in the size of the data. This "inflation" can
+ happen with previously compressed files, such as a zip, jpg, png, mp3, and
+ so on; it results from adding DEFLATE framing data around incompressible data.
+ Inflation can also happen with very small files. Applications may wish to
+ avoid the use of compression in these cases. As well, applications may wish
+ to avoid compression to save time.
+
+
+ By default, the DotNetZip library takes this approach to decide whether to
+ apply compression: first it applies a heuristic, to determine whether it
+ should try to compress a file or not. The library checks the extension of
+ the entry, and if it is one of a known list of uncompressible file types
+ (mp3, zip, docx, and others), the library will not attempt to compress the
+ entry. The library does not actually check the content of the entry. If
+ you name a text file "Text.mp3", and then attempt to add it to a zip
+ archive, this library will, by default, not attempt to compress the entry,
+ based on the extension of the filename.
+
+
+ If this default behavior is not satisfactory, there are two options. First,
+ the application can override it by setting this callback. This affords maximum control to
+ the application. With this callback, the application can supply its own
+ logic for determining whether to apply the Deflate algorithm or not. For
+ example, an application may desire that files over 40mb in size are never
+ compressed, or always compressed. An application may desire that the first
+ 7 entries added to an archive are compressed, and the remaining ones are
+ not. The WantCompression callback allows the application full control, on
+ an entry-by-entry basis.
+
+
+ The second option for overriding the default logic regarding whether to
+ apply compression is the ForceNoCompression flag. If this flag is set to
+ true, the compress-and-check-sizes process as decribed above, is not done,
+ nor is the callback invoked. In other words, if you set ForceNoCompression
+ to true, andalso set the WantCompression callback, only the
+ ForceNoCompression flag is considered.
+
+
+ This is how the library determines whether compression will be attempted for
+ an entry. If it is to be attempted, the library reads the entry, runs it
+ through the deflate algorithm, and then checks the size of the result. If
+ applying the Deflate algorithm increases the size of the data, then the
+ library discards the compressed bytes, re-reads the raw entry data, and
+ stores the uncompressed file data into the zip archive, in compliance with
+ the zip spec. This is an optimization where smaller size is preferred over
+ longer run times. The re-reading is gated on the callback, if it is set. This callback
+ applies independently of the WantCompression callback.
+
+
+ If by the logic described above, compression is not to be attempted for an
+ entry, the library reads the entry, and simply stores the entry data
+ uncompressed.
+
+
+ And, if you have read this far, I would like to point out that a single
+ person wrote all the code that does what is described above, and also wrote
+ the description. Isn't it about time you donated $5 in
+ appreciation? The money goes to a charity.
+
+
+
+
+
+
+ Returns the version number on the DotNetZip assembly.
+
+
+ This property is exposed as a convenience. Callers
+ could also get the version value by retrieving GetName().Version
+ on the System.Reflection.Assembly object pointing to the
+ DotNetZip assembly. But sometimes it is not clear which
+ assembly is being loaded. This property makes it clear.
+
+
+
+
+ Gets or sets the read stream.
+
+
+ The read stream.
+
+ Error opening the file
+
+
+
+ This is an integer indexer into the Zip archive.
+
+
+
+ This property is read-write. But don't get too excited: When setting the
+ value, the only legal value is null (Nothing in VB). If you
+ assign a non-null value, the setter will throw an exception.
+
+
+ Setting the value to null is equivalent to calling with the filename for the given entry.
+
+
+
+ Thrown if the caller attempts to assign a non-null value to the indexer,
+ or if the caller uses an out-of-range index value.
+
+
+ The index value.
+
+
+ The ZipEntry within the Zip archive at the specified index. If the
+ entry does not exist in the archive, this indexer throws.
+
+
+
+
+ This is a name-based indexer into the Zip archive.
+
+
+
+ Retrieval by the string-based indexer is done on a case-insensitive basis,
+ by default. Set the property to use
+ case-sensitive comparisons.
+
+
+ This property is read-write. When setting the value, the only legal value is
+ null (Nothing in VB). Setting the value to null is
+ equivalent to calling with the
+ filename.
+
+
+ If you assign a non-null value, the setter will throw an exception.
+
+
+ It is can be true that this[value].FileName == value, but not
+ always. In other words, the FileName property of the ZipEntry
+ you retrieve with this indexer, can be equal to the index value, but not
+ always. In the case of directory entries in the archive, you may retrieve
+ them with the name of the directory with no trailing slash, even though in
+ the entry itself, the actual property may
+ include a trailing slash. In other words, for a directory entry named
+ "dir1", you may find zip["dir1"].FileName == "dir1/". Also, for any
+ entry with slashes, they are stored in the zip file as forward slashes, but
+ you may retrieve them with either forward or backslashes. So,
+ zip["dir1\\entry1.txt"].FileName == "dir1/entry.txt".
+
+
+
+ This example extracts only the entries in a zip file that are .txt files.
+
+ using (ZipFile zip = ZipFile.Read("PackedDocuments.zip"))
+ {
+ foreach (string s1 in zip.EntryFilenames)
+ {
+ if (s1.EndsWith(".txt"))
+ zip[s1].Extract("textfiles");
+ }
+ }
+
+ Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip")
+ Dim s1 As String
+ For Each s1 In zip.EntryFilenames
+ If s1.EndsWith(".txt") Then
+ zip(s1).Extract("textfiles")
+ End If
+ Next
+ End Using
+
+
+
+ Thrown if the caller attempts to assign a non-null value to the indexer.
+
+
+ The name of the file, including any directory path, to retrieve from the zip.
+ The filename match is not case-sensitive by default; you can use the
+ property to change this behavior. The
+ pathname can use forward-slashes or backward slashes.
+
+
+ The ZipEntry within the Zip archive, given by the specified
+ filename. If the named entry does not exist in the archive, this indexer
+ returns null (Nothing in VB).
+
+
+
+
+ The list of filenames for the entries contained within the zip archive.
+
+
+ According to the ZIP specification, the names of the entries use forward
+ slashes in pathnames. If you are scanning through the list, you may have to
+ swap forward slashes for backslashes.
+
+
+
+ This example shows one way to test if a filename is already contained within
+ a zip archive.
+
+ string ZipFileToRead= "PackedDocuments.zip";
+ string Candidate = "DatedMaterial.xps";
+ using (ZipFile zip = new ZipFile(ZipFileToRead))
+ {
+ if (zip.EntryFilenames.Contains(Candidate))
+ Console.WriteLine("The file '{0}' exists in the zip archive '{1}'",
+ Candidate,
+ ZipFileName);
+ else
+ Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'",
+ Candidate,
+ ZipFileName);
+ Console.WriteLine();
+ }
+
+ Dim ZipFileToRead As string = "PackedDocuments.zip"
+ Dim Candidate As string = "DatedMaterial.xps"
+ Using zip As New ZipFile(ZipFileToRead)
+ If zip.EntryFilenames.Contains(Candidate) Then
+ Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", _
+ Candidate, _
+ ZipFileName)
+ Else
+ Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", _
+ Candidate, _
+ ZipFileName)
+ End If
+ Console.WriteLine
+ End Using
+
+
+ The list of strings for the filenames contained within the Zip archive.
+
+
+
+
+ Returns the readonly collection of entries in the Zip archive.
+
+
+ If there are no entries in the current ZipFile, the value returned is a
+ non-null zero-element collection.
+
+
+
+
+ Returns the number of entries in the Zip archive.
+
+
+
+
+ An event handler invoked when a Save() starts, before and after each entry has been
+ written to the archive, when a Save() completes, and during other Save events.
+
+
+
+ Depending on the particular event, different properties on the
+ SaveProgressEventArgs parameter are set. The following table
+ summarizes the available EventTypes and the conditions under which this
+ event handler is invoked with a SaveProgressEventArgs with the given EventType.
+
+
+
+ value of EntryType
+ Meaning and conditions
+
+
+ ZipProgressEventType.Saving_Started
+ Fired when ZipFile.Save() begins.
+
+
+
+ ZipProgressEventType.Saving_BeforeSaveEntry
+ Fired within ZipFile.Save(), just before writing data for each particular entry.
+
+
+
+ ZipProgressEventType.Saving_AfterSaveEntry
+ Fired within ZipFile.Save(), just after having finished writing data for each
+ particular entry.
+
+
+
+ ZipProgressEventType.Saving_Completed
+ Fired when ZipFile.Save() has completed.
+
+
+
+ ZipProgressEventType.Saving_AfterSaveTempArchive
+ Fired after the temporary file has been created. This happens only
+ when saving to a disk file. This event will not be invoked when saving to a stream.
+
+
+
+ ZipProgressEventType.Saving_BeforeRenameTempArchive
+ Fired just before renaming the temporary file to the permanent location. This
+ happens only when saving to a disk file. This event will not be invoked when saving to a stream.
+
+
+
+ ZipProgressEventType.Saving_AfterRenameTempArchive
+ Fired just after renaming the temporary file to the permanent location. This
+ happens only when saving to a disk file. This event will not be invoked when saving to a stream.
+
+
+
+ ZipProgressEventType.Saving_AfterCompileSelfExtractor
+ Fired after a self-extracting archive has finished compiling.
+ This EventType is used only within SaveSelfExtractor().
+
+
+
+ ZipProgressEventType.Saving_BytesRead
+ Set during the save of a particular entry, to update progress of the Save().
+ When this EventType is set, the BytesTransferred is the number of bytes that have been read from the
+ source stream. The TotalBytesToTransfer is the number of bytes in the uncompressed file.
+
+
+
+
+
+
+ static bool justHadByteUpdate= false;
+ public static void SaveProgress(object sender, SaveProgressEventArgs e)
+ {
+ if (e.EventType == ZipProgressEventType.Saving_Started)
+ Console.WriteLine("Saving: {0}", e.ArchiveName);
+
+ else if (e.EventType == ZipProgressEventType.Saving_Completed)
+ {
+ justHadByteUpdate= false;
+ Console.WriteLine();
+ Console.WriteLine("Done: {0}", e.ArchiveName);
+ }
+
+ else if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry)
+ {
+ if (justHadByteUpdate)
+ Console.WriteLine();
+ Console.WriteLine(" Writing: {0} ({1}/{2})",
+ e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal);
+ justHadByteUpdate= false;
+ }
+
+ else if (e.EventType == ZipProgressEventType.Saving_EntryBytesRead)
+ {
+ if (justHadByteUpdate)
+ Console.SetCursorPosition(0, Console.CursorTop);
+ Console.Write(" {0}/{1} ({2}%)", e.BytesTransferred, e.TotalBytesToTransfer,
+ e.BytesTransferred / (0.01 * e.TotalBytesToTransfer ));
+ justHadByteUpdate= true;
+ }
+ }
+
+ public static ZipUp(string targetZip, string directory)
+ {
+ using (var zip = new ZipFile()) {
+ zip.SaveProgress += SaveProgress;
+ zip.AddDirectory(directory);
+ zip.Save(targetZip);
+ }
+ }
+
+
+
+ Public Sub ZipUp(ByVal targetZip As String, ByVal directory As String)
+ Try
+ Using zip As ZipFile = New ZipFile
+ AddHandler zip.SaveProgress, AddressOf MySaveProgress
+ zip.AddDirectory(directory)
+ zip.Save(targetZip)
+ End Using
+ Catch ex1 As Exception
+ Console.Error.WriteLine(("exception: " & ex1.ToString))
+ End Try
+ End Sub
+
+ Private Shared justHadByteUpdate As Boolean = False
+
+ Public Shared Sub MySaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs)
+ If (e.EventType Is ZipProgressEventType.Saving_Started) Then
+ Console.WriteLine("Saving: {0}", e.ArchiveName)
+
+ ElseIf (e.EventType Is ZipProgressEventType.Saving_Completed) Then
+ justHadByteUpdate = False
+ Console.WriteLine
+ Console.WriteLine("Done: {0}", e.ArchiveName)
+
+ ElseIf (e.EventType Is ZipProgressEventType.Saving_BeforeWriteEntry) Then
+ If justHadByteUpdate Then
+ Console.WriteLine
+ End If
+ Console.WriteLine(" Writing: {0} ({1}/{2})", e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal)
+ justHadByteUpdate = False
+
+ ElseIf (e.EventType Is ZipProgressEventType.Saving_EntryBytesRead) Then
+ If justHadByteUpdate Then
+ Console.SetCursorPosition(0, Console.CursorTop)
+ End If
+ Console.Write(" {0}/{1} ({2}%)", e.BytesTransferred, _
+ e.TotalBytesToTransfer, _
+ (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer)))
+ justHadByteUpdate = True
+ End If
+ End Sub
+
+
+ This is an example of using the SaveProgress events in a WinForms app.
+
+
+ delegate void SaveEntryProgress(SaveProgressEventArgs e);
+ delegate void ButtonClick(object sender, EventArgs e);
+
+ public class WorkerOptions
+ {
+ public string ZipName;
+ public string Folder;
+ public string Encoding;
+ public string Comment;
+ public int ZipFlavor;
+ public Zip64Option Zip64;
+ }
+
+ private int _progress2MaxFactor;
+ private bool _saveCanceled;
+ private long _totalBytesBeforeCompress;
+ private long _totalBytesAfterCompress;
+ private Thread _workerThread;
+
+
+ private void btnZipup_Click(object sender, EventArgs e)
+ {
+ KickoffZipup();
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ if (this.lblStatus.InvokeRequired)
+ {
+ this.lblStatus.Invoke(new ButtonClick(this.btnCancel_Click), new object[] { sender, e });
+ }
+ else
+ {
+ _saveCanceled = true;
+ lblStatus.Text = "Canceled...";
+ ResetState();
+ }
+ }
+
+ private void KickoffZipup()
+ {
+ _folderName = tbDirName.Text;
+
+ if (_folderName == null || _folderName == string.Empty) return;
+ if (this.tbZipName.Text == null || this.tbZipName.Text == string.Empty) return;
+
+ // check for existence of the zip file:
+ if (System.IO.File.Exists(this.tbZipName.Text))
+ {
+ var dlgResult = MessageBox.Show(string.Format("The file you have specified ({0}) already exists." +
+ " Do you want to overwrite this file?", this.tbZipName.Text),
+ "Confirmation is Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (dlgResult != DialogResult.Yes) return;
+ System.IO.File.Delete(this.tbZipName.Text);
+ }
+
+ _saveCanceled = false;
+ _nFilesCompleted = 0;
+ _totalBytesAfterCompress = 0;
+ _totalBytesBeforeCompress = 0;
+ this.btnOk.Enabled = false;
+ this.btnOk.Text = "Zipping...";
+ this.btnCancel.Enabled = true;
+ lblStatus.Text = "Zipping...";
+
+ var options = new WorkerOptions
+ {
+ ZipName = this.tbZipName.Text,
+ Folder = _folderName,
+ Encoding = "ibm437"
+ };
+
+ if (this.comboBox1.SelectedIndex != 0)
+ {
+ options.Encoding = this.comboBox1.SelectedItem.ToString();
+ }
+
+ if (this.radioFlavorSfxCmd.Checked)
+ options.ZipFlavor = 2;
+ else if (this.radioFlavorSfxGui.Checked)
+ options.ZipFlavor = 1;
+ else options.ZipFlavor = 0;
+
+ if (this.radioZip64AsNecessary.Checked)
+ options.Zip64 = Zip64Option.AsNecessary;
+ else if (this.radioZip64Always.Checked)
+ options.Zip64 = Zip64Option.Always;
+ else options.Zip64 = Zip64Option.Never;
+
+ options.Comment = string.Format("Encoding:{0} || Flavor:{1} || ZIP64:{2}\r\nCreated at {3} || {4}\r\n",
+ options.Encoding,
+ FlavorToString(options.ZipFlavor),
+ options.Zip64.ToString(),
+ System.DateTime.Now.ToString("yyyy-MMM-dd HH:mm:ss"),
+ this.Text);
+
+ if (this.tbComment.Text != TB_COMMENT_NOTE)
+ options.Comment += this.tbComment.Text;
+
+ _workerThread = new Thread(this.DoSave);
+ _workerThread.Name = "Zip Saver thread";
+ _workerThread.Start(options);
+ this.Cursor = Cursors.WaitCursor;
+ }
+
+
+ private void DoSave(object p)
+ {
+ WorkerOptions options = p as WorkerOptions;
+ try
+ {
+ using (var zip1 = new ZipFile())
+ {
+ zip1.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(options.Encoding);
+ zip1.Comment = options.Comment;
+ zip1.AddDirectory(options.Folder);
+ _entriesToZip = zip1.EntryFileNames.Count;
+ SetProgressBars();
+ zip1.SaveProgress += this.zip1_SaveProgress;
+
+ zip1.UseZip64WhenSaving = options.Zip64;
+
+ if (options.ZipFlavor == 1)
+ zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.WinFormsApplication);
+ else if (options.ZipFlavor == 2)
+ zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.ConsoleApplication);
+ else
+ zip1.Save(options.ZipName);
+ }
+ }
+ catch (System.Exception exc1)
+ {
+ MessageBox.Show(string.Format("Exception while zipping: {0}", exc1.Message));
+ btnCancel_Click(null, null);
+ }
+ }
+
+
+
+ void zip1_SaveProgress(object sender, SaveProgressEventArgs e)
+ {
+ switch (e.EventType)
+ {
+ case ZipProgressEventType.Saving_AfterWriteEntry:
+ StepArchiveProgress(e);
+ break;
+ case ZipProgressEventType.Saving_EntryBytesRead:
+ StepEntryProgress(e);
+ break;
+ case ZipProgressEventType.Saving_Completed:
+ SaveCompleted();
+ break;
+ case ZipProgressEventType.Saving_AfterSaveTempArchive:
+ // this event only occurs when saving an SFX file
+ TempArchiveSaved();
+ break;
+ }
+ if (_saveCanceled)
+ e.Cancel = true;
+ }
+
+
+
+ private void StepArchiveProgress(SaveProgressEventArgs e)
+ {
+ if (this.progressBar1.InvokeRequired)
+ {
+ this.progressBar1.Invoke(new SaveEntryProgress(this.StepArchiveProgress), new object[] { e });
+ }
+ else
+ {
+ if (!_saveCanceled)
+ {
+ _nFilesCompleted++;
+ this.progressBar1.PerformStep();
+ _totalBytesAfterCompress += e.CurrentEntry.CompressedSize;
+ _totalBytesBeforeCompress += e.CurrentEntry.UncompressedSize;
+
+ // reset the progress bar for the entry:
+ this.progressBar2.Value = this.progressBar2.Maximum = 1;
+
+ this.Update();
+ }
+ }
+ }
+
+
+ private void StepEntryProgress(SaveProgressEventArgs e)
+ {
+ if (this.progressBar2.InvokeRequired)
+ {
+ this.progressBar2.Invoke(new SaveEntryProgress(this.StepEntryProgress), new object[] { e });
+ }
+ else
+ {
+ if (!_saveCanceled)
+ {
+ if (this.progressBar2.Maximum == 1)
+ {
+ // reset
+ long max = e.TotalBytesToTransfer;
+ _progress2MaxFactor = 0;
+ while (max > int.MaxValue)
+ {
+ max /= 2;
+ _progress2MaxFactor++;
+ }
+ this.progressBar2.Maximum = (int)max;
+ lblStatus.Text = string.Format("{0} of {1} files...({2})",
+ _nFilesCompleted + 1, _entriesToZip, e.CurrentEntry.FileName);
+ }
+
+ int xferred = e.BytesTransferred >> _progress2MaxFactor;
+
+ this.progressBar2.Value = (xferred >= this.progressBar2.Maximum)
+ ? this.progressBar2.Maximum
+ : xferred;
+
+ this.Update();
+ }
+ }
+ }
+
+ private void SaveCompleted()
+ {
+ if (this.lblStatus.InvokeRequired)
+ {
+ this.lblStatus.Invoke(new MethodInvoker(this.SaveCompleted));
+ }
+ else
+ {
+ lblStatus.Text = string.Format("Done, Compressed {0} files, {1:N0}% of original.",
+ _nFilesCompleted, (100.00 * _totalBytesAfterCompress) / _totalBytesBeforeCompress);
+ ResetState();
+ }
+ }
+
+ private void ResetState()
+ {
+ this.btnCancel.Enabled = false;
+ this.btnOk.Enabled = true;
+ this.btnOk.Text = "Zip it!";
+ this.progressBar1.Value = 0;
+ this.progressBar2.Value = 0;
+ this.Cursor = Cursors.Default;
+ if (!_workerThread.IsAlive)
+ _workerThread.Join();
+ }
+
+
+
+
+
+ An event handler invoked before, during, and after the reading of a zip archive.
+
+
+
+ Depending on the particular event being signaled, different properties on the
+ ReadProgressEventArgs parameter are set. The following table
+ summarizes the available EventTypes and the conditions under which this
+ event handler is invoked with a ReadProgressEventArgs with the given EventType.
+
+
+
+ value of EntryType
+ Meaning and conditions
+
+
+ ZipProgressEventType.Reading_Started
+ Fired just as ZipFile.Read() begins. Meaningful properties: ArchiveName.
+
+
+
+ ZipProgressEventType.Reading_Completed
+ Fired when ZipFile.Read() has completed. Meaningful properties: ArchiveName.
+
+
+
+ ZipProgressEventType.Reading_ArchiveBytesRead
+ Fired while reading, updates the number of bytes read for the entire archive.
+ Meaningful properties: ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer.
+
+
+
+ ZipProgressEventType.Reading_BeforeReadEntry
+ Indicates an entry is about to be read from the archive.
+ Meaningful properties: ArchiveName, EntriesTotal.
+
+
+
+ ZipProgressEventType.Reading_AfterReadEntry
+ Indicates an entry has just been read from the archive.
+ Meaningful properties: ArchiveName, EntriesTotal, CurrentEntry.
+
+
+
+
+
+
+
+ An event handler invoked before, during, and after extraction of entries
+ in the zip archive.
+
+
+
+ Depending on the particular event, different properties on the
+ ExtractProgressEventArgs parameter are set. The following table
+ summarizes the available EventTypes and the conditions under which this
+ event handler is invoked with a ExtractProgressEventArgs with the given EventType.
+
+
+
+ value of EntryType
+ Meaning and conditions
+
+
+ ZipProgressEventType.Extracting_BeforeExtractAll
+ Set when ExtractAll() begins. The ArchiveName, Overwrite,
+ and ExtractLocation properties are meaningful.
+
+
+ ZipProgressEventType.Extracting_AfterExtractAll
+ Set when ExtractAll() has completed. The ArchiveName,
+ Overwrite, and ExtractLocation properties are meaningful.
+
+
+
+ ZipProgressEventType.Extracting_BeforeExtractEntry
+ Set when an Extract() on an entry in the ZipFile has begun.
+ Properties that are meaningful: ArchiveName, EntriesTotal, CurrentEntry, Overwrite,
+ ExtractLocation, EntriesExtracted.
+
+
+
+ ZipProgressEventType.Extracting_AfterExtractEntry
+ Set when an Extract() on an entry in the ZipFile has completed.
+ Properties that are meaningful: ArchiveName, EntriesTotal, CurrentEntry, Overwrite,
+ ExtractLocation, EntriesExtracted.
+
+
+
+ ZipProgressEventType.Extracting_EntryBytesWritten
+ Set within a call to Extract() on an entry in the ZipFile, as
+ data is extracted for the entry. Properties that are meaningful: ArchiveName,
+ CurrentEntry, BytesTransferred, TotalBytesToTransfer.
+
+
+
+ ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite
+ Set within a call to Extract() on an entry in the ZipFile, when the
+ extraction would overwrite an existing file. This event type is used only when
+ ExtractExistingFileAction on the ZipFile or ZipEntry is set
+ to InvokeExtractProgressEvent.
+
+
+
+
+
+
+ private static bool justHadByteUpdate = false;
+ public static void ExtractProgress(object sender, ExtractProgressEventArgs e)
+ {
+ if(e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten)
+ {
+ if (justHadByteUpdate)
+ Console.SetCursorPosition(0, Console.CursorTop);
+
+ Console.Write(" {0}/{1} ({2}%)", e.BytesTransferred, e.TotalBytesToTransfer,
+ e.BytesTransferred / (0.01 * e.TotalBytesToTransfer ));
+ justHadByteUpdate = true;
+ }
+ else if(e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
+ {
+ if (justHadByteUpdate)
+ Console.WriteLine();
+ Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName);
+ justHadByteUpdate= false;
+ }
+ }
+
+ public static ExtractZip(string zipToExtract, string directory)
+ {
+ string TargetDirectory= "extract";
+ using (var zip = ZipFile.Read(zipToExtract)) {
+ zip.ExtractProgress += ExtractProgress;
+ foreach (var e in zip1)
+ {
+ e.Extract(TargetDirectory, true);
+ }
+ }
+ }
+
+
+
+ Public Shared Sub Main(ByVal args As string())
+ Dim ZipToUnpack As string = "C1P3SML.zip"
+ Dim TargetDir As string = "ExtractTest_Extract"
+ Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir)
+ Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
+ AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
+ Dim e As ZipEntry
+ For Each e In zip1
+ e.Extract(TargetDir, True)
+ Next
+ End Using
+ End Sub
+
+ Private Shared justHadByteUpdate As Boolean = False
+
+ Public Shared Sub MyExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs)
+ If (e.EventType = ZipProgressEventType.Extracting_EntryBytesWritten) Then
+ If ExtractTest.justHadByteUpdate Then
+ Console.SetCursorPosition(0, Console.CursorTop)
+ End If
+ Console.Write(" {0}/{1} ({2}%)", e.BytesTransferred, e.TotalBytesToTransfer, (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer)))
+ ExtractTest.justHadByteUpdate = True
+ ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractEntry) Then
+ If ExtractTest.justHadByteUpdate Then
+ Console.WriteLine
+ End If
+ Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName)
+ ExtractTest.justHadByteUpdate = False
+ End If
+ End Sub
+
+
+
+
+
+ An event handler invoked before, during, and after Adding entries to a zip archive.
+
+
+ Adding a large number of entries to a zip file can take a long
+ time. For example, when calling on a
+ directory that contains 50,000 files, it could take 3 minutes or so.
+ This event handler allws an application to track the progress of the Add
+ operation.
+
+
+
+
+ int _numEntriesToAdd= 0;
+ int _numEntriesAdded= 0;
+ void AddProgressHandler(object sender, AddProgressEventArgs e)
+ {
+ switch (e.EventType)
+ {
+ case ZipProgressEventType.Adding_Started:
+ Console.WriteLine("Adding files to the zip...");
+ break;
+ case ZipProgressEventType.Adding_AfterAddEntry:
+ _numEntriesAdded++;
+ Console.WriteLine(string.Format("Adding file {0}/{1} :: {2}",
+ _numEntriesAdded, _numEntriesToAdd, e.CurrentEntry.FileName));
+ break;
+
+ case ZipProgressEventType.Adding_Completed:
+ Console.WriteLine("Added all files");
+ break;
+ }
+ }
+
+ void CreateTheZip()
+ {
+ using (ZipFile zip = new ZipFile())
+ {
+ zip.AddProgress += AddProgressHandler;
+ zip.AddDirectory(System.IO.Path.GetFileName(DirToZip));
+ zip.BufferSize = 4096;
+ zip.SaveProgress += SaveProgressHandler;
+ zip.Save(ZipFileToCreate);
+ }
+ }
+
+
+
+
+
+
+ An event handler invoked when an error occurs during open or read of files
+ while saving a zip archive.
+
+
+
+ In some cases an error will occur when a file to be added to the zip
+ archive is opened. In other cases, an error might occur after the file
+ has been successfully opened, while reading the file.
+
+
+ The first problem might occur when calling Adddirectory() on a directory
+ that contains a Clipper .dbf file; the file is locked by Clipper and
+ cannot be opened bby another process. An example of the second problem is
+ the ERROR_LOCK_VIOLATION that results when a file is opened by another
+ process, but not locked, and a range lock has been taken on the file.
+ Microsoft Outlook takes range locks on .PST files.
+
+
+
+
+
+ The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress.
+
+
+
+
+ None means that the data will be simply stored, with no change at all.
+
+
+
+
+ Same as None.
+
+
+
+
+ The fastest but least effective compression.
+
+
+
+
+ A synonym for BestSpeed.
+
+
+
+
+ A little slower, but better, than level 1.
+
+
+
+
+ A little slower, but better, than level 2.
+
+
+
+
+ A little slower, but better, than level 3.
+
+
+
+
+ A little slower than level 4, but with better compression.
+
+
+
+
+ The default compression level, with a good balance of speed and compression efficiency.
+
+
+
+
+ A synonym for Default.
+
+
+
+
+ Pretty good compression!
+
+
+
+
+ Better compression than Level7!
+
+
+
+
+ The "best" compression, where best means greatest reduction in size of the input data stream.
+ This is also the slowest compression.
+
+
+
+
+ A synonym for BestCompression.
+
+
+
+
+ Describes options for how the compression algorithm is executed. Different strategies
+ work better on different sorts of data. The strategy parameter can affect the compression
+ ratio and the speed of compression but not the correctness of the compresssion.
+
+
+
+
+ The default strategy is probably the best for normal data.
+
+
+
+
+ The Filtered strategy is intended to be used most effectively with data produced by a
+ filter or predictor. By this definition, filtered data consists mostly of small
+ values with a somewhat random distribution. In this case, the compression algorithm
+ is tuned to compress them better. The effect of Filtered is to force more Huffman
+ coding and less string matching; it is a half-setp between Default and HuffmanOnly.
+
+
+
+
+ Using HuffmanOnly will force the compressor to do Huffman encoding only, with no
+ string matching.
+
+
+
+
+ An enum to specify the direction of transcoding - whether to compress or decompress.
+
+
+
+
+ Used to specify that the stream should compress the data.
+
+
+
+
+ Used to specify that the stream should decompress the data.
+
+
+
+
+ A general purpose exception class for exceptions in the Zlib library.
+
+
+
+
+ The ZlibException class captures exception information generated
+ by the Zlib library.
+
+
+
+
+ This ctor collects a message attached to the exception.
+
+ The message.
+
+
+
+ Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951).
+
+
+ This class compresses and decompresses data according to the Deflate algorithm
+ and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE.
+
+
+
+
+ The compression level to use in this codec. Useful only in compression mode.
+
+
+
+
+ The number of Window Bits to use.
+
+
+ This gauges the size of the sliding window, and hence the
+ compression effectiveness as well as memory consumption. It's best to just leave this
+ setting alone if you don't know what it is. The maximum value is 15 bits, which implies
+ a 32k window.
+
+
+
+
+ The compression strategy to use.
+
+
+ This is only effective in compression. The theory offered by ZLIB is that different
+ strategies could potentially produce significant differences in compression behavior
+ for different data sets. Unfortunately I don't have any good recommendations for how
+ to set it differently. When I tested changing the strategy I got minimally different
+ compression performance. It's best to leave this property alone if you don't have a
+ good feel for it. Or, you may want to produce a test harness that runs through the
+ different strategy options and evaluates them on different file types. If you do that,
+ let me know your results.
+
+
+
+
+ Create a ZlibCodec.
+
+
+ If you use this default constructor, you will later have to explicitly call
+ InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress
+ or decompress.
+
+
+
+
+ Create a ZlibCodec that either compresses or decompresses.
+
+
+ Indicates whether the codec should compress (deflate) or decompress (inflate).
+
+
+
+
+ Initialize the inflation state.
+
+
+ Z_OK if everything goes well.
+
+
+ It is not necessary to call this before using the ZlibCodec to inflate data;
+ It is implicitly called when you call the constructor.
+
+
+
+
+ Initialize the inflation state with an explicit flag to
+ govern the handling of RFC1950 header bytes.
+
+ whether to expect an RFC1950 header byte
+ pair when reading the stream of data to be inflated.
+
+ Z_OK if everything goes well.
+
+
+ By default, the ZLIB header defined in RFC 1950 is expected. If
+ you want to read a zlib stream you should specify true for
+ expectRfc1950Header. If you have a deflate stream, you will want to specify
+ false. It is only necessary to invoke this initializer explicitly if you
+ want to specify false.
+
+
+
+
+ Initialize the ZlibCodec for inflation, with the specified number of window bits.
+
+ The number of window bits to use. If you need to ask what that is,
+ then you shouldn't be calling this initializer.
+
+ Z_OK if all goes well.
+
+
+
+
+ Initialize the inflation state with an explicit flag to govern the handling of
+ RFC1950 header bytes.
+
+ The number of window bits to use. If you need to ask what that is,
+ then you shouldn't be calling this initializer.
+ whether to expect an RFC1950 header byte pair when reading
+ the stream of data to be inflated.
+
+ Z_OK if everything goes well.
+
+
+ If you want to read a zlib stream you should specify true for
+ expectRfc1950Header. In this case, the library will expect to find a ZLIB
+ header, as defined in RFC
+ 1950, in the compressed stream. If you will be reading a DEFLATE or
+ GZIP stream, which does not have such a header, you will want to specify
+ false.
+
+
+
+
+ Inflate the data in the InputBuffer, placing the result in the OutputBuffer.
+
+
+ You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and
+ AvailableBytesOut before calling this method.
+
+
+
+ private void InflateBuffer()
+ {
+ int bufferSize = 1024;
+ byte[] buffer = new byte[bufferSize];
+ ZlibCodec decompressor = new ZlibCodec();
+
+ Console.WriteLine("\n============================================");
+ Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length);
+ MemoryStream ms = new MemoryStream(DecompressedBytes);
+
+ int rc = decompressor.InitializeInflate();
+
+ decompressor.InputBuffer = CompressedBytes;
+ decompressor.NextIn = 0;
+ decompressor.AvailableBytesIn = CompressedBytes.Length;
+
+ decompressor.OutputBuffer = buffer;
+
+ // pass 1: inflate
+ do
+ {
+ decompressor.NextOut = 0;
+ decompressor.AvailableBytesOut = buffer.Length;
+ rc = decompressor.Inflate(ZlibConstants.Z_NO_FLUSH);
+
+ if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END)
+ throw new InvalidOperationException("inflating: " + decompressor.Message);
+
+ ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut);
+ }
+ while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0);
+
+ // pass 2: finish and flush
+ do
+ {
+ decompressor.NextOut = 0;
+ decompressor.AvailableBytesOut = buffer.Length;
+ rc = decompressor.Inflate(ZlibConstants.Z_FINISH);
+
+ if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK)
+ throw new InvalidOperationException("inflating: " + decompressor.Message);
+
+ if (buffer.Length - decompressor.AvailableBytesOut > 0)
+ ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut);
+ }
+ while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0);
+
+ decompressor.EndInflate();
+ }
+
+
+
+ The flush to use when inflating.
+ Z_OK if everything goes well.
+
+
+
+ Ends an inflation session.
+
+
+ Call this after successively calling Inflate(). This will cause all buffers to be flushed.
+ After calling this you cannot call Inflate() without a intervening call to one of the
+ InitializeInflate() overloads.
+
+ Z_OK if everything goes well.
+
+
+
+ I don't know what this does!
+
+ Z_OK if everything goes well.
+
+
+
+ Initialize the ZlibCodec for deflation operation.
+
+
+ Z_OK if all goes well. You generally don't need to check the return code.
+
+
+
+ int bufferSize = 40000;
+ byte[] CompressedBytes = new byte[bufferSize];
+ byte[] DecompressedBytes = new byte[bufferSize];
+ ZlibCodec compressor = new ZlibCodec();
+ compressor.InitializeDeflate(CompressionLevel.Default);
+ compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress);
+ compressor.NextIn = 0;
+ compressor.AvailableBytesIn = compressor.InputBuffer.Length;
+ compressor.OutputBuffer = CompressedBytes;
+ compressor.NextOut = 0;
+ compressor.AvailableBytesOut = CompressedBytes.Length;
+ while (compressor.TotalBytesIn != TextToCompress.Length && compressor.TotalBytesOut < bufferSize)
+ {
+ compressor.Deflate(ZlibConstants.Z_NO_FLUSH);
+ }
+ while (true)
+ {
+ int rc= compressor.Deflate(ZlibConstants.Z_FINISH);
+ if (rc == ZlibConstants.Z_STREAM_END) break;
+ }
+ compressor.EndDeflate();
+
+
+
+ The codec will use the MAX window bits and the default level of compression.
+
+
+
+
+ Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel.
+
+ The compression level for the codec.
+
+ Z_OK if all goes well.
+
+
+ The codec will use the maximum window bits (15) and the specified
+ CompressionLevel. It will emit a ZLIB stream as it compresses.
+
+
+
+
+ Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel,
+ and the explicit flag governing whether to emit an RFC1950 header byte pair.
+
+ The compression level for the codec.
+ whether to emit an initial RFC1950 byte pair in the compressed stream.
+
+ Z_OK if all goes well.
+
+
+ The codec will use the maximum window bits (15) and the specified CompressionLevel.
+ If you want to generate a zlib stream, you should specify true for
+ wantRfc1950Header. In this case, the library will emit a ZLIB
+ header, as defined in RFC
+ 1950, in the compressed stream.
+
+
+
+
+ Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel,
+ and the specified number of window bits.
+
+
+ The codec will use the specified number of window bits and the specified CompressionLevel.
+
+ The compression level for the codec.
+ the number of window bits to use. If you don't know what this means, don't use this method.
+ Z_OK if all goes well.
+
+
+
+ Initialize the ZlibCodec for deflation operation, using the specified
+ CompressionLevel, the specified number of window bits, and the explicit flag
+ governing whether to emit an RFC1950 header byte pair.
+
+ The compression level for the codec.
+ the number of window bits to use. If you don't know what this means, don't use this method.
+ whether to emit an initial RFC1950 byte pair in the compressed stream.
+
+ Z_OK if all goes well.
+
+
+
+
+ Deflate one batch of data.
+
+
+ You must have set InputBuffer and OutputBuffer before calling this method.
+
+
+
+ private void DeflateBuffer(CompressionLevel level)
+ {
+ int bufferSize = 1024;
+ byte[] buffer = new byte[bufferSize];
+ ZlibCodec compressor = new ZlibCodec();
+
+ Console.WriteLine("\n============================================");
+ Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length);
+ MemoryStream ms = new MemoryStream();
+
+ int rc = compressor.InitializeDeflate(level);
+
+ compressor.InputBuffer = UncompressedBytes;
+ compressor.NextIn = 0;
+ compressor.AvailableBytesIn = UncompressedBytes.Length;
+
+ compressor.OutputBuffer = buffer;
+
+ // pass 1: deflate
+ do
+ {
+ compressor.NextOut = 0;
+ compressor.AvailableBytesOut = buffer.Length;
+ rc = compressor.Deflate(ZlibConstants.Z_NO_FLUSH);
+
+ if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END)
+ throw new InvalidOperationException("deflating: " + compressor.Message);
+
+ ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut);
+ }
+ while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0);
+
+ // pass 2: finish and flush
+ do
+ {
+ compressor.NextOut = 0;
+ compressor.AvailableBytesOut = buffer.Length;
+ rc = compressor.Deflate(ZlibConstants.Z_FINISH);
+
+ if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK)
+ throw new InvalidOperationException("deflating: " + compressor.Message);
+
+ if (buffer.Length - compressor.AvailableBytesOut > 0)
+ ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut);
+ }
+ while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0);
+
+ compressor.EndDeflate();
+
+ ms.Seek(0, SeekOrigin.Begin);
+ CompressedBytes = new byte[compressor.TotalBytesOut];
+ ms.Read(CompressedBytes, 0, CompressedBytes.Length);
+ }
+
+
+ whether to flush all data as you deflate. Generally you will want to
+ use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to
+ flush everything.
+
+ Z_OK if all goes well.
+
+
+
+ End a deflation session.
+
+
+ Call this after making a series of one or more calls to Deflate(). All buffers are flushed.
+
+ Z_OK if all goes well.
+
+
+
+ Reset a codec for another deflation session.
+
+
+ Call this to reset the deflation state. For example if a thread is deflating
+ non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first
+ block and before the next Deflate(None) of the second block.
+
+
+
+
+ Set the CompressionStrategy and CompressionLevel for a deflation session.
+
+ the level of compression to use.
+ the strategy to use for compression.
+ Z_OK if all goes well.
+
+
+
+ Set the dictionary to be used for either Inflation or Deflation.
+
+ The dictionary bytes to use.
+ Z_OK if all goes well.
+
+
+
+ The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this.
+
+
+
+
+ The buffer from which data is taken.
+
+
+
+
+ An index into the InputBuffer array, indicating where to start reading.
+
+
+
+
+ The number of bytes available in the InputBuffer, starting at NextIn.
+
+
+ Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call.
+ The class will update this number as calls to Inflate/Deflate are made.
+
+
+
+
+ Total number of bytes read so far, through all calls to Inflate()/Deflate().
+
+
+
+
+ Buffer to store output data.
+
+
+
+
+ An index into the OutputBuffer array, indicating where to start writing.
+
+
+
+
+ The number of bytes available in the OutputBuffer, starting at NextOut.
+
+
+ Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call.
+ The class will update this number as calls to Inflate/Deflate are made.
+
+
+
+
+ Total number of bytes written to the output so far, through all calls to Inflate()/Deflate().
+
+
+
+
+ used for diagnostics, when something goes wrong!
+
+
+
+
+ A bunch of constants used in the Zlib interface.
+
+
+
+
+ The maximum number of window bits for the Deflate algorithm.
+
+
+
+
+ The default number of window bits for the Deflate algorithm.
+
+
+
+
+ indicates everything is A-OK
+
+
+
+
+ Indicates that the last operation reached the end of the stream.
+
+
+
+
+ The operation ended in need of a dictionary.
+
+
+
+
+ There was an error with the stream - not enough data, not open and readable, etc.
+
+
+
+
+ There was an error with the data - not enough data, bad data, etc.
+
+
+
+
+ There was an error with the working buffer.
+
+
+
+
+ The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes.
+
+
+
+
+ The minimum size of the working buffer used in the ZlibCodec class. Currently it is 128 bytes.
+
+
+
+
+ Represents a Zlib stream for compression or decompression.
+
+
+
+ The ZlibStream is a Decorator on a . It adds ZLIB compression or decompression to any
+ stream.
+
+ Using this stream, applications can compress or decompress data via
+ stream Read and Write operations. Either compresssion or
+ decompression can occur through either reading or writing. The compression
+ format used is ZLIB, which is documented in IETF RFC 1950, "ZLIB Compressed
+ Data Format Specification version 3.3". This implementation of ZLIB always uses
+ DEFLATE as the compression method. (see IETF RFC 1951, "DEFLATE
+ Compressed Data Format Specification version 1.3.")
+
+ The ZLIB format allows for varying compression methods, window sizes, and dictionaries.
+ This implementation always uses the DEFLATE compression method, a preset dictionary,
+ and 15 window bits by default.
+
+
+ This class is similar to , except that it adds the
+ RFC1950 header and trailer bytes to a compressed stream when compressing, or expects
+ the RFC1950 header and trailer bytes when decompressing. It is also similar to the
+ .
+
+
+
+
+
+
+
+ Create a ZlibStream using the specified CompressionMode.
+
+
+ When mode is CompressionMode.Compress, the ZlibStream will use
+ the default compression level. The "captive" stream will be closed when the
+ ZlibStream is closed.
+
+
+ This example uses a ZlibStream to compress a file, and writes the compressed
+ data to another file.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(fileToCompress + ".zlib"))
+ {
+ using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(fileToCompress & ".zlib")
+ Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+ The stream which will be read or written.
+ Indicates whether the ZlibStream will compress or decompress.
+
+
+
+ Create a ZlibStream using the specified CompressionMode and the specified CompressionLevel.
+
+ The stream to be read or written while deflating or inflating.
+ Indicates whether the ZlibStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness.
+
+ This example uses a ZlibStream to compress data from a file, and writes the
+ compressed data to another file.
+
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (var raw = System.IO.File.Create(fileToCompress + ".zlib"))
+ {
+ using (Stream compressor = new ZlibStream(raw,
+ CompressionMode.Compress,
+ CompressionLevel.BestCompression))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ }
+
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using raw As FileStream = File.Create(fileToCompress & ".zlib")
+ Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ End Using
+
+
+ When mode is CompressionMode.Decompress, the level parameter is ignored.
+ The "captive" stream will be closed when the ZlibStream is closed.
+
+
+
+
+ Create a ZlibStream using the specified CompressionMode, and explicitly specify
+ whether the captive stream should be left open after Deflation or Inflation.
+
+ The stream which will be read or written. This is called the
+ "captive" stream in other places in this documentation.
+ Indicates whether the ZlibStream will compress or decompress.
+ true if the application would like the stream to remain
+ open after inflation/deflation.
+
+ When mode is CompressionMode.Compress, the ZlibStream will use
+ the default compression level.
+
+ This constructor allows the application to request that the captive stream
+ remain open after the deflation or inflation occurs. By default, after Close()
+ is called on the stream, the captive stream is also closed. In some cases this
+ is not desired, for example if the stream is a that will be re-read after compression. Specify
+ true for the leaveOpen parameter to leave the stream open.
+
+
+ See the other overloads of this constructor for example code.
+
+
+
+
+
+ Create a ZlibStream using the specified CompressionMode and the specified
+ CompressionLevel, and explicitly specify whether the stream should be left open
+ after Deflation or Inflation.
+
+ The stream which will be read or written.
+ Indicates whether the ZlibStream will compress or decompress.
+ A tuning knob to trade speed for effectiveness. This parameter is effective only when
+ mode is CompressionMode.Compress.
+ true if the application would like the stream to remain open after inflation/deflation.
+
+ This example shows how to use a ZlibStream to compress the data from a file,
+ and store the result into another file. The filestream remains open to allow
+ additional data to be written to it.
+
+ using (var output = System.IO.File.Create(fileToCompress + ".zlib"))
+ {
+ using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
+ {
+ using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true))
+ {
+ byte[] buffer = new byte[WORKING_BUFFER_SIZE];
+ int n;
+ while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
+ {
+ compressor.Write(buffer, 0, n);
+ }
+ }
+ }
+ // can write additional data to the output stream here
+ }
+
+ Using output As FileStream = File.Create(fileToCompress & ".zlib")
+ Using input As Stream = File.OpenRead(fileToCompress)
+ Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True)
+ Dim buffer As Byte() = New Byte(4096) {}
+ Dim n As Integer = -1
+ Do While (n <> 0)
+ If (n > 0) Then
+ compressor.Write(buffer, 0, n)
+ End If
+ n = input.Read(buffer, 0, buffer.Length)
+ Loop
+ End Using
+ End Using
+ ' can write additional data to the output stream here.
+ End Using
+
+
+
+ This constructor allows the application to request that the captive stream
+ remain open after the deflation or inflation occurs. By default, after Close()
+ is called on the stream, the captive stream is also closed. In some cases this
+ is not desired, for example if the stream is a that will be re-read after compression. Specify
+ true for the leaveOpen parameter to leave the stream open.
+
+
+ When mode is CompressionMode.Decompress, the level parameter is ignored.
+
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ Dispose the stream.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+ This may or may not result in a Close() call on the captive stream.
+ See the constructors that have a leaveOpen parameter for more information.
+
+
+
+
+ Flush the stream.
+
+
+ An I/O error occurs.
+
+
+
+
+ Read data from the stream.
+
+ The buffer into which the read data should be placed.
+ the offset within that data array to put the first byte read.
+ the number of bytes to read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+ The sum of and is larger than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+ If you wish to use the ZlibStream to compress data while reading, you can create a
+ ZlibStream with CompressionMode.Compress, providing an uncompressed data stream. Then
+ call Read() on that ZlibStream, and the data read will be compressed. If you wish to
+ use the ZlibStream to decompress data while reading, you can create a ZlibStream with
+ CompressionMode.Decompress, providing a readable compressed data stream. Then call
+ Read() on that ZlibStream, and the data will be decompressed as it is read.
+
+
+ A ZlibStream can be used for Read() or Write(), but not both.
+
+
+
+
+
+ Calling this method always throws a NotImplementedException.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Calling this method always throws a NotImplementedException.
+
+ The desired length of the current stream in bytes.
+
+ An I/O error occurs.
+
+
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Write data to the stream.
+
+
+
+ If you wish to use the ZlibStream to compress data while writing, you can create a
+ ZlibStream with CompressionMode.Compress, and a writable output stream. Then call
+ Write() on that ZlibStream, providing uncompressed data as input. The data sent to
+ the output stream will be the compressed form of the data written. If you wish to use
+ the ZlibStream to decompress data while writing, you can create a ZlibStream with
+ CompressionMode.Decompress, and a writable output stream. Then call Write() on that
+ stream, providing previously compressed data. The data sent to the output stream will
+ be the decompressed form of the data written.
+
+
+ A ZlibStream can be used for Read() or Write(), but not both.
+
+
+ The buffer holding data to write to the stream.
+ the offset within that data array to find the first byte to write.
+ the number of bytes to write.
+
+
+
+ Writes the specified partial memory stream.
+
+ The partial memory stream.
+ The offset.
+ The count.
+ ZlibStream
+
+
+
+ Compress a string into a byte array.
+
+ A string to compress. The string will first be encoded
+ using UTF8, then compressed.
+ Returns compressed string
+
+
+ Uncompress it with .
+
+
+
+
+ Compress a byte array into a new byte array.
+
+ A buffer to compress.
+ Returns compressed buffer
+
+
+
+ Uncompress it with .
+
+
+
+
+ Uncompress a byte array into a single string.
+
+ A buffer containing ZLIB-compressed data.
+ Returns uncompressed string
+
+
+
+
+ Uncompress a byte array into a byte array.
+
+ A buffer containing ZLIB-compressed data.
+ Returns uncompressed buffer
+
+
+
+
+
+ Releases all resources used by the .
+
+
+
+
+ This property sets the flush behavior on the stream.
+ Sorry, though, not sure exactly how to describe all the various settings.
+
+
+
+
+ The size of the working buffer for the compression codec.
+
+
+
+ The working buffer is used for all stream operations. The default size is 1024 bytes.
+ The minimum size is 128 bytes. You may get better performance with a larger buffer.
+ Then again, you might not. You would have to test it.
+
+
+ Set this before the first call to Read() or Write() on the stream. If you try to set it
+ afterwards, it will throw.
+
+
+
+
+ Returns the total number of bytes input so far.
+
+
+ Returns the total number of bytes output so far.
+
+
+
+ Token to interrupt long operations
+
+
+
+
+ Indicates whether the stream can be read.
+
+ true if the stream supports reading; otherwise, false.
+
+
+ The return value depends on whether the captive stream supports reading.
+
+
+
+
+ Indicates whether the stream supports Seek operations.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+ Always returns false.
+
+
+
+
+ Indicates whether the stream can be written.
+
+ true if the stream supports writing; otherwise, false.
+
+
+ The return value depends on whether the captive stream supports writing.
+
+
+
+
+ Reading this property always throws a NotImplementedException.
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ The position of the stream pointer.
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+ Writing this property always throws a NotImplementedException. Reading will
+ return the total bytes written out, if used in writing, or the total bytes
+ read in, if used in reading. The count may refer to compressed bytes or
+ uncompressed bytes, depending on how you've used the stream.
+
+
+
+
+ The SVG image exception class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ The font store type
+
+
+
+
+ The none, fonts not stored
+
+
+
+
+ The Stream, fonts stored to stream
+
+
+
+
+ The embedded, fonts embedded in svg file as base64
+
+
+
+
+ The font storing arguments
+
+
+
+
+ Gets the source font file.
+
+
+ The source font file.
+
+
+
+
+ Gets the source font stream.
+
+
+ The source font stream.
+
+
+
+
+ Gets or sets the dest font stream.
+
+
+ The dest font stream.
+
+
+
+
+ Gets or sets the font file URI.
+
+
+ The font file URI.
+
+
+
+
+ Gets or sets a value indicating whether [dispose stream].
+
+
+ true if [dispose stream]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [use embedded font].
+
+
+ true if [use embedded font]; otherwise, false.
+
+
+
+
+ The namespace for drawing on Svg.
+
+
+
+
+ The svg callback interface
+
+
+
+
+ Called when image resource ready.
+
+ The resource data.
+ Type of the image.
+ Name of the suggested file.
+ if set to true the embedded image must be used.
+
+ Returns path to saved resource. Path should be relative to target SVG document.
+
+
+
+
+ Called when [font resource ready].
+
+ The arguments.
+
+
+
+ Called when SVG document ready.
+
+ The SVG data.
+ Name of the suggested file.
+ Returns path to saved svg document.
+
+
+
+ The namespace handles SVG file format processing.
+
+
+
+
+ Сolor mode for SVG images.
+
+
+
+
+ The Grayscale image.
+
+
+
+
+ YCbCr image, standard option for SVG images.
+
+
+
+
+ CMYK image.
+
+
+
+
+ The YCCK color image.
+
+
+
+
+ The RGB Color mode.
+
+
+
+
+ Represents SVG image class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load image from and initialize pixel and palette data with.
+ path is null.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load image from and initialize pixel and palette data with.
+ stream is null.
+
+
+
+ Initializes a new instance of the class.
+
+ The image width.
+ The image height.
+
+
+
+ Initializes a new instance of the class.
+
+ The SVG options.
+ Image width.
+ Image height.
+
+
+
+ Gets the default options.
+
+ The arguments.
+ Default options
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+ Gets the image to export.
+
+ The image options base.
+ The image to export
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+ Rotates, flips, or rotates and flips the image.
+
+ Type of the rotate flip.
+
+
+
+
+ Sets the image palette.
+
+ The palette to set.
+ if set to true colors will be updated according to the new palette; otherwise color indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no corresponding palette entries.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data reading is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets the image bits per pixel count this parameter is not applicable to vector images
+
+
+ The image bits per pixel count.
+
+ Not valid for vector images
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Represents SVG image type.
+
+
+
+
+ JPEG JFIF.
+
+
+
+
+ Portable Network Graphics.
+
+
+
+
+ Windows Bitmap.
+
+
+
+
+ Gif image format
+
+
+
+
+ Tiff image format
+
+
+
+
+ Unknown format
+
+
+
+
+ The resource keeper callback
+
+
+
+
+ Called when image resource ready.
+
+ The resource data.
+ Type of the image.
+ Name of the suggested file.
+ if set to true the embedded image must be used.
+
+ Returns path to saved resource. Path should be relative to target SVG document.
+
+
+
+
+ Called when [font resource ready].
+
+ The arguments.
+
+
+
+ Called when SVG document ready.
+
+ The SVG data.
+ Name of the suggested file.
+
+ Returns path to saved svg document.
+
+
+
+
+ The Svg load options.
+
+
+
+
+
+ Gets or sets the default width.
+ Property DefaultWidth use with only case, when width not set in file.
+
+
+ The default width.
+
+
+
+
+ Gets or sets the default height.
+ Property DefaultHeight use with only case, when height not set in file.
+
+
+ The default height.
+
+
+
+
+ The SVG file format creation options.
+
+
+
+
+
+ Gets or sets the color type for SVG image.
+
+
+ The type of the color of SVG image.
+
+
+
+
+ Gets or sets a value indicating whether text must be converted as shapes.
+
+
+ true if all text is turned into SVG shapes in the convertion; otherwise, false.
+
+
+
+
+ Gets or sets the font store options.
+
+
+ The font store options.
+
+
+
+
+ The SVG rasterization options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the scale x.
+
+
+ The scale x.
+
+
+
+
+ Gets or sets the scale y.
+
+
+ The scale y.
+
+
+
+
+ Provides drawing commmands to compose an Svg image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width of the output Svg image.
+ The width of the output Svg image.
+ The device resolution, e.g. 96 dots per inch.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to perform drawing operations on.
+
+
+
+ Draws the specified image at the specified location.
+
+ The drawn image.
+ The location of the drawn image.
+
+
+
+ Draws the specified image of the specified size at the specified location.
+
+ The drawn image.
+ The location of the drawn image.
+ The desired size of the drawn image.
+
+
+
+ Draws the specified portion of the specified image at the specified location and with the specified size.
+
+ The portion of the image object to draw.
+ The location and size of the drawn image. The image is scaled to fit the rectangle.
+ The image to draw.
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a Rectangle structure.
+
+ The pen to draw the outline of the figure.
+ The boundaries of the ellipse.
+ The angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ The angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+
+ Fills an arc representing a portion of an ellipse specified by a Rectangle structure.
+
+ The pen to draw the outline of the figure.
+ The brush to fill the interior of the figure.
+ The boundaries of the ellipse.
+ The angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ The angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+
+ Draws the cubic bezier.
+
+ The pen that determines the color, width, and style of the figure.
+ The starting point of the curve.
+ The first control point for the curve.
+ The second control point for the curve.
+ The ending point of the curve.
+
+
+
+ Draws the text string.
+
+ The font used to render text.
+ The unicode text string.
+ The top-left corner of the text run.
+ The text color.
+
+
+
+ Draws the line.
+
+ The pen that determines the color, width, and style of the figure.
+ The x-coordinate of the first point.
+ The y-coordinate of the first point.
+ The x-coordinate of the second point.
+ The y-coordinate of the second point.
+
+
+
+ Draws the path.
+
+ The pen to draw the outline of the figure.
+ The path to draw.
+
+
+
+ Fills the path.
+
+ The pen to draw the outline of the figure.
+ The brush to fill the interior of the figure.
+ The path to draw.
+
+
+
+ Draws the rectangle.
+
+ The pen to draw the outline of the figure.
+ The x-coordinate of the upper-left corner of the rectangle to draw.
+ The y-coordinate of the upper-left corner of the rectangle to draw.
+ The width of the rectangle to draw.
+ The height of the rectangle to draw.
+
+
+
+ Fills the rectangle.
+
+ The pen to draw the outline of the figure.
+ The brush to fill the interior of the figure.
+ The x-coordinate of the upper-left corner of the rectangle to draw.
+ The y-coordinate of the upper-left corner of the rectangle to draw.
+ The width of the rectangle to draw.
+ The height of the rectangle to draw.
+
+
+
+ Gets the final Svg image which includes all drawing commands performed via object.
+
+ The final Svg image.
+
+
+
+ The options for the
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true normalize aps.
+ if set to true add ascpect ratio.
+ The callback.
+
+
+
+ Gets or sets a value indicating whether normalize aps.
+
+
+ true if normalize aps otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether add aspect ratio.
+
+
+ true if add aspect ratio; otherwise, false.
+
+
+
+
+ Gets or sets the callback.
+
+
+ The callback.
+
+
+
+
+ Dash pattern mode
+
+
+
+
+ Wether sub-pixel lindewidths should be rescaled
+
+
+
+
+ Wether minimum non-rescaled line widh should be defined relative to whole image size (if false) or in pixels (if true)
+
+
+
+
+ Lines with width less than image's size\minimumRelativeLinewidthRatio will be rescaled if relative rescaling is used
+
+
+
+
+ Lines with width less than this in pixels will be rescaled
+
+
+
+
+ Minumum width of the line (i'e' width of zero-width line) relative to minimum non-rescaled linewidth
+
+
+
+
+ Image size mode - pixels or points
+
+
+
+
+ Specifies wether dash pattern length is relative to linewidth or absolute
+
+
+
+
+ Absolute dash length
+
+
+
+
+ Dash length relative to linewidth
+
+
+
+
+ Specifies what units define image size
+
+
+
+
+ Use PixelWidth\PixelHeight from APS to determine image size
+
+
+
+
+ Use Width\Height from APS (it's in points) to determine image size
+
+
+
+
+ Read SVG raw data using internal representation object tree.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Convert Aps page to Svg graph area
+
+ The Aps page
+ Transforms positions of text and graphics from pdf coordinates to svg coordinates with aid affine matrices
+ Callback interface for data saving
+ if set to true all text is turned into SVG shapes in the convertion.
+ Callback can't be null
+ Callback can't be null
+
+
+
+ Convert Aps page to Svg graph area
+
+ The Aps page
+ Transforms positions of text and graphics from pdf coordinates to svg coordinates with aid affine matrices
+ if set to true all text is turned into SVG shapes in the convertion.
+
+ The svg contents
+
+
+
+
+ Convert Aps page to Svg graph area.
+
+ The aps page.
+ The options.
+ if set to true all text is turned into SVG shapes in the convertion.
+ Token for interruption of operation
+ callback can't be null
+ callback can't be null
+
+
+
+ Represents resource loading callback interface.
+
+
+
+
+ Exposes the SVG converter for conversion of SVG area into Aspose PDF graph function.
+
+
+
+
+ Renders the SVG node.
+
+ The SVG area.
+ The canvas.
+ The default size.
+ The size.
+
+
+
+ Represents resource loading event arguments.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The URI path.
+
+
+
+ Represents resource loading result object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ The encoding.
+
+
+
+ This class intended for conversion svg document to array of aps pages
+
+
+
+
+ default constructor.
+
+
+
+
+ constructor.
+
+ Callback class for loading resources.
+
+
+
+ Renders the SVG area.
+
+ The SVG area body.
+ The default size.
+
+ The Aps page.
+
+
+
+
+ Renders the SVG area.
+
+ The SVG section.
+ The default size.
+
+ The Aps page.
+
+ svgSection
+ svgSection is null.
+
+
+
+ Convert Svg area to Aspose Pdf graph function
+
+ The SVG area.
+ The canvas.
+ The default size.
+ The size.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+
+ Gets or sets the size of the page.
+
+
+ The size of the page.
+
+
+
+
+ The SVG image parse exception class.
+
+
+
+
+ Arial font glyph definitions
+
+
+
+
+ Base class for svg font glyph collection
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the custom fonts.
+
+
+ The custom fonts.
+
+
+
+
+ Gets or sets the glyph set.
+
+
+ The glyph set.
+
+
+
+
+ Gets or sets the units per em.
+
+
+ The units per em.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Arial font glyph definitions
+
+
+
+
+ Initalize Arial font.
+
+ Returns glyphs map.
+
+
+
+ Initialize Times Font
+
+ returns glyphs map
+
+
+
+ Initalize Courier font
+
+ Returns glyphs map
+
+
+
+ Graphics node specific glyph rendering
+
+
+
+
+ Create glyph with the specified parameters
+
+ The unicode
+ List of names
+ The orientation
+ The language
+ The horizontal level
+ The vertical level
+ The horizonal X
+ The vertiacal Y
+ The glyph code
+ The paint info
+ The glyph shape
+ The child node
+
+
+
+ Contructor
+
+ the unicode
+ the horizontal X
+ the glyph shape
+
+
+
+ Metics of Glyph with the specific kerning value
+
+ the horizontal kern
+ the vertical kern
+ Default null.
+
+
+
+ Unicode char code
+
+
+
+
+ Glyph names
+
+
+
+
+ Indicates inline-progression-direction
+
+
+
+
+ Glyphs unique code
+
+
+
+
+ Gets or sets the transformation matrix.
+
+
+ The transformation matrix.
+
+
+
+
+ Gets or sets the position.
+
+
+ The position.
+
+
+
+
+ Comma separated list of languages
+
+
+
+
+ Horizontal level line
+
+
+
+
+ Vertical level line
+
+
+
+
+ Horizontal x position
+
+
+
+
+ Vertical y position
+
+
+
+
+ Gets or sets the unicode set.
+
+
+ The unicode set.
+
+
+
+
+ Gets or sets the shape data.
+
+
+ The shape data.
+
+
+
+
+ Represent hash table with references to glyph geometry
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The size of set.
+
+
+
+ Size of table
+
+ Sise of table.
+
+
+
+ Get character data
+
+ the charater code
+ Returns geometry.
+
+
+
+ Set a new value
+
+ The character
+ The geometry value
+ Returns new value.
+
+
+ Clear the table
+
+
+
+ Hold glyph geometry
+
+
+
+
+ Initializes a new instance of the class.
+
+ The outline.
+ The geometry space.
+
+
+
+ Outline of the glyph
+
+
+ The outline.
+
+
+
+
+ Bounds of the glyph metrics
+
+
+ The bounds.
+
+
+
+
+ Bounds for outline
+
+
+ The outline bounds.
+
+
+
+
+ This class keeps glyph metrics
+
+
+
+
+ No visual representation
+
+
+
+
+ Create a GlyphMetrics object
+
+ The advance
+ The bounds
+ The glyph type
+
+
+
+ Create a GlyphMetrics object
+
+ Is horizontal flag
+ The level X
+ The level Y
+ the bounds
+ the glyph type
+
+
+
+ Right bottom side of the glyph
+
+ return right bottom side of the glyph
+
+
+
+ Gets the type of the glyph.
+
+ Type of the glyph.
+
+
+
+ Returns Standard glyph property
+
+
+ Returns Standard glyph property
+
+
+
+
+ Returns Ligature glyph property
+
+
+ Returns Ligature glyph property
+
+
+
+
+ Returns Combining glyph property
+
+
+ Returns Combining glyph property
+
+
+
+
+ Returns Component glyph property
+
+
+ Returns Component glyph property
+
+
+
+
+ Returns WhiteSpace glyph property
+
+
+ Returns WhiteSpace glyph property
+
+
+
+
+ Returns horizontal glyph property
+
+
+ Returns horizontal glyph property
+
+
+
+
+ Returns levelX glyph property
+
+
+ Returns levelX glyph property
+
+
+
+
+ Returns levelY glyph property
+
+
+ Returns levelY glyph property
+
+
+
+
+ Glyph bounds
+
+
+ return bounds
+
+
+
+
+ Left top side of the glyph
+
+
+ return left or top value of bounds
+
+
+
+
+ Gets the bounds.
+
+
+ The bounds.
+
+
+
+
+ Gets or sets the standard.
+
+
+ The standard.
+
+
+
+
+ Gets or sets the ligature.
+
+
+ The ligature.
+
+
+
+
+ Gets or sets the combining.
+
+
+ The combining.
+
+
+
+
+ Gets or sets the component.
+
+
+ The component.
+
+
+
+
+ Gets or sets the white space.
+
+
+ The white space.
+
+
+
+
+ Interface class for glyph nodes
+
+
+
+
+ Gets the transformed bounds.
+
+ The transformation matrix.
+ The transformed bounds.
+
+
+
+ Gets the transform primitive bounds.
+
+ The transformation matrix.
+ The transform primitive bounds.
+
+
+
+ Gets the transfromed geometry bounds.
+
+ The transformation matrix.
+ The transfromed geometry bounds.
+
+
+
+ Determines whether glyph contains point.
+
+ The point.
+ True if glyph contains point.
+
+
+
+ Checks that glyph meet rectangle.
+
+ The rectangle.
+ True if glyph meet rectangle.
+
+
+
+ Gets the bounds of glyph.
+
+
+ The bounds of glyph.
+
+
+
+
+ Gets the primitive bounds.
+
+
+ The primitive bounds.
+
+
+
+
+ Gets or sets the transformation matrix
+
+
+ The transformation matrix.
+
+
+
+
+ Gets the reversed transformation matrix.
+
+
+ The reversed transformation matrix.
+
+
+
+
+ Gets the transfomation matrix of parent.
+
+
+ The transfomation matrix of parent.
+
+
+
+
+ Gets the geometry bounds.
+
+
+ The geometry bounds.
+
+
+
+
+ Gets or sets a value indicating whether this is visible.
+
+
+ true if visible; otherwise, false.
+
+
+
+
+ Gets or sets the clip path.
+
+
+ The clip path.
+
+
+
+
+ Keep render environment settings
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ GlyphVector class for used SVG font
+
+
+
+
+ Instantiate GlyphVector
+
+ Font for this glyph vector
+ Array with glyphs for this glyph vector
+ Font render context
+
+
+
+ Char code for the specific glyph
+
+ Index of glyph
+
+ Char code for the specific glyph
+
+
+
+
+ Array of glyphcodes
+
+ The start.
+ The length.
+ The result array.
+ Array of glyphcodes.
+
+
+
+ Get bounds for the specific glyph
+
+ Index of glyph
+
+ Bounds for the specific glyph
+
+
+
+
+ Transformation for the specified glyph
+
+ Index of glyph
+
+ Transformation for the specified glyph
+
+
+
+
+ Visual bounds for the specific glyph
+
+ Index of glyph
+ Visual bounds for the specific glyph.
+
+
+
+ Bounds including stroking.
+
+ The attribute iterator
+
+ Bounds of stroke.
+
+
+
+
+ Metrics for the glyph at index
+
+ Index of the glyph
+
+ Metrics for the glyph at index
+
+
+
+
+ Glyph visual shape
+
+ The index of the glyph
+ The glyph visual shape.
+
+
+
+ Bounding area for the specific glyph
+
+ Index of the glyph
+
+ Bounding area for the specific glyph
+
+
+
+
+ Position for the specific glyph
+
+ The index of glyph
+
+ Position for the specific glyph
+
+
+
+
+ Array of glyph positions
+
+ the start.
+ the length.
+ the array of results
+
+ Array of glyph positions
+
+
+
+
+ Visual representation
+
+ the x coordinate
+ the y coordinate
+
+ Visual representation
+
+
+
+
+ Shape visibility
+
+ Index of the glyph
+ Is glyph visible
+
+
+
+ True if glyph rendered
+
+ the glyph index
+ returns if true if glyph rendered
+
+
+
+ Number of chars in specific range
+
+ First glyph
+ Last glyph
+
+ The number of chars.
+
+
+
+
+ Init position of the specified glyph
+
+ The index of the glyph
+ The postion
+
+
+
+ Transformation for the specific glyph
+
+ Index of the glyph
+ The transformation matrix.
+
+
+
+ Geometric bounds for this vector
+
+
+
+
+ Actual bounds
+
+
+
+
+ Font associated with GlyphVector
+
+
+
+
+ Font rendering context associated for this GlyphVector
+
+
+
+
+ Number of glyphs
+
+
+
+
+ Visual representation shape
+
+
+
+
+ Intyerface for Font classes
+
+
+
+
+ Create new font, replace current
+
+ The font size
+
+ New font
+
+
+
+
+ Vertical kerning for glyph pair
+
+ Code of first glyph
+ Code of second glyph
+ Vertical kerning for glyph pair
+
+
+
+ Horizontal kerning for glyph pair
+
+ Code of first glyph
+ Code of second glyph
+ Horizontal kerning for glyph pair
+
+
+
+ Font family
+
+
+
+
+ Size of font
+
+
+ The size of font.
+
+
+
+
+ Glyph collection metrics set
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metrics.
+ The vertical value.
+
+
+
+ Initializes a new instance of the class.
+
+ The horizontal advance.
+ The vertical advance.
+ The bounds.
+ Type of the glyph.
+
+
+
+ Checks ligature glyph
+
+
+ True if it is ligature glyph
+
+
+
+
+ Checks standard glyph
+
+ True if it's a standard glyph.
+
+
+
+ Checks whitespace glyph
+
+ True if it's a whitespace glyph.
+
+
+
+ Checks combining glyph
+
+ True if it's a combining glyph.
+
+
+
+ Checks component glyph
+
+ True if it's a component glyph.
+
+
+
+ Horizontal level of the glyph
+
+
+ The horizontal level of the glyph
+
+
+
+
+ Vertical level of the glyph
+
+
+ The vertical level of the glyph
+
+
+
+
+ Bounds of the glyph
+
+
+ Bounds of the glyph
+
+
+
+
+ Left top side of the glyph
+
+
+ Left top side of the glyph
+
+
+
+
+ Right bottom side of the glyph
+
+
+ Right bottom side of the glyph
+
+
+
+
+ Raw glyph type code
+
+
+ Raw glyph type code
+
+
+
+
+ Internal glyph rendering properties
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The information.
+
+
+
+ Init object parameters
+
+ The instance of TextPaintInfo
+
+
+
+ Compare info pair
+
+ The text paint information
+ The text paint information
+ Result of comparison
+
+
+
+ Gets or sets the fill paint.
+
+
+ The fill paint.
+
+
+
+
+ Gets or sets the stroke paint.
+
+
+ The stroke paint.
+
+
+
+
+ Gets or sets a value indicating whether this is visible.
+
+
+ true if visible; otherwise, false.
+
+
+
+
+ Gets or sets the stroke stroke.
+
+
+ The stroke stroke.
+
+
+
+
+ the begin char
+
+
+
+
+ the composite
+
+
+
+
+ the end char
+
+
+
+
+ the strkie through stroke
+
+
+
+
+ the strike through paint
+
+
+
+
+ the strike through paint
+
+
+
+
+ the underline stroke
+
+
+
+
+ the underline stroke paint
+
+
+
+
+ the underline paint
+
+
+
+
+ the overline stroke
+
+
+
+
+ the overline paint
+
+
+
+
+ Wrapper class for internal font instance
+
+
+
+
+ Creates new Font by mapping to exisiting Font object
+
+ The font size
+ Instance of VectorFont
+
+
+
+ Horizontal kerning value for pair
+
+ The first glyph
+ The second glyph
+ Default value 0
+
+
+
+ Vertical kerning value for pair
+
+ The first glyph
+ The second glyph
+ Default value 0
+
+
+
+ Geometry for the specific character
+
+ The vector font
+ The code of char
+ The vector of glyphs
+ The index of glyph
+ The position
+ Instance of class GlyphGeometrySet.Geometry
+
+
+
+ Font family name
+
+
+
+
+ Size of font
+
+
+ The size of font.
+
+
+
+
+ Gets or sets the glyphs identifier.
+
+
+ The glyphs identifier.
+
+
+
+
+ Gets or sets the glyphs unicode.
+
+
+ The glyphs unicode.
+
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets or sets the units per em.
+
+
+ The units per em.
+
+
+
+
+ Default font size
+
+
+
+
+ Callback interface.
+
+
+
+
+ Called when image resource ready.
+
+ The resource data.
+ Type of the image.
+ Name of the suggested file.
+ if set to true the embedded image must be used.
+
+ Returns path to saved resource. Path should be relative to target SVG document.
+
+
+
+
+ Called when [font resource ready].
+
+ The arguments.
+
+
+
+ Called when SVG document ready.
+
+ The SVG data.
+ Name of the suggested file.
+ Returns path to saved svg document.
+
+
+
+ Base class for path segments
+
+
+
+
+ Interface for path segments
+
+
+
+
+ Split segment
+
+ The Y point
+
+ Splitted segments
+
+
+
+
+ Calculate quad area points
+
+ The point first.
+ The point mid.
+ The point end.
+ The start.
+ Quad area points.
+
+
+
+ Check point meet
+
+ The first point
+ The second point
+
+ The meet
+
+
+
+
+ Calculates the cubic.
+
+ The point first.
+ The point second.
+ The point middle.
+ The point end.
+ The start.
+ The cubic.
+
+
+
+ Split path area
+
+ The split point
+
+ The splitted path area
+
+
+
+
+ Calculate line area points
+
+ The first point
+ The second point
+ The start array
+
+ Line area points.
+
+
+
+
+ Convert quadratic bezier curve to cubic representation
+
+ The quadratic bezier array
+
+ Cubic representation
+
+
+
+
+ Locate a point on a bezier curve
+
+ The a point
+ The b point
+ The c point
+ The d point
+ The ratio value
+
+ Point.
+
+
+
+
+ Convert circle shape in to quadratic bezier curve set
+
+ The radius
+ The x position
+ The y position
+
+ Quadratic bezier curve set
+
+
+
+
+ Split curve, using Casteljau algorithm
+
+ The curve array
+ The split point
+ Is first part
+ Splitted curves
+
+
+
+ Convert ellipse shape in to quadratic bezier curve set
+
+ The left position
+ The bottom position
+ The width length
+ The height lenth
+ Quadratic bezier curve
+
+
+
+ Area split results helper class
+
+
+
+
+ Split results
+
+ the top segements
+ the bottom segments
+
+
+
+ Svg area used for parent container embedding
+
+
+
+
+ document image location path
+
+
+
+
+ Top parent node
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the SVG nodes count.
+
+
+ The SVG nodes count.
+
+
+
+
+ area height
+
+
+
+
+ area widht
+
+
+
+
+ location path
+
+
+
+
+ document file name
+
+
+
+
+ document image location path
+
+
+
+
+ SVG namespaces and identifiers names.
+
+
+
+
+ SVG namespace
+
+
+
+
+ Public Identifier for SVG 1.1
+
+
+
+
+ System Identifier for SVG 1.1
+
+
+
+
+ Internal Svg node representation
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the node.
+ The properties.
+ The SVG parent node.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the node.
+ The qualified name of node.
+ The properties.
+ The SVG parent node.
+ The sequense number.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the node.
+ The properties.
+ The SVG parent node.
+ The sequense number.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Load default values for non initialized rendering parameters
+
+
+
+
+ Check whether the element has children.
+
+
+ True if the element has children
+
+
+
+
+ Creates a copy of the current node.
+
+
+ A new node that is a copy of this instance.
+
+
+
+
+ Get parent SVG node
+
+
+ Parent SVG node
+
+
+
+
+ Gets the for this element.
+
+
+ The clip rule.
+
+
+
+
+ Gets the for this element.
+
+
+ The graphics path.
+
+
+
+
+ The parent node
+
+
+
+
+ The sequence number
+
+
+
+
+ Node properties table
+
+
+
+
+ Default properties
+
+
+
+
+ Style properties
+
+
+
+
+ Node child list
+
+
+
+
+ Name of node.
+
+
+
+
+ The qualified name of node.
+
+
+
+
+ Node raw body
+
+
+
+
+ Masked image nmber
+
+
+
+
+ Svg tags naming
+
+
+
+
+ property ascent
+
+
+
+
+ property ascent-height
+
+
+
+
+ property alphabetic
+
+
+
+
+ property bbox
+
+
+
+
+ property clip-path
+
+
+
+
+ property clipPathUnits
+
+
+
+
+ property d
+
+
+
+
+ property font-family
+
+
+
+
+ property font-size
+
+
+
+
+ Represents the width of the viewport into which the marker is to be fitted when it is rendered.
+
+
+
+
+ Represents the height of the viewport into which the marker is to be fitted when it is rendered.
+
+
+
+
+ Defines the coordinate system for attributes ‘markerWidth’, ‘markerHeight’ and the contents of the ‘marker’.
+
+
+
+
+ Specifies the width of the stroke on the current object.
+
+
+
+
+ Indicates how the 'marker' element is rotated.
+
+
+
+
+ property result
+
+
+
+
+ The x-axis coordinate of the reference point which is to be aligned exactly at the marker position. Used for 'marker' element.
+
+
+
+
+ The y-axis coordinate of the reference point which is to be aligned exactly at the marker position. Used for 'marker' element.
+
+
+
+
+ property rotate
+
+
+
+
+ property preserveAspectRatio
+
+
+
+
+ property xlink:href
+
+
+
+
+ property href
+
+
+
+
+ property in
+
+
+
+
+ property id
+
+
+
+
+ property in2
+
+
+
+
+ property x
+
+
+
+
+ property y
+
+
+
+
+ property width
+
+
+
+
+ property height
+
+
+
+
+ property mode
+
+
+
+
+ property stemv
+
+
+
+
+ property unicode
+
+
+
+
+ property units-per-em
+
+
+
+
+ property stemh
+
+
+
+
+ property style
+
+
+
+
+ property writing-mode
+
+
+
+
+ Svg tags naming
+
+
+
+
+ the a tag name
+
+
+
+
+ the altGlyph tag name
+
+
+
+
+ the altGlyphDef tag name
+
+
+
+
+ the altGlyphItem tag name
+
+
+
+
+ the animate tag name
+
+
+
+
+ the animateColor tag name
+
+
+
+
+ the animateMotion tag name
+
+
+
+
+ the animateTransform tag name
+
+
+
+
+ the circle tag name
+
+
+
+
+ the clipPath tag name
+
+
+
+
+ the color-profile tag name
+
+
+
+
+ the cursor tag name
+
+
+
+
+ the defs tag name
+
+
+
+
+ the desc tag name
+
+
+
+
+ the ellipse tag name
+
+
+
+
+ the feBlend tag name
+
+
+
+
+ the feColorMatrix tag name
+
+
+
+
+ the feComponentTransfer tag name
+
+
+
+
+ the feComposite tag name
+
+
+
+
+ the feConvolveMatrix tag name
+
+
+
+
+ the feDiffuseLighting tag name
+
+
+
+
+ the feDisplacementMap tag name
+
+
+
+
+ the feDistantLight tag name
+
+
+
+
+ the feFlood tag name
+
+
+
+
+ the feFuncA tag name
+
+
+
+
+ the feFuncB tag name
+
+
+
+
+ the feFuncG tag name
+
+
+
+
+ the feFuncR tag name
+
+
+
+
+ the feGaussianBlur tag name
+
+
+
+
+ the feImage tag name
+
+
+
+
+ the feMerge tag name
+
+
+
+
+ the feMergeNode tag name
+
+
+
+
+ the feMorphology tag name
+
+
+
+
+ the feOffset tag name
+
+
+
+
+ the fePointLight tag name
+
+
+
+
+ the feSpecularLighting tag name
+
+
+
+
+ the feSpotLight tag name
+
+
+
+
+ the feTile tag name
+
+
+
+
+ the feTurbulence tag name
+
+
+
+
+ the filter tag name
+
+
+
+
+ the font tag name
+
+
+
+
+ the font-face tag name
+
+
+
+
+ the font-face-format tag name
+
+
+
+
+ the font-face-name tag name
+
+
+
+
+ the font-face-src tag name
+
+
+
+
+ the font-face-uri tag name
+
+
+
+
+ the foreignObject tag name
+
+
+
+
+ the g tag name
+
+
+
+
+ the glyph tag name
+
+
+
+
+ the glyphRef tag name
+
+
+
+
+ the hkern tag name
+
+
+
+
+ the image tag name
+
+
+
+
+ the line tag name
+
+
+
+
+ the linearGradient tag name
+
+
+
+
+ the marker tag name
+
+
+
+
+ the mask tag name
+
+
+
+
+ the metadata tag name
+
+
+
+
+ the missing-glyph tag name
+
+
+
+
+ the mpath tag name
+
+
+
+
+ the path tag name
+
+
+
+
+ the pattern tag name
+
+
+
+
+ the polygon tag name
+
+
+
+
+ the polyline tag name
+
+
+
+
+ the radialGradient tag name
+
+
+
+
+ the rect tag name
+
+
+
+
+ the script tag name
+
+
+
+
+ the set tag name
+
+
+
+
+ the stop tag name
+
+
+
+
+ the style tag name
+
+
+
+
+ the svg tag name
+
+
+
+
+ the switch tag name
+
+
+
+
+ the symbol tag name
+
+
+
+
+ the text tag name
+
+
+
+
+ the textPath tag name
+
+
+
+
+ the title tag name
+
+
+
+
+ the tref tag name
+
+
+
+
+ the tspan tag name
+
+
+
+
+ the use tag name
+
+
+
+
+ the view tag name
+
+
+
+
+ the vkern tag name
+
+
+
+
+ the rawText tag name
+
+
+
+
+ Extends hashtable for attribute collection
+
+
+
+
+ Support for an extended Hashtable of TextAttributes
+
+
+
+
+ Init last position
+
+
+ Last position
+
+
+
+
+ Next postition
+
+
+ Next postition
+
+
+
+
+ Previous position
+
+
+ Previous position
+
+
+
+
+ Index of first character according to given attribute
+
+ the attribute
+
+ Index of first character according to given attribute
+
+
+
+
+ Index of first character according to given attributes
+
+ the attributes
+
+ Index of first character according to given attributes
+
+
+
+
+ Current index of first character according to given attribute
+
+ The attribute
+
+ Current index of first character according to given attribute
+
+
+
+
+ Current index of first character according to given attributes
+
+ The attributes
+
+ Current index of first character according to given attributes
+
+
+
+
+ Character at current positon
+
+
+ Character at current positon
+
+
+
+
+ Initializes first position
+
+
+ First position
+
+
+
+
+ Set position to specified index
+
+ the position
+
+ Position to specified index
+
+
+
+
+ Current index
+
+
+ The index.
+
+
+
+
+ Current index of first character
+
+
+ The start.
+
+
+
+
+ Index start
+
+
+ The index of the begin.
+
+
+
+
+ Gets end index
+
+
+ The end index.
+
+
+
+
+ Make clear copy
+
+
+ The string.
+
+
+
+
+ Keys collection
+
+
+ All attribute keys.
+
+
+
+
+ Collection of attributes
+
+
+ The attributes.
+
+
+
+
+ Index of first character
+
+
+ The run bounds.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The attribute name.
+
+
+
+ Initializes a new instance of the class.
+
+ The iterator.
+
+
+
+ Initialize array using existing collection
+
+ The iterator
+ The collection
+ The start of char sequence
+ The end of char sequence
+
+
+
+ Get attribute value
+
+ the attribute
+
+ Attribute value
+
+
+
+
+ Index of first character
+
+ The attribute
+
+ Index of first character
+
+
+
+
+ Index of first character
+
+ The attributes
+
+ Index of first character
+
+
+
+
+ Index of first character run
+
+ The attribute
+
+ Index of first character run
+
+
+
+
+ Index of first character using dictionary
+
+ The attributes
+
+ Index of first character using dictionary
+
+
+
+
+ Character position
+
+
+ Character position
+
+
+
+
+ Initializes char position
+
+
+ Char position
+
+
+
+
+ Initializes end position
+
+
+ End position
+
+
+
+
+ Next char position
+
+
+ Next char position
+
+
+
+
+ Previous position
+
+
+ Previous position
+
+
+
+
+ Set position to specific value
+
+ The position
+
+ Character
+
+
+
+
+ Copy string iterator
+
+
+
+
+ Initialize string iterator
+
+
+ The string iterator.
+
+
+
+
+ Keys collection
+
+
+
+
+ Attribute map
+
+
+
+
+ Index of first character
+
+
+
+
+ Index of first character run
+
+
+
+
+ Start index of text
+
+
+
+
+ End index of text
+
+
+
+
+ Current index
+
+
+
+
+ Represent Svg rect element
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the node.
+ The properties.
+ The SVG parent node.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the node.
+ The qualified name of node.
+ The properties.
+ The SVG parent node.
+
+
+
+ returns clip rule
+
+
+ The clip rule.
+
+
+
+
+ returns graphics path
+
+
+ The graphics path.
+
+
+
+
+ The font storing arguments
+
+
+
+
+ Gets the source font file.
+
+
+ The source font file.
+
+
+
+
+ Gets the source font stream.
+
+
+ The source font stream.
+
+
+
+
+ Gets or sets the dest font stream.
+
+
+ The dest font stream.
+
+
+
+
+ Gets or sets the font file URI.
+
+
+ The font file URI.
+
+
+
+
+ Gets or sets a value indicating whether [dispose stream].
+
+
+ true if [dispose stream]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [use embedded font].
+
+
+ true if [use embedded font]; otherwise, false.
+
+
+
+
+ The font store type
+
+
+
+
+ The none, fonts not stored
+
+
+
+
+ The Stream, fonts stored to stream
+
+
+
+
+ The embedded, fonts embedded in svg file as base64
+
+
+
+
+ Path used for svg area clip.
+
+
+
+
+ Clips the region.
+
+ The SVG node.
+ Clipped region.
+
+
+
+ the clip rule
+
+
+ The clip rule.
+
+
+
+
+ the graphic path
+
+
+ The graphics path.
+
+
+
+
+ Algorithm for the clipping region definition.
+
+
+
+
+ Drawing a ray from the point to infinity in any direction and then examining the places where a segment of the shape crosses the ray.
+
+
+
+
+ Drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses.
+
+
+
+
+ Represents SVG image type.
+
+
+
+
+ JPEG JFIF.
+
+
+
+
+ Portable Network Graphics.
+
+
+
+
+ Windows Bitmap.
+
+
+
+
+ Gif image format
+
+
+
+
+ Tiff image format
+
+
+
+
+ Unknown format
+
+
+
+
+ Read SVG raw data using internal representation object tree
+
+
+
+
+ Reads style value
+
+ the attributes of node
+ the style string
+
+
+
+ Loads svg section
+
+ The content string
+
+ Svg section
+
+
+
+
+ Loads svg section
+
+ The content string
+ if set to true throws exceptions.
+
+ Svg section
+
+
+
+
+
+ The psd image argument exception.
+
+
+
+
+
+ The psd image exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ File format version
+
+
+
+
+ The default PSD version.
+
+
+
+
+ The PSB version.
+
+
+
+
+ Base interface for fill settings
+
+
+
+
+ Base interface for fill settings
+
+
+
+
+ Gets the type of the fill.
+
+
+ The type of the fill.
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets a value indicating whether [align with layer].
+
+
+ true if [align with layer]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is dither.
+
+
+ true if dither; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is reverse.
+
+
+ true if reverse; otherwise, false.
+
+
+
+
+ Gets or sets the angle.
+
+
+ The angle.
+
+
+
+
+ Gets or sets the horizontal offset.
+
+
+ The horizontal offset.
+
+
+
+
+ Gets or sets the vertical offset.
+
+
+ The vertical offset.
+
+
+
+
+ Gets the color points.
+
+
+ The color points.
+
+
+
+
+ Gets the transparency points.
+
+
+ The transparency points.
+
+
+
+
+ Gets or sets the type of the gradient.
+
+
+ The type of the gradient.
+
+
+
+
+ Gets or sets the name of the gradient.
+
+
+ The name of the gradient.
+
+
+
+
+ Interface for Pattern fill settings
+
+
+
+
+ Gets or sets a value indicating whether this is linked.
+
+
+ true if linked; otherwise, false.
+
+
+
+
+ Gets or sets the scale.
+
+
+ The scale.
+
+
+
+
+ Gets or sets the type of the point.
+
+ The type of the point.
+
+
+
+ Gets or sets the name of the pattern.
+
+
+ The name of the pattern.
+
+
+
+
+ Gets or sets the pattern identifier.
+
+
+ The pattern identifier.
+
+
+
+
+ Gets or sets the horizontal offset.
+
+
+ The horizontal offset.
+
+
+
+
+ Gets or sets the vertical offset.
+
+
+ The vertical offset.
+
+
+
+
+ Gets or sets the pattern data.
+
+
+ The pattern data.
+
+
+
+
+ Gets or sets the width of the pattern.
+
+
+ The width of the pattern.
+
+
+
+
+ Gets or sets the height of the pattern.
+
+
+ The height of the pattern.
+
+
+
+
+ The layer resource loader.
+
+
+
+
+ Determines whether layer resource can be loaded from the specified .
+
+ The stream container.
+ The PSD version.
+
+ true if layer resource can be loaded from the specified ; otherwise, false.
+
+
+
+
+ Loads the .
+
+ The stream container to load from.
+ The PSD version.
+
+ The loaded resource.
+
+
+
+
+ Class PtFlResource. Contains Pattern Fill Layer Data.
+
+
+
+
+
+ Base Class for fill layer resources
+
+
+
+
+
+ Represents layer info.
+
+
+
+
+ The common resource signature.
+
+
+
+
+ The PSB-specific resource signature.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Saves the resource header.
+
+ The stream container.
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the pattern.
+ The pattern identifier.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the name of the pattern.
+
+
+ The name of the pattern.
+
+
+
+
+ Gets or sets the offset.
+
+
+ The offset.
+
+
+
+
+ Gets or sets the scale.
+
+
+ The scale.
+
+
+
+
+ Gets or sets a value indicating whether this instance is linked with layer.
+
+
+ true if this instance is linked with layer; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether [align with layer].
+
+ true if [align with layer]; otherwise, false.
+
+
+
+
+ Gets or sets the pattern identifier.
+
+
+ The pattern identifier.
+
+
+
+
+ The namespace contains PSD Vector Paths.
+
+
+
+
+ Class VectorPathDataResource.
+ This resource contains information about vector layer mask
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ Invalid VectorPathData Resource value
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the paths.
+
+
+ The paths.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets a value indicating whether this instance is disabled.
+
+
+ true if this instance is disabled; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is not linked.
+
+
+ true if this instance is not linked; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is inverted.
+
+
+ true if this instance is inverted; otherwise, false.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class VsmsResource.
+ This resource contains information about vector layer mask
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ Invalid Vsms Resource value
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Bezier Knot Record Class
+
+
+
+
+ Vector Path Record Class
+
+
+
+
+ Gets the type.
+
+
+ The Vector Path Type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record data.
+
+
+
+ Gets or sets the points.
+
+
+ The points.
+
+
+
+
+ Gets or sets a value indicating whether this instance is closed.
+
+
+ true if this instance is closed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is linked.
+
+
+ true if this instance is linked; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is open.
+
+
+ true if this instance is open; otherwise, false.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Initial Fill Rule Record Class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record data.
+
+
+
+ Gets or sets the is fill starts with all pixels.
+
+
+ The is fill starts with all pixels.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Clipboard Record Class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record data.
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Vector Path Record Factory Class
+
+
+
+
+ Produces the path record.
+
+ The record data.
+ Created
+
+
+
+
+ Path Fill Rule Record Class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record data.
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Closed Subpath Length Record Class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record data.
+ Incorrect data for LengthRecord creation
+
+
+
+ Gets or sets a value indicating whether this instance is closed.
+
+
+ true if this instance is closed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is open.
+
+
+ true if this instance is open; otherwise, false.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Vector Path Type according to PSD Format Specification
+
+
+
+
+ The closed subpath length record
+
+
+
+
+ The closed subpath bezier knot linked
+
+
+
+
+ The closed subpath bezier knot unlinked
+
+
+
+
+ The open subpath length record
+
+
+
+
+ The open subpath bezier knot linked
+
+
+
+
+ The open subpath bezier knot unlinked
+
+
+
+
+ The path fill rule record
+
+
+
+
+ The clipboard record
+
+
+
+
+ The initial fill rule record
+
+
+
+
+ Class VmskResource.
+ This resource contains information about vector layer mask
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ Invalid Vmsk Resource value
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Fill layer. Color Fill, Gradient Fill or Pattern Fill Layer which differs by
+
+
+
+
+ The psd layer.
+
+
+
+
+ The layer header size.
+
+
+
+
+ Represents blend mode signature.
+
+
+
+
+ Initializes a new instance of the class. Constructor for lazy initialization.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+
+
+
+ Initializes a new instance of the class from byte arrays.
+
+ The layer bounds.
+ The red bytes.
+ The green bytes.
+ The blue bytes.
+ The layer name.
+
+ Byte arrays can not be empty
+ or
+ Byte arrays length must equal bounds dimentions (bounds.Width * bounds.Height)
+
+
+
+
+ Creates a shallow copy of the current Layer. Please see https://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx for explanation.
+
+ A shallow copy of the current Layer.
+
+
+
+ Saves the object's data to the specified file location in the specified file format according to save options.
+
+ The file path.
+ The options.
+
+
+
+ Saves the object's data to the specified file location.
+
+ The file path to save the object's data to.
+ if set to true over write the file contents, otherwise append will occur.
+
+
+
+ Saves the image's data to the specified stream in the specified file format according to save options.
+
+ The stream to save the image's data to.
+ The save options.
+ The destination image bounds rectangle. Set the empty rectangle for use sourse bounds.
+
+
+
+ Saves the object's data to the specified file location in the specified file format according to save options.
+
+ The file path.
+ The options.
+ The destination image bounds rectangle. Set the empty rectangle for use sourse bounds.
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Adds the mask to current layer.
+
+ The layer mask.
+ Full layer mask is not supported for setting yet, please use LayerMaskDataShort
+
+
+
+ Merges the layer to specified layer
+
+ The layer to merge into.
+
+
+
+ Draws the image on layer.
+
+ The location.
+ The image.
+ Location must be non-negative
+
+
+
+ Updates the image dimensions.
+
+ The new image width.
+ The new image height.
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets or sets the layer resources.
+
+
+ The layer resources.
+
+
+
+
+ Gets a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets or sets the layer name.
+
+
+ The layer name.
+
+
+
+
+ Gets the blending options.
+
+
+ The blending options.
+
+
+
+
+ Gets the display name of the layer.
+
+
+ The display name of the layer.
+
+
+
+
+ Gets the fill opacity.
+
+
+ The fill opacity in range from 0 to 100
+
+ Fill opacity can be only in the range from 0 to 100
+
+
+
+ Gets or sets the layer creation date time.
+
+
+ The layer's creation date time. If there is no data about creation DateTime then returns Unix Time first epoch
+
+
+
+
+ Gets or sets the decorative sheet color highlight in layers' list
+
+
+ The sheet color highlight.
+
+
+
+
+ Gets or sets the top layer position.
+
+
+ The top layer position.
+
+
+
+
+ Gets or sets the left layer position.
+
+
+ The left layer position.
+
+
+
+
+ Gets or sets the bottom layer position.
+
+
+ The bottom layer position.
+
+
+
+
+ Gets or sets the right layer position.
+
+
+ The right layer position.
+
+
+
+
+ Gets the layer's channels count.
+
+
+ The layer's channels count.
+
+
+
+
+ Gets or sets the channel information.
+
+
+ The channel information.
+
+
+
+
+ Gets the blend mode signature.
+
+
+ The blend mode signature.
+
+
+
+
+ Gets or sets the blend mode key.
+
+
+ The blend mode key.
+
+
+
+
+ Gets or sets the layer opacity. 0 = transparent, 255 = opaque.
+
+
+ The layer opacity.
+
+
+
+
+ Gets or sets the layer clipping. 0 = base, 1 = non-base.
+
+
+ The layer clipping.
+
+
+
+
+ Gets or sets the layer flags.
+ bit 0 = transparency protected;
+ bit 1 = visible;
+ bit 2 = obsolete;
+ bit 3 = 1 for Photoshop 5.0 and later, tells if bit 4 has useful information;
+ bit 4 = pixel data irrelevant to appearance of document.
+
+
+ The layer flags.
+
+
+
+
+ Gets or sets the layer filler.
+
+
+ The layer filler.
+
+
+
+
+ Gets the overall layer length in bytes.
+
+
+
+
+ Gets the layer extra information length in bytes.
+
+
+ The extra layer length.
+
+
+
+
+ Gets or sets the layer mask data.
+
+
+ The layer mask data.
+
+
+
+
+ Gets or sets the layer blending ranges data.
+
+
+ The layer blending ranges data.
+
+
+
+
+ Gets the image bits per pixel count.
+
+
+ The image bits per pixel count.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the layer options.
+
+
+ The layer options.
+
+
+
+
+ Gets or sets a value indicating whether the layer is visible
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is visible in group(If layer is not in group it means root group).
+
+
+ true if this instance is visible in group; otherwise, false.
+
+
+
+
+ Gets or sets the layer lock (Note that if flag LayerFlags.TransparencyProtected is set it will be overritten by layer lock flag.
+ To return LayerFlags.TransparencyProtected flag need to apply for layer option layer.Flags |= LayerFlags.TransparencyProtected
+
+
+ The layer lock.
+
+
+
+
+ Updates Fill Layer Pixels Data according to actual .
+
+ Unknown type of FillType
+
+
+
+ Gets the fill settings.
+
+
+ The fill settings.
+
+
+
+
+ Gets the type of the fill.
+
+
+ The type of the fill.
+
+
+
+
+ The namespace contains Fill Layers
+
+
+
+
+ Base interface for fill settings
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Gets or sets the location.
+
+
+ The location.
+
+
+
+
+ Gets or sets the median point location.
+
+
+ The median point location.
+
+
+
+
+ Base interface for fill settings
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets the location.
+
+
+ The location.
+
+
+
+
+ Gets or sets the median point location.
+
+
+ The median point location.
+
+
+
+
+ Base interface for fill settings
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ The namespace contains Fill Settings classes
+
+
+
+
+ Pattern Layer effect
+
+
+
+
+ Interface for Layer Effects
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the settings.
+
+
+ The settings.
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Pattern fill effect settings
+
+
+
+
+ Base fill effect settings
+
+
+
+
+ Gets the type of the fill.
+
+
+ The type of the fill.
+
+
+
+
+ Generates the LFX2 resource nodes.
+
+ Type of the point.
+ The color.
+ Name of the pattern.
+ The identifier.
+ The scale.
+ if set to true [linked].
+ The offset.
+ List of
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ The fill type
+
+
+
+
+ Gets or sets a value indicating whether this is linked.
+
+
+ true if linked; otherwise, false.
+
+
+
+
+ Gets or sets the scale.
+
+
+ The scale.
+
+
+
+
+ Gets or sets a value indicating whether [link with layer].
+
+
+ true if [link with layer]; otherwise, false.
+
+
+
+
+ Gets or sets the type of the point.
+
+ The type of the point.
+
+
+
+ Gets or sets the name of the pattern.
+
+
+ The name of the pattern.
+
+
+
+
+ Gets or sets the pattern identifier.
+
+
+ The pattern identifier.
+
+
+
+
+ Gets or sets the horizontal offset.
+
+
+ The horizontal offset.
+
+
+
+
+ Gets or sets the vertical offset.
+
+
+ The vertical offset.
+
+
+
+
+ Gets or sets the pattern data.
+
+
+ The pattern data.
+
+
+
+
+ Gets or sets the width of the pattern.
+
+
+ The width of the pattern.
+
+
+
+
+ Gets or sets the height of the pattern.
+
+
+ The height of the pattern.
+
+
+
+
+ Gradient Transparency Point
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets the location.
+
+
+ The location.
+
+
+
+
+ Gets or sets the median point location.
+
+
+ The median point location.
+
+
+
+
+ Gradient fill effect settings
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Generates the LFX2 resource nodes.
+
+ Generated List of
+
+
+
+ Adds the color point.
+
+ Created color point
+
+
+
+ Adds the color point.
+
+ Created transparency point
+
+
+
+ Removes the transparency point.
+
+ The point.
+
+
+
+ Removes the color point.
+
+ The point.
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets a value indicating whether [align with layer].
+
+
+ true if [align with layer]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is dither.
+
+
+ true if dither; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is reverse.
+
+
+ true if reverse; otherwise, false.
+
+
+
+
+ Gets or sets the angle.
+
+
+ The angle.
+
+ Angle must be in range from -180.0 to 180.0
+
+
+
+ Gets or sets the type of the gradient.
+
+
+ The type of the gradient.
+
+
+
+
+ Gets or sets the name of the gradient.
+
+
+ The name of the gradient.
+
+
+
+
+ Gets or sets the horizontal offset.
+
+
+ The horizontal offset.
+
+
+
+
+ Gets or sets the vertical offset.
+
+
+ The vertical offset.
+
+
+
+
+ The fill type
+
+
+
+
+ Gets the color points.
+
+
+ The color points.
+
+
+
+
+ Gets the transparency points.
+
+
+ The transparency points.
+
+
+
+
+ Color fill effect settings
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ The fill type
+
+
+
+
+ The Fill Type
+
+
+
+
+ The color fill type
+
+
+
+
+ The gradient fill type
+
+
+
+
+ The pattern fill type
+
+
+
+
+ Gradient Color Point
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets the location.
+
+
+ The location.
+
+
+
+
+ Gets or sets the median point location.
+
+
+ The median point location.
+
+
+
+
+ Gradient Layer effect
+
+
+
+
+ Gets or sets the settings.
+
+
+ The settings.
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Stroke Layer effect
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the fill settings.
+
+
+ The fill settings.
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Color Overlay Layer effect
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Drop Shadow Layer effect
+
+
+
+
+ Gets or sets the color.
+
+
+ The color.
+
+
+
+
+ Gets or sets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets or sets a value indicating whether this instance is visible.
+
+
+ true if this instance is visible; otherwise, false.
+
+
+
+
+ Gets or sets the opacity.
+
+
+ The opacity.
+
+
+
+
+ Gets or sets the angle in degrees.
+
+
+ The angle.
+
+
+
+
+ Gets or sets a value indicating whether [use this angle in all of the layer effects].
+
+
+ true if [use global light]; otherwise, false.
+
+
+
+
+ Gets or sets the distance in pixels.
+
+
+ The distance.
+
+
+
+
+ Gets or sets the intensity as a percent.
+
+
+ The spread.
+
+
+
+
+ Gets or sets the blur value in pixels.
+
+
+ The size.
+
+
+
+
+ Gets or sets the noise.
+
+
+ The noise.
+
+ Noise must be specified in percents in range from 0 to 100
+
+
+
+ Gets or sets a value indicating whether [knocks out].
+
+
+ true if [knocks out]; otherwise, false.
+
+
+
+
+ The namespace contains Layer Effects wrappers
+
+
+
+
+ Class GdFlResource.
+ This resource contains information about blending of clipped element.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the color of the RGB.
+
+ The RGB Color
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the angle.
+
+
+ The angle.
+
+
+
+
+ Gets or sets the horizontal offset.
+
+
+ The horizontal offset.
+
+
+
+
+ Gets or sets the vertical offset.
+
+
+ The vertical offset.
+
+
+
+
+ Gets or sets the type of the gradient.
+
+
+ The type of the gradient.
+
+
+
+
+ Gets the color points.
+
+
+ The color points.
+
+
+
+
+ Gets the transparency points.
+
+
+ The transparency points.
+
+
+
+
+ Gets or sets the name of the gradient.
+
+
+ The name of the gradient.
+
+
+
+
+ Gets or sets the gradient interval.
+
+
+ The gradient interval.
+
+
+
+
+ Gets or sets a value indicating whether this is reverse.
+
+
+ true if reverse; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is dither.
+
+
+ true if dither; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [align with layer].
+
+
+ true if [align with layer]; otherwise, false.
+
+
+
+
+ Class CmlsResource.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ The psd image resource exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The resource.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The resource.
+ The inner exception.
+
+
+
+ Gets the psd resource which caused this exception.
+
+ The resource.
+
+
+
+ Represents the psd file format color modes.
+
+
+
+
+ The bitmap color mode.
+
+
+
+
+ The grayscale mode.
+
+
+
+
+ Indexed color mode.
+
+
+
+
+ RGB color mode.
+
+
+
+
+ CMYK color mode.
+
+
+
+
+ Multichannel color mode.
+
+
+
+
+ Duotone color mode.
+
+
+
+
+ Lab color mode.
+
+
+
+
+ Defines the compression method used for image data.
+
+
+
+
+ No compression. The image data stored as raw bytes in RGBA planar order.
+ That means that first all R data is written, then all G is written, then all B and finally all A data is written.
+
+
+
+
+ RLE compressed the image data starts with the byte counts for all the scan lines (rows * channels), with each
+ count stored as a two-byte value. The RLE compressed data follows, with each scan line compressed separately.
+ The RLE compression is the same compression algorithm used by the Macintosh ROM routine PackBits and the TIFF standard.
+
+
+
+
+ ZIP without prediction.
+
+
+
+
+ ZIP with prediction.
+
+
+
+
+ Brightness/contrast layer.
+
+
+
+
+
+ Adjustment layer. For example Brightness/contrast
+
+
+
+
+
+ Merges the layer to specified layer
+
+ The layer to merge into.
+
+
+
+ Gets or sets the brightness. For PS range of brightness is from -150 to +150. But we ignore this.
+
+
+ The brightness.
+
+
+
+
+ Gets or sets the contrast. For PS range of contrast is from -50 to +100. But we ignore this.
+
+
+ The contrast.
+
+
+
+
+ Cmyk Channel Mixer Adjustment layer.
+
+
+
+
+
+ Channel Mixer Adjustment layer.
+
+
+
+
+
+ Gets the index of the channel by. Can return RgbMixerChannel or CmykMixerChannel
+
+ The index.
+
+
+
+
+
+
+ Gets or sets a value indicating whether this is monochrome.
+
+
+ true if monochrome; otherwise, false.
+
+
+
+
+ Gets the index of the channel by. Returns CmykMixerChannel
+
+ The index.
+
+
+
+ CmykMixerChannelLayer has no more than 4 channels. Index of First channel is 0
+
+
+
+ Gets the cyan channel.
+
+
+ The cyan channel.
+
+
+
+
+ Gets the magenta channel.
+
+
+ The magenta channel.
+
+
+
+
+ Gets the yellow channel.
+
+
+ The yellow channel.
+
+
+
+
+ Gets the black channel.
+
+
+ The black channel.
+
+
+
+
+ Exposure Adjustment layer.
+
+
+
+
+
+ Gets or sets the Exposure. For PS range of Exposure is from -20 to +20.
+
+
+ The Exposure.
+
+
+
+
+ Gets or sets the Offset. For PS range of Offset is from -0.5 to +0.5
+
+
+ The Offset.
+
+
+
+
+ Gets or sets the GammaCorrection. For PS range of GammaCorrection is from 9.99 to +0.01
+
+
+ The GammaCorrection.
+
+
+
+
+ HueSaturation adjustment layer.
+
+
+
+
+
+
+ Gets the range.
+
+ The index.
+ Color Range Hsl
+
+
+
+ Gets or sets the hue.
+
+
+ The hue.
+
+ Hue must be in range from -180 to +180
+
+
+
+ Gets or sets the saturation.
+
+
+ The saturation.
+
+ Saturation must be in range from -100 to +100
+
+
+
+ Gets or sets the lightness.
+
+
+ The lightness.
+
+ Lightness must be in range from -100 to +100
+
+
+
+ Gets or sets a value indicating whether this is colorize.
+
+
+ true if colorize; otherwise, false.
+
+
+
+
+ Curves Adjustment Layer
+
+
+
+
+ Gets the curves manager.
+
+
+ or that depends on IsDiscreteManagerUsed and IsContinuousManagerUsed property
+
+
+
+ Gets or sets a value indicating whether this instance is discrete manager used.
+
+
+ true if this instance is discrete manager used; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is continuous manager used.
+
+
+ true if this instance is continuous manager used; otherwise, false.
+
+
+
+
+ Levels Adjustment Layer
+
+
+
+
+ Gets the channel.
+
+ The index.
+
+ by index
+
+
+
+ Gets the master channel.
+
+
+ The master channel.
+
+
+
+
+ The namespace contains PSD adjustment layers.
+
+
+
+
+ PhotoFilter adjustment layer.
+
+
+
+
+
+
+ Gets or sets the RGB color of filter.
+
+
+ The color.
+
+
+
+
+ Gets or sets the density of filter
+
+
+ The density.
+
+ Density must be in range from 0 to 100
+
+
+
+ Gets or sets a value indicating whether [preserve luminosity].
+
+
+ true if [preserve luminosity]; otherwise, false.
+
+
+
+
+ Rgb Channel Mixer Adjustment layer.
+
+
+
+
+
+ Gets the index of the channel by. Returns RgbMixerChannel
+
+ The index.
+
+
+
+ RgbMixerChannelLayer has no more than 3 channels. Index of First channel is 0
+
+
+
+ Gets the red channel.
+
+
+ The red channel.
+
+
+
+
+ Gets the blue channel.
+
+
+ The blue channel.
+
+
+
+
+ Gets the green channel.
+
+
+ The green channel.
+
+
+
+
+ MixerChannel. It's wrapper for channel raw data. Used in MixrResource
+
+
+
+
+ Initializes a new instance of the class.
+
+ The channel raw data.
+
+
+
+ Gets the raw data.
+
+ Raw byte data
+
+
+
+ Gets the short index of the by.
+
+ The index.
+ Value of short type from raw data
+
+
+
+ Sets the short index of the by.
+
+ The index.
+ The value.
+
+
+
+ Gets or sets the constant.of channel.
+
+
+ The constant.
+
+
+
+
+ CmykChannel. It's wrapper for channel raw data. Used in MixrResource
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+
+
+
+ Gets or sets the cyan.
+
+
+ The cyan.
+
+
+
+
+ Gets or sets the magenta.
+
+
+ The magenta.
+
+
+
+
+ Gets or sets the yellow.
+
+
+ The yellow.
+
+
+
+
+ Gets or sets the black.
+
+
+ The black.
+
+
+
+
+ RgbChannel. It's wrapper for channel raw data. Used in MixrResource
+
+
+
+
+ Gets or sets the red.
+
+
+ The red.
+
+
+
+
+ Gets or sets the green.
+
+
+ The green.
+
+
+
+
+ Gets or sets the blue.
+
+
+ The blue.
+
+
+
+
+ The layer blend mode.
+
+
+
+
+ Normal blend mode.
+
+
+
+
+ Darken blend mode.
+
+
+
+
+ Lighten blend mode.
+
+
+
+
+ Hue blend mode.
+
+
+
+
+ Saturation blend mode.
+
+
+
+
+ Color blend mode.
+
+
+
+
+ Luminosity blend mode.
+
+
+
+
+ Multiply blend mode.
+
+
+
+
+ Screen blend mode.
+
+
+
+
+ Dissolve blend mode.
+
+
+
+
+ Overlay blend mode.
+
+
+
+
+ Hard light blend mode.
+
+
+
+
+ Soft light blend mode.
+
+
+
+
+ Difference blend mode.
+
+
+
+
+ Exclusion blend mode.
+
+
+
+
+ Color dodge blend mode.
+
+
+
+
+ Color burn blend mode.
+
+
+
+
+ Linear burn blend mode.
+
+
+
+
+ Linear dodge blend mode.
+
+
+
+
+ Vivid light blend mode.
+
+
+
+
+ Linear light blend mode.
+
+
+
+
+ Pin light blend mode.
+
+
+
+
+ Hard mix blend mode.
+
+
+
+
+ Pass through blend mode.
+
+
+
+
+ Darker color blend mode.
+
+
+
+
+ Lighter color blend mode.
+
+
+
+
+ Subtract blend mode.
+
+
+
+
+ Divide blend mode.
+
+
+
+
+ The blend range.
+
+
+
+
+ Gets or sets the source blend range.
+
+
+ The source blend range.
+
+
+
+
+ Gets or sets the destination blend range.
+
+
+ The destination blend range.
+
+
+
+
+ The channel information.
+
+
+
+
+ Gets or sets the compression method.
+
+
+ The compression method.
+
+
+
+
+ Gets or sets the channel ID.
+
+
+ The channel ID.
+
+
+
+
+ Gets the channel length in bytes.
+
+
+ The length.
+
+
+
+
+ The global layer mask section.
+
+
+
+
+ Gets the global layer mask section length in bytes.
+
+
+
+
+ Gets or sets the overlay color space (undocumented value).
+
+
+ The overlay color space.
+
+
+
+
+ Gets or sets the alpha mask.
+
+
+ The alpha mask.
+
+
+
+
+ Gets or sets the red mask.
+
+
+ The red mask.
+
+
+
+
+ Gets or sets the green mask.
+
+
+ The green mask.
+
+
+
+
+ Gets or sets the blue mask.
+
+
+ The blue mask.
+
+
+
+
+ Gets or sets global layers opacity. 0 = transparent, 100 = opaque.
+
+
+ The global layers opacity.
+
+
+
+
+ Gets or sets the kind.
+ 0 = Color selected--i.e. inverted;
+ 1 = Color protected;
+ 128 = use value stored per layer. This value is preferred.
+ The others are for backward compatibility with beta versions.
+
+
+ The kind.
+
+
+
+
+ The layer blending ranges data.
+
+
+
+
+ Gets the length of layer blending ranges data in bytes.
+
+
+ The length of layer blending ranges data.
+
+
+
+
+ Gets or sets the composite blend ranges.
+
+
+ The composite blend ranges.
+
+
+
+
+ Gets or sets the channel blend ranges.
+
+
+ The channel blend ranges.
+
+
+
+
+ The layer flags
+
+
+
+
+ The transparency protected
+
+
+
+
+ The visible flag
+
+
+
+
+ The obsolete flag
+
+
+
+
+ 1 for Photoshop 5.0 and later, tells if bit 4 has useful information
+
+
+
+
+ The pixel data irrelevant to appearence in document
+
+
+
+
+ The undocumented flag
+
+
+
+
+ Group layer class
+
+
+
+
+ Adds the layer to the layer group.
+
+ The layer.
+
+
+
+ The layers in layer group
+
+
+
+
+ The layer mask data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data size.
+
+
+
+ Saves the common info.
+
+ The stream container.
+
+
+
+ Gets the size of the layer mask mask data.
+
+
+ The size of the layer mask mask data.
+
+
+
+
+ Gets or sets the top layer mask position.
+
+
+ The top layer mask position.
+
+
+
+
+ Gets or sets the left layer mask position.
+
+
+ The left layer mask position.
+
+
+
+
+ Gets or sets the bottom layer mask position.
+
+
+ The bottom layer mask position.
+
+
+
+
+ Gets or sets the right layer mask position.
+
+
+ The right layer mask position.
+
+
+
+
+ Gets or sets the default color.
+
+
+ The default color.
+
+
+
+
+ Gets or sets the layer mask flags.
+
+
+ The layer mask flags.
+
+
+
+
+ Gets or sets the mask image data.
+
+
+ The image data.
+
+
+
+
+ Gets or sets the mask image data vector.
+
+
+ The image data vector.
+
+
+
+
+ The full layer mask information.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the background color.
+
+
+ The background color.
+
+
+
+
+ Gets or sets the real layer mask flags.
+
+
+ The real layer mask flags.
+
+
+
+
+ Gets or sets the enclosing top layer mask position.
+
+
+ The top layer mask position.
+
+
+
+
+ Gets or sets the enclosing left layer mask position.
+
+
+ The left layer mask position.
+
+
+
+
+ Gets or sets the enclosing bottom layer mask position.
+
+
+ The bottom layer mask position.
+
+
+
+
+ Gets or sets the enclosing right layer mask position.
+
+
+ The right layer mask position.
+
+
+
+
+ The short layer mask information.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the layer mask padding.
+
+
+ The layer mask padding.
+
+
+
+
+ The layer mask flags
+
+
+
+
+ No flags defined.
+
+
+
+
+ Position is relative to layer.
+
+
+
+
+ Layer mask is disabled.
+
+
+
+
+ Invert layer mask when blending.
+
+
+
+
+ Indicates that the user mask actually came from rendering other data
+
+
+
+
+ Class SoCoResource.
+ This resource contains information about Color Fill Layers
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+
+ Gets the RGB color .
+
+ The RGB Color
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ The namespace contains linked classes
+
+
+
+
+ Class PattResource. Resource with pattern data
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bytes.
+
+
+
+ Sets the pattern.
+
+ The pixels.
+ The bounds.
+ Pixels array length must be equal to bounds area
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the pattern data.
+
+ The pattern data.
+
+
+
+ Gets the pattern identifier.
+
+ The pattern identifier.
+
+
+
+ Gets the name.
+
+ The name.
+
+
+
+ Gets the height.
+
+ The height.
+
+
+
+ Gets the width.
+
+ The width.
+
+
+
+ Gets the image mode.
+
+ The image mode.
+
+
+
+ Gets the version.
+
+ The version.
+
+
+
+ Gets the length of the pattern.
+
+ The length of the pattern.
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Layer lock options
+
+
+
+
+ No layer lock
+
+
+
+
+ Lock all properties of a layer
+
+
+
+
+ Partially lock a layer - Confines editing to the opaque portions of the layer.
+ This option is equivalent to the Preserve Transparency option in earlier versions of Photoshop.
+
+
+
+
+ Partially lock a layer - Prevents modification of the layer’s pixels using the painting tools.
+
+
+
+
+ Partially lock a layer - Prevents the layer’s pixels from being moved.
+
+
+
+
+ Represents the layer resources registry.
+
+
+
+
+ Gets the first supported descriptor by its type name.
+
+ The descriptor type name.
+ The first found opener descriptor or null if not such descriptor is found.
+ The first opener descriptor will be actually the last registered.
+
+
+
+ Gets the first supported opener descriptor.
+
+ The stream.
+ The PSD version.
+
+ The layer resource loader descriptor or null if no loader descriptor supported for such stream.
+
+
+ The first loader will be actually the last registered.
+
+
+
+
+ Loads using first found opener suitable for the specified .
+
+ The stream.
+ The PSD version.
+
+ The loaded or null if no opener is found.
+
+
+ The first opener will be actually the last registered.
+
+
+
+
+ Registers the opener.
+
+ The opener descriptor to register.
+
+
+
+ Unregisters the opener.
+
+ The opener descriptor to unregister.
+
+
+
+ Gets the registered descriptors.
+
+ The registered descriptors.
+
+
+
+ Base Class for adjustments layer resources
+
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Class BooleanResource. It's pseudo resource. Photoshop haven't it
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true the resource value is true.
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid Knko Resource value
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets or sets a value indicating whether value is true or false
+
+
+ true if value is true; otherwise, false.
+
+
+
+
+ Class BritResource. Resource of Brightness/Contrast Adjustment Layer
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The brightness.
+ The contrast.
+ The mean value for brightness and contrast.
+ if set to true [lab color].
+
+
+
+ Initializes a new instance of the class.
+ PSD format specification contains following description:
+ 2 Brightness
+ 2 Contrast
+ 2 Mean value for brightness and contrast
+ 1 Lab color only
+ It is not used in modern PSD(CS5 and up) where CgEd is. CgEd stores info properties
+
+ The bytes.
+
+
+
+ Gets or sets the brightness.
+
+
+ The brightness.
+
+
+
+
+ Gets or sets the contrast.
+
+
+ The contrast.
+
+
+
+
+ Gets or sets the mean value for brightness and contrast.
+
+
+ The mean value for brightness and contrast.
+
+
+
+
+ Gets or sets a value indicating whether [lab color].
+
+
+ true if [lab color]; otherwise, false.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class CgEdResource. Content Generator Extra Data (Photoshop CS5)
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+ PSD format specification contains following description:
+ 4 Descriptor Version( = 16)
+ Variable Length Descriptor of extra data
+ Suggestion: it may not be used in old versions of PS(Before CS5).
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets the brightness.
+
+
+ The brightness.
+
+
+
+
+ Gets or sets the contrast.
+
+
+ The contrast.
+
+
+
+
+ Gets or sets the mean value for brightness and contrast.
+
+
+ The mean value for brightness and contrast.
+
+
+
+
+ Gets or sets a value indicating whether [lab color] is used.
+
+
+ true if used [lab color]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [use legacy].
+
+
+ true if [use legacy]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is automatic.
+
+
+ true if automatic; otherwise, false.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ The PSD Class ID object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The class ID as series of bytes.
+
+
+
+ Initializes a new instance of the class.
+
+ The class ID.
+
+
+
+ Initializes a new instance of the class.
+
+ The class ID.
+
+
+
+ Initializes a new instance of the class.
+
+ The class ID in ASCII encoding.
+
+
+
+ Saves the class information to the specified stream container.
+
+ The stream container to save to.
+
+
+
+ Gets the bytes representing class ID.
+
+
+
+
+ Gets the class name as ASCII encoding.
+
+
+ The class name.
+
+
+
+
+ Gets the class ID length in bytes.
+
+
+
+
+ has 6 color ranges where you can change HSV parameters.
+ Every range has 4 key points to identify range borders. And it's ColorRangeHsl
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color range data.
+ Expected length of " + this.GetType() + " is 14
+
+
+
+ Determines whether is hue in big range.
+
+ The hue value.
+
+ true if hue in big range; otherwise, false.
+
+
+
+
+ Determines whether hue in small range.
+
+ The hue value.
+
+ true if hue in small range; otherwise, false.
+
+
+
+
+ Gets the range Coefficient.
+
+ The hue value.
+ Saturation range coefficient.
+
+
+
+ Saves data to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets or sets the hue.
+
+
+ The hue.
+
+
+
+
+ Gets or sets the saturation.
+
+
+ The saturation.
+
+
+
+
+ Gets or sets the lightness.
+
+
+ The lightness.
+
+
+
+
+ Gets or sets the most left border.
+
+
+ The most left border.
+
+
+
+
+ Gets or sets the left border.
+
+
+ The left border.
+
+
+
+
+ Gets or sets the right border.
+
+
+ The right border.
+
+
+
+
+ Gets or sets the most right border.
+
+
+ The most right border.
+
+
+
+
+ Manager for Curves Adjustment Layer that manipulates curves
+
+
+
+
+ Base Class to manage CurvResource
+
+
+
+
+ Initializes a new instance of the class.
+
+ The maximum channel count.
+
+
+
+ Determines whether [is channel used] [the specified channel index].
+
+ Index of the channel.
+
+ true if [is channel used] [the specified channel index]; otherwise, false.
+
+
+
+
+ Gets the channels count.
+
+ Channels count
+
+
+
+ Gets the maximum channel count.
+
+
+ The maximum channel count.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The maximum channel count.
+
+
+
+ Updates the point of curve.
+
+ Index of the channel.
+ Index of the point.
+ The x location.
+ The y location.
+
+
+
+ Adds the point of curve.
+
+ Index of the channel.
+ The x location.
+ The y location.
+ The point you trying to add already exists
+
+
+
+ Gets the curve point by index.
+
+ Index of the channel.
+ Index of the point.
+ Curve point by index of channel
+
+
+
+ Gets the curve point count.
+
+ Index of the channel.
+ Count of Curve Point in channel
+
+
+
+ Removes the point of curve.
+
+ Index of the channel.
+ Index of the point.
+
+
+
+ Determines whether [is channel used] [the specified channel index].
+
+ Index of the channel.
+
+ true if [is channel used] [the specified channel index]; otherwise, false.
+
+
+
+
+ Gets the channels count.
+
+ Channels count
+
+
+
+ Manager for Curves Adjustment Layer that manipulates pixels' map
+
+
+
+
+ Sets the value in position.
+
+ Index of the channel.
+ The position.
+ The value.
+
+
+
+ Gets the value in position.
+
+ Index of the channel.
+ The position.
+ Value of curve by its position
+
+
+
+ Sets to default value in position.
+
+ Index of the channel.
+ The position.
+
+
+
+ Sets the value of whole channel.
+
+ Index of the channel.
+ The channel value.
+ To set Whole Channel value you should use byte array with length = 256
+
+
+
+ Determines whether [is channel used] [the specified channel index].
+
+ Index of the channel.
+
+ true if [is channel used] [the specified channel index]; otherwise, false.
+
+
+
+
+ Gets the channels count.
+
+ Channel count
+
+
+
+ Class CustResource.
+ This resource contains information about blending of clipped element.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the layer created date.
+
+
+ The layer created date.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class ExpaResource. Resource of Exposure Adjustment Layer
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exposure.
+ The offset.
+ The gamma.
+
+
+
+ Initializes a new instance of the class.
+
+ The bytes.
+ Invalid Expa Resource data
+
+
+
+ Gets the version. Default is 1
+
+
+ The version.
+
+
+
+
+ Gets or sets the exposure.
+
+
+ The exposure.
+
+
+
+
+ Gets or sets the offset.
+
+
+ The offset.
+
+
+
+
+ Gets or sets the gamma.
+
+
+ The gamma.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class FxrpResource. The reference point of layer
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x coordinate of reference point
+ The y coordinate of reference point
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid Fxrp Resource value
+
+
+
+ Saves to the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets or sets the x of reference point
+
+
+ The x of reference point
+
+
+
+
+ Gets or sets the y of reference point
+
+
+ The y of reference point
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class Hue2Resource. Resource of Exposure Adjustment Layer
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+ Invalid Hue2 Resource data
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the version. Default is 2
+
+
+ The version.
+
+
+
+
+ Gets or sets a value indicating whether this is colorize.
+
+
+ true if colorize; otherwise, false.
+
+
+
+
+ Gets or sets the master hue.
+
+
+ The master hue.
+
+
+
+
+ Gets or sets the master saturation.
+
+
+ The master saturation.
+
+
+
+
+ Gets or sets the master lightness.
+
+
+ The master lightness.
+
+
+
+
+ Gets the ranges of Hue/Saturation Adjustment Layer.
+ Ranges in PS can change names if range is changed, so we should work by index
+
+
+ The ranges.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class IopaResource.
+ This resource contains information about the fill opacity property from the layer style form
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The raw byte data.
+ Invalid iOpa Resource data. Expected length of iOpaResource is 4
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the fill opacity.
+
+
+ The fill opacity.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class LclrResource.
+ This resource contains information about color of layer in layers' list is PS. It's only
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color.
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ Invalid Lclr Resource value
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the color of layer.
+
+
+ The color.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class KnkoResource.
+ This resource contains information about blending of clipped element.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [blend interior elements].
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid Knko Resource value
+
+
+
+ Gets or sets a value indicating whether [blend interior elements].
+
+
+ true if [blend interior elements]; otherwise, false.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Class InfxResource.
+ This resource contains information about blending of clipped element.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [blend interior elements].
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid infx Resource value
+
+
+
+ Gets or sets a value indicating whether [blend interior elements].
+
+
+ true if [blend interior elements]; otherwise, false.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ The resource loader.
+
+
+
+
+ Determines whether resource can be loaded from the specified .
+
+ The stream container.
+
+ true if resource can be loaded from the specified ; otherwise, false.
+
+
+
+
+ Loads the .
+
+ The stream container to load from.
+
+ The loaded resource.
+
+
+
+
+ The layer section resource.
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+
+ The stream container to save to.
+
+
+ The PSD version.
+
+
+
+
+ Gets or sets the blend mode key.
+
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the section type.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets or sets the subtype.
+
+
+
+
+ The section subtype
+
+
+
+
+ The not used
+
+
+
+
+ The normal
+
+
+
+
+ The scene group
+
+
+
+
+ The layer section type
+
+
+
+
+ The layer.
+
+
+
+
+ The open folder.
+
+
+
+
+ The closed folder.
+
+
+
+
+ The section divider.
+
+
+
+
+ Class for working with channels in Levels Adjustment Layer
+
+
+
+
+ Gets or sets the input shadow level.
+
+
+ The input shadow level.
+
+ Input Shadow Level can be set only in range from 0 to " + (this.InputHighlightLevel - 2)
+
+
+
+ Gets or sets the input highlight level.
+
+
+ The input highlight level.
+
+ Input Highlight Level can be set only in range from " + (this.InputShadowLevel + 2) + " to 255
+
+
+
+ Gets or sets the input midtone level float.
+
+
+ The input midtone level float.
+
+ Input Midtone Level can be set only in range from 0.01 to 9.99
+
+
+
+ Gets or sets the output shadow level.
+
+
+ The output shadow level.
+
+ Output Shadow Level can be set only in range from 0 to " + (this.OutputHighlightLevel - 2)
+
+
+
+ Gets or sets the output highlight level.
+
+
+ The output highlight level.
+
+ Output Highlight Level can be set only in range from " + (this.OutputShadowLevel + 2) + " to 255
+
+
+
+ Class LevlResource. Resource of Exposure Adjustment Layer
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+ Supported in GrayScale, Duotone, RGB, CMYK, Lab color modes
+ 2 bytes - Version (=2)
+ 29 * 10 bytes - Sets of level records with 5 short integers
+ 4 bytes - Lvls header (Starts at 292 index)
+ 2 bytes - Version (=3)
+ 2 bytes - Count of total level record
+ 10 * (Total Count - 29)
+ Zero ending of Lvls resource should be fold for four too
+
+ The bytes.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the channel.
+
+ Index of the channel.
+ Level Data of Channel
+
+
+
+ Gets the version. Default is 2
+
+
+ The version.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Lfx2 resource (effects resource)
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the descriptor version.
+
+
+ The descriptor version.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the blend mode.
+
+
+ The blend mode.
+
+
+
+
+ Gets the color of the effect.
+
+
+ The color of the effect.
+
+
+
+
+ Gets the opacity.
+
+
+ The opacity.
+
+
+
+
+ BlendingOptions. It's a wrapper for Lfx2Resource which provides api for layer effects
+
+
+
+
+ Adds the color overlay.
+
+
+ Created object
+
+
+
+
+ Adds the Gradient overlay.
+
+
+ Created object
+
+
+
+
+ Adds the Pattern overlay.
+
+
+ Created object
+
+
+
+
+ Adds the drop shadow effect
+
+
+ Created object
+
+
+
+
+ Gets the effects.
+
+
+ The effects.
+
+
+
+
+ Gradient type
+
+
+
+
+ The linear gradient type
+
+
+
+
+ The radial gradient type
+
+
+
+
+ The angle gradient type
+
+
+
+
+ The reflected gradient type
+
+
+
+
+ The diamond gradient type
+
+
+
+
+ The shape burst gradient type
+
+
+
+
+ Class MixrResource. Resource of Channel Mixer Adjustment Layer
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+ PSD format specification contains following description:
+ 2 Version ( = 1)
+ 2 Monochrome
+ 20 RGB or CMYK color plus constant for the mixer settings. 4 * 2 bytes of color with 2 bytes of constant.
+
+
+
+
+ Initializes a new instance of the class.
+ PSD format specification contains following description:
+ 2 Version ( = 1)
+ 2 Monochrome
+ 20 RGB or CMYK color plus constant for the mixer settings. 4 * 2 bytes of color with 2 bytes of constant.
+
+ The data of the resource.
+
+
+
+ Gets the channel information raw data
+
+ Index of the channel.
+ Raw byte array of channel info.
+ Mixr resource has no more than 4 channels. Index of First channel is 0
+
+
+
+ Sets the channel information.
+
+ Index of the channel.
+ The value.
+ Mixr resource has no more than 4 channels. Index of First channel is 0
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version. Default value is 1
+
+
+
+
+ Gets or sets a value indicating whether this is monochrome.
+
+
+ true if monochrome; otherwise, false.
+
+
+
+
+ Class CurvResource. Resource of Curves Adjustment Layer
+ 1 byte - 0 if use curves, 1 if used pixels on map
+ if 0 then:
+ 2 bytes - short. Default is 1
+ 4 bytes - int. Used only last byte by bit. First bit is for 1 channel, the Fourth bit for 4 channel for example
+ 2 bytes - short points count
+ 4 bytes * count of point - points of curve 2 short: first position, second height
+ 4 bytes - word "Crv "
+ 2 bytes - short default is 4 for Curves
+ 4 bytes - int. Default is 1
+ 4 bytes - point count
+ 4 bytes * point count - points of curve 2 short: first position, second height
+ 0-4 bytes - Leading to be fold for four
+ if 1 then:
+ 2 bytes - short. Default is 1
+ 4 bytes - int. Used only last byte. One channel is in one bit. First bit is for 1 channel, the Fourth bit for 4 channel for example
+ 256 * count of changed channels - ordered values of channel in range 0 - 255
+ 4 bytes - word "Crv "
+ 2 bytes - short. Default is 3 for pixels on map
+ 4 bytes - int Channel count
+ (2 + 256) bytes - short 2 for channel index, 256 is ordered values of channel in range 0 - 255
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The maximum channel count.
+
+
+
+ Initializes a new instance of the class.
+
+ The bytes.
+
+
+
+ Gets the channel data.
+
+ Index of the channel.
+ Channel data
+
+
+
+ Gets the active manager.
+
+ Active manager
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the curve manager.
+
+
+ or
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets or sets a value indicating whether this instance is data stored discrete.
+
+
+ true if this instance is data stored discrete; otherwise, false.
+
+
+
+
+ Photoshop leading mode (distance between lines)
+
+
+
+
+ Automatic leading mode
+
+
+
+
+ Manual leading mode
+
+
+
+
+ Class PhflResource. Resource of Exposure Adjustment Layer
+ 2 Version ( = 3 ) or ( = 2 )
+ 12 4 bytes each for XYZ color(Only in Version 3)
+ 10 2 bytes color space followed by 4 * 2 bytes color component(Only in Version 2)
+ 4 Density
+ 1 Preserve Luminosity
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the color of the RGB.
+
+ The RGB Color
+
+
+
+ Sets the RGB color.
+
+ The RGB color.
+
+
+
+ Gets or sets the density.
+
+
+ The density.
+
+
+
+
+ Gets or sets a value indicating whether [preserve luminosity].
+
+
+ true if [preserve luminosity]; otherwise, false.
+
+
+
+
+ Gets the version. Default is 2 or 3
+
+
+ The version.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class PhflResource. Resource of Exposure Adjustment Layer
+ 2 Version ( = 3 ) or ( = 2 )
+ 12 4 bytes each for XYZ color(Only in Version 3)
+ 10 2 bytes color space followed by 4 * 2 bytes color component(Only in Version 2)
+ 4 Density
+ 1 Preserve Luminosity
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data pf the resource.
+ Invalid data length
+
+
+
+ Gets the color.
+
+
+ The RGB color
+
+
+
+
+ Sets the RGB color.
+
+ The color.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the color space.
+
+
+ The color space.
+
+ TODO: Check if this short is coincides for enum in ColorModes.cs
+
+
+
+ Gets or sets the L component of color
+
+
+ The L component.
+
+ L Color must be in range from 0 to 10000
+
+
+
+ Gets or sets the A component of color
+
+
+ The A component.
+
+ A Color must be in range from -12800 to 12700
+
+
+
+ Gets or sets the B component
+
+
+ The B component.
+
+ B Color must be in range from -12800 to 12700
+
+
+
+ Gets the version.
+
+
+ The version.
+
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Class PhflResource. Resource of Exposure Adjustment Layer
+ 2 Version ( = 3 ) or ( = 2 )
+ 12 4 bytes each for XYZ color(Only in Version 3)
+ 10 2 bytes color space followed by 4 * 2 bytes color component(Only in Version 2)
+ 4 Density
+ 1 Preserve Luminosity
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ Supported only version 2 and 3
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+ Invalid data length
+
+
+
+ Gets the color.
+
+
+ The RGB color
+
+
+
+
+ Sets the RGB color.
+
+ The color.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets the color space.
+
+
+ The color space.
+
+
+
+
+ Gets or sets the X color.
+
+
+ The X color.
+
+
+
+
+ Gets or sets the Y color.
+
+
+ The Y color.
+
+
+
+
+ Gets or sets the Z color.
+
+
+ The Z color.
+
+
+
+
+ Gets the version. Default is 2 or 3
+
+
+ The version.
+
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Possible colors of Sheet color setting.
+ It's UI decorative color of layer in layers' list in PS
+
+
+
+
+ Color is not specified.
+
+
+
+
+ The red color.
+
+
+
+
+ The orange color.
+
+
+
+
+ The yellow color.
+
+
+
+
+ The green color.
+
+
+
+
+ The blue color.
+
+
+
+
+ The violet color.
+
+
+
+
+ The gray color.
+
+
+
+
+ Class ShmdResource. Metadata settings
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ The sub resource header length
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data of the resource.
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets or sets the layer created time. If Layer created time not specified then returns new DateTime(0)
+
+
+ The layer created time.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Class lnsrResource.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the LNSR.
+ You can not create lnsr with Unknown type value
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The bytes.
+ Invalid lnsr Resource value
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the raw data.
+
+
+ The data.
+
+
+
+
+ Gets the value as LnsrResourceType if corresponding enum is described.
+ Otherwise return Unknown
+
+
+ The value as LnsrResourceType
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Discovered Possible Lnsr Resource Types
+
+
+
+
+ The rend for text
+
+
+
+
+ The cont for fill layer for example
+
+
+
+
+ The Bgnd for Background layer
+
+
+
+
+ The layr for regular image layer
+
+
+
+
+ The Unknown is for situation when we didn't describe enum
+
+
+
+
+ The lr32 resource.
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The length.
+
+
+
+
+ Saves the layer record.
+
+ The stream container.
+ The psd version.
+ Saving of 32 bit channels is not implemented
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets or sets the layers.
+
+
+ The layers.
+
+
+
+
+ Gets the length.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ The lr32 resource.
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The length.
+
+
+
+
+ Saves the layer record.
+
+ The stream container.
+ The psd version.
+ Saving of 32 bit channels is not implemented
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets or sets the layers.
+
+
+ The layers.
+
+
+
+
+ Gets the length.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Layer protected settings
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [is transparency protected].
+ if set to true [is composite protected].
+ if set to true [is position protected].
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid Lspf Resource data length
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets a value indicating whether this instance is transparency protected.
+
+
+ true if this instance is transparency protected; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is composite protected.
+
+
+ true if this instance is composite protected; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is position protected.
+
+
+ true if this instance is position protected; otherwise, false.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the type of the lock.
+
+
+ The type of the lock.
+
+
+
+
+ Layer name resource
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets or sets the name.
+
+
+ The name.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Class ClblResource.
+ This resource contains information about blending of clipped element.
+
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [blend clipped elements].
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The resource data.
+ Invalid clbl Resource value
+
+
+
+ Gets or sets a value indicating whether [blend clipped elements].
+
+
+ true if [blend clipped elements]; otherwise, false.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Class LyidResource.
+
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The identifier of layer.
+
+
+
+ Initializes a new instance of the class.
+ With custom or unknown value
+
+ The bytes.
+ Invalid lyid Resource value
+
+
+
+ Saves to the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets the signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the psd version.
+
+
+
+
+ The namespace contains PSD file format entities contained in layers.
+
+
+
+
+ The namespace contains PSD file format entities contained in layers.
+
+
+
+
+ Represents the OS type structure.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the header length.
+
+ The header length
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the key name.
+
+
+ The key name.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ Represents the resources registry.
+
+
+
+
+ Gets the first supported descriptor by its type name.
+
+ The descriptor type name.
+ The first found opener descriptor or null if not such descriptor is found.
+ The first opener descriptor will be actually the last registered.
+
+
+
+ Gets the first supported opener descriptor.
+
+ The stream.
+
+ The layer resource loader descriptor or null if no loader descriptor supported for such stream.
+
+
+ The first loader will be actually the last registered.
+
+
+
+
+ Loads using first found opener suitable for the specified .
+
+ The stream.
+
+ The loaded or null if no opener is found.
+
+
+ The first opener will be actually the last registered.
+
+
+
+
+ Registers the opener.
+
+ The opener descriptor to register.
+
+
+
+ Unregisters the opener.
+
+ The opener descriptor to unregister.
+
+
+
+ Gets the registered descriptors.
+
+ The registered descriptors.
+
+
+
+ Txt2 resource class
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the text record to Resource and returns id of text record
+
+ The record text.
+
+ Returns Id of text record for resource
+
+ Unknown Txt2 Resource version
+
+
+
+ Gets the text record from resource data.
+
+ Array of text record
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Contains information about type tool font.
+
+
+
+
+ Saves the information to the specified stream container.
+
+ The stream container to save to.
+
+
+
+ Gets or sets the mark value.
+
+
+ The mark value.
+
+
+
+
+ Gets or sets the font type data.
+
+
+ The font type data.
+
+
+
+
+ Gets or sets the font name.
+
+
+ The font name.
+
+
+
+
+ Gets or sets the font family.
+
+
+ The font family.
+
+
+
+
+ Gets or sets the font style name.
+
+
+ The font style name.
+
+
+
+
+ Gets or sets the script value.
+
+
+ The script value.
+
+
+
+
+ Gets or sets the design axes vector to follow.
+
+
+ The design axes vector to follow.
+
+
+
+
+ Gets or sets the design vector value.
+
+
+ The design vector value.
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ The type tool information. For PSD version higher or equal to the 6.0.
+
+
+
+
+ The type tool info key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The class ID.
+ The warp class ID.
+
+
+
+ Saves the resource to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the warp items.
+
+
+ The warp items.
+
+
+
+
+ Gets or sets the warp class name.
+
+
+ The warp class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets or sets the warp version.
+
+
+ The warp version.
+
+
+
+
+ Gets or sets the warp descriptor version.
+
+
+ The warp descriptor version.
+
+
+
+
+ Gets or sets the type tool version.
+
+
+ The type tool version.
+
+
+
+
+ Gets or sets the left location.
+
+
+ The left location.
+
+
+
+
+ Gets or sets the top location.
+
+
+ The top location.
+
+
+
+
+ Gets or sets the right location.
+
+
+ The right location.
+
+
+
+
+ Gets or sets the bottom location.
+
+
+ The bottom location.
+
+
+
+
+ Gets or sets the transform matrix.
+
+
+ The transform matrix.
+
+
+
+
+ Gets or sets the text version.
+
+
+ The text version.
+
+
+
+
+ Gets or sets the descriptor version.
+
+
+ The descriptor version.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the items.
+
+
+ The items.
+
+
+
+
+ The type tool information. For PSD version lower than 6.0.
+
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets the transform matrix.
+
+
+ The transform matrix.
+
+
+
+
+ Gets or sets the font version.
+
+
+ The font version.
+
+
+
+
+ Gets the fonts count.
+
+
+
+
+ Gets or sets the fonts.
+
+
+ The fonts.
+
+
+
+
+ Gets the styles count.
+
+
+
+
+ Gets or sets the font styles.
+
+
+ The font styles.
+
+
+
+
+ Gets or sets the type value.
+
+
+ The type value.
+
+
+
+
+ Gets or sets the scale factor.
+
+
+ The scale factor.
+
+
+
+
+ Gets or sets the character count.
+
+
+ The character count.
+
+
+
+
+ Gets or sets the horizontal placement.
+
+
+ The horizontal placement.
+
+
+
+
+ Gets or sets the vertical placement.
+
+
+ The vertical placement.
+
+
+
+
+ Gets or sets the selection start.
+
+
+ The selection start.
+
+
+
+
+ Gets or sets the selection end.
+
+
+ The selection end.
+
+
+
+
+ Gets the line count.
+
+
+ The line count.
+
+
+
+
+ Gets or sets the lines.
+
+
+ The lines.
+
+
+
+
+ Gets or sets the color space value.
+
+
+ The color space value.
+
+
+
+
+ Gets or sets the r component.
+
+
+ The r component.
+
+
+
+
+ Gets or sets the g component.
+
+
+ The g component.
+
+
+
+
+ Gets or sets the b component.
+
+
+ The b component.
+
+
+
+
+ Gets or sets a component.
+
+
+ a component.
+
+
+
+
+ The alias structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets the exact data length in bytes.
+
+
+ The data length in bytes.
+
+
+
+
+ Gets or sets the full path.
+
+
+ The full path.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The boolean structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets a boolean value.
+
+
+ A boolean value.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The class structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the key.
+ The class ID.
+ The structure key.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The descriptor structure
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+ The class identifier.
+ Name of the class.
+ The structures.
+ classID is null
+
+
+
+ Gets the header length.
+
+
+ The header length
+
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets or sets the structures.
+
+
+ The structures.
+
+
+
+
+ The double structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets or sets the double value.
+
+
+ The double value.
+
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The enumerated descriptor structure.
+
+
+
+
+ The enumerated descriptor key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+ The type ID.
+ The enum name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the key.
+
+
+
+
+ Gets or sets the type ID.
+
+
+ The type ID.
+
+
+
+
+ Gets or sets the enum name.
+
+
+ The enum name.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ Enumerated reference structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+ The type ID.
+ The enum name.
+ The class ID.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets the key.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The integer structure.
+
+
+
+
+ The integer structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the key.
+
+
+
+
+ Gets or sets an integer value.
+
+
+ An integer value.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The list structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets the items count.
+
+
+
+
+ Gets or sets the types.
+
+
+ The types.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The namespace contains PSD file format type tool resource entities.
+
+
+
+
+ The offset structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+ The class ID.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets or sets the integer value.
+
+
+ The integer value.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The property structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the key.
+ The class ID.
+ The key ID.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the class name.
+
+
+ The class name.
+
+
+
+
+ Gets or sets the class ID.
+
+
+ The class ID.
+
+
+
+
+ Gets or sets the key ID.
+
+
+ The key ID.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The raw data structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the key.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The reference structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the items.
+
+
+ The items.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The string structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the structure to the specified stream container.
+
+ The stream container.
+
+
+
+ Gets the key.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The unit structure.
+
+
+
+
+ Identifies the structure key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets or sets the unit type.
+
+
+ The unit type.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ The unit types.
+
+
+
+
+ Angle unit.
+
+
+
+
+ Density unit.
+
+
+
+
+ Distance unit.
+
+
+
+
+ Undefined unit.
+
+
+
+
+ Percent unit.
+
+
+
+
+ Pixels unit.
+
+
+
+
+ Points unit.
+
+
+
+
+ The unknown structure.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key name.
+ The structure key.
+
+
+
+ Saves the data.
+
+ The stream container.
+
+
+
+ Gets the structure key.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the length in bytes.
+
+
+
+
+ Type tool line info.
+
+
+
+
+ Saves the information to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the char.
+
+
+ The char.
+
+
+
+
+ Type tool style information.
+
+
+
+
+ Saves the information to the specified stream container.
+
+ The stream container to save to.
+ The PSD version.
+
+
+
+ Gets or sets the mark value.
+
+
+ The mark value.
+
+
+
+
+ Gets or sets the face mark value.
+
+
+ The face mark value.
+
+
+
+
+ Gets or sets the size value.
+
+
+ The size value.
+
+
+
+
+ Gets or sets the tracking value.
+
+
+ The tracking value.
+
+
+
+
+ Gets or sets the kerning value.
+
+
+ The kerning value.
+
+
+
+
+ Gets or sets the leading value.
+
+
+ The leading value.
+
+
+
+
+ Gets or sets the base shift value.
+
+
+ The base shift value.
+
+
+
+
+ Gets or sets a value indicating whether auto kerning is on or off.
+
+
+ true if auto kerning is on; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether it is a rotate down style.
+
+
+ true if it is a rotate down style; otherwise, false.
+
+
+
+
+ The unknown resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The signature.
+ The resource key.
+
+
+
+ Saves the specified stream container.
+
+ The stream container.
+ The PSD version.
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets the layer resource signature.
+
+
+
+
+ Gets the layer resource key.
+
+
+
+
+ Gets the layer resource length in bytes.
+
+
+
+
+ Gets the minimal psd version required for layer resource. 0 indicates no restrictions.
+
+
+
+
+ The namespace contains PSD file format layers.
+
+
+
+
+ The namespace contains PSD file format layers.
+
+
+
+
+ The text layer class
+
+
+
+
+ Updates the text.
+
+ The text value.
+
+
+
+ Updates the text.
+
+ The text value.
+ Size of the font.
+
+
+
+ Updates the text.
+
+ The text value.
+ The color value.
+
+
+
+ Updates the text.
+
+ The text value.
+ Size of the font.
+ The color value.
+
+
+
+ Updates the text.
+
+ The text value.
+ The left top coordinate.
+ Size of the font.
+
+
+
+ Updates the text.
+
+ The text value.
+ The left top coordinate.
+ The color value.
+
+
+
+ Updates the text.
+
+ The text value.
+ The left top coordinate.
+
+
+
+ Updates the text.
+
+ The text value.
+ The left top coordinate.
+ Size of the font.
+ The color value.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets the text.
+
+
+ The text.
+
+
+
+
+ Gets the text bound box.
+
+
+ The text bound box.
+
+
+
+
+ Gets the text of the layer
+
+
+ The text.
+
+
+
+
+ Gets the font.
+
+
+ The font.
+
+
+
+
+ Gets the color of the text.
+
+
+ The color of the text.
+
+ Error parsing color component data
+
+
+
+ Engine data parse exception
+
+
+
+
+ The namespace handles Psd file format processing.
+
+
+
+
+ The namespace handles Psd file format processing.
+
+
+
+
+ The namespace handles Psd file format processing.
+
+
+
+
+ The PSD color palette.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+ The transparent color index.
+
+
+
+ Initializes a new instance of the class.
+
+ The raw entries data.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The raw entries data.
+
+
+
+ Initializes a new instance of the class.
+
+ The raw entries data.
+ The transparent color index. Note the index is not the raw entries index instead it is for the converted color array.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The raw entries data.
+ The transparent color index. Note the index is not the raw entries index instead it is for the converted color array.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette 32-bit ARGB entries.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette entries.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The color palette entries.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette entries.
+ The transparent color index.
+ Indicating whether compact it palette.
+
+
+
+ Initializes a new instance of the class and IsCompactPalette is false.
+
+ The color palette entries.
+ The transparent color index.
+
+
+
+ Copies the palette.
+
+ The color palette.
+ Indicating whether compact palette.
+ The newly created and copied palette or null if null palette passed.
+
+
+
+ Copies the palette.
+
+ The color palette.
+ The newly created and copied palette or null if null palette passed.
+
+
+
+ Gets the index of the nearest color.
+
+ The 32-bit ARGB color.
+ The index of the nearest color.
+
+
+
+ Gets the index of the nearest color.
+
+ The color.
+ The index of the nearest color.
+
+
+
+ Gets the 32-bit ARGB palette color by index.
+
+ The 32-bit ARGB palette color index.
+ The color palette entry specified by the .
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the palette color by index.
+
+ The palette color index.
+
+ The color palette entry specified by the .
+
+ if color palette specified is out of the palette entries range.
+
+
+
+ Gets the raw color palette entries count.
+
+ The raw color palette entries count.
+
+
+
+ Gets the entries count.
+
+ The entries count.
+
+
+
+ Gets an array of 32-bit ARGB colors.
+
+ The entries.
+
+ The array of 32-bit ARGB structure that make up this .
+
+
+
+
+ Gets an array of structures.
+
+ The entries.
+
+ The array of structure that make up this .
+
+
+
+
+ Gets the index of the transparent color.
+
+ The index of the transparent color.
+
+
+
+ Gets a value indicating whether transparent color exists.
+
+
+ true if transparent color exists; otherwise, false.
+
+
+
+
+ Gets the transparent color.
+
+ The transparent color.
+
+
+
+ Gets the raw color palette entries data.
+
+ The raw color palette entries data.
+
+
+
+ Gets a value indicating whether compact it palette.
+
+
+ true if compact it palette; otherwise, false.
+
+ Compact palette means that image will contain only the specified palette entries if possible or in other words the image will be more compact and occupy less space;
+ otherwise there will be 2^BitsPerPixel entries and image will reserve more space for all possible palette entries.
+ Setting this value to true and changing palette entries may cause performance penalty since data movement may occur so use it carefully.
+
+
+
+
+ A PSD image.
+
+
+
+
+ The default PSD version.
+
+
+
+
+ Initializes a new instance of the class from specified path from raster image (not psd image in path). Used to initialize psd image with default parameters - Color mode - rgb, 4 channels, 8 bit per channel, Compression - Raw.
+
+ The path to load pixel and palette data from and initialize with.
+
+
+
+ Initializes a new instance of the class from specified path from raster image (not psd image in path) with constructor parameters.
+
+ The path to load pixel and palette data from and initialize with.
+ The color mode.
+ The PSD bit depth per channel.
+ The PSD channels count.
+ The PSD version.
+ The compression to use.
+
+
+
+ Initializes a new instance of the class from specified path from raster image (not psd image in stream). Used to initialize psd image with default parameters - Color mode - rgb, 4 channels, 8 bit per channel, Compression - Raw.
+
+ The stream to load pixel and palette data from and initialize with.
+
+
+
+ Initializes a new instance of the class from specified path from raster image (not psd image in stream) with constructor parameters.
+
+ The stream to load pixel and palette data from and initialize with.
+ The color mode.
+ The PSD bit depth per channel.
+ The PSD channels count.
+ The PSD version.
+ The compression to use.
+
+
+
+ Initializes a new instance of the class from existing raster image (not psd image) with RGB color mode with 4 channels 8 bit/channel and no compression.
+
+ The image to load pixel and palette data from and initialize with.
+
+
+
+ Initializes a new instance of the class from existing raster image (not psd image) with constructor parameters.
+
+ The image to load pixel and palette data from and initialize with.
+ The color mode.
+ The PSD bit depth per channel.
+ The PSD channels count.
+ The PSD version.
+ The compression to use.
+
+
+
+ Initializes a new instance of the class with specified width and height. Used to initialize empty psd image.
+
+ The image width.
+ The image height.
+
+
+
+ Initializes a new instance of the class with specified width,height, paletter, color mode, channels count and channels bit-length and specified compression mode parameters. Used to initialize empty psd image.
+
+ The image width.
+ The image height.
+ The color palette.
+ The color mode.
+ The PSD bit depth per channel.
+ The PSD channels count.
+ The PSD version.
+ The compression to use.
+
+
+
+ Adds the layer.
+
+ The layer.
+
+
+
+ Merges the layers.
+
+ The bottom layer.
+ The top layer.
+ Bottom layer after the merge
+
+
+
+ Flattens all layers.
+
+
+
+
+ Adds a new regular layer.
+
+
+ Created regular layer.
+
+
+
+
+ Adds a new Text layer.
+
+ The layer's text.
+ The layer's rectangle.
+
+ Created text layer.
+
+
+
+
+ Adds the Curves Adjustment layer.
+
+ Created Layer
+
+
+
+ Adds the exposure adjustment layer.
+
+ The exposure.
+ The offset.
+ The gamma correction.
+ Created Exposure Adjustment Layer
+
+
+
+ Adds the hue/saturation adjustment layer.
+
+ A newly created hue/saturation layer.
+
+
+
+ Adds the Levels adjustment layer.
+
+ A newly created Levels layer
+
+
+
+ Adds the photofilter layer.
+
+ The color.
+ Created PhotoFilter Layer
+
+
+
+ Adds the exposure adjustment layer.
+
+ The exposure.
+ The offset.
+ The gamma correction.
+ Created Exposure Adjustment Layer
+
+
+
+ Adds the channel mixer adjustment layer with default parameters
+
+ Added Channel Mixer Layer
+
+
+
+ Adds the brightness/contrast adjustment layer.
+
+ The brightness.
+ The contrast.
+ Created brightness/contrast layer
+
+
+
+ Adds the layer group.
+
+ Name of the group.
+ The index of the layer to insert after.
+ if set to true [start behaviour] than group will be in open state on start up, otherwise in minimized state.
+ Opening group layer
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+ The image resize settings.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+ Type of the resize.
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+ The image resize settings.
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+ Type of the resize.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+ The size of s x s window of pixels centered around this pixel
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Filters the specified rectangle.
+
+ The rectangle.
+ The options.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color ARGB value to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color ARGB value to replace old color with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color ARGB value to replace non transparent colors with.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+ The stream to save the object's data to.
+
+
+
+ Updates the image dimensions.
+
+ The new width.
+ The new height.
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+
+ The vertical resolution.
+
+
+ ResolutionInfo resource not found and can not set proper resolution
+
+ Default value for PSD is 72, so if wasn't found, this value is returned.
+
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+
+ The horizontal resolution.
+
+
+ ResolutionInfo resource not found and can not set proper resolution
+
+ Default value for PSD is 72, so if wasn't found, this value is returned.
+
+
+
+
+ Gets or sets the RGB color profile for CMYK PSD images. Must be in pair with CmykColorProfile for correct color conversion.
+
+
+ The RGB color profile.
+
+
+
+
+ Gets or sets the CMYK color profile for CMYK PSD images. Must be in pair with RgbColorProfile for correct color conversion.
+
+
+ The CMYK color profile.
+
+
+
+
+ The GRAY (monochrome) color profile for Grayscale PSD images.
+
+
+ The GRAY (monochrome) color profile.
+
+
+
+
+ Gets or sets the color mode.
+
+
+ The color mode.
+
+
+
+
+ Gets the compression method.
+
+ The compression.
+
+
+
+ Gets the PSD channels count.
+
+ The PSD channels count.
+
+
+
+ Gets the bits per channel.
+
+ The bits per channel.
+
+
+
+ Gets or sets the PSD image resources.
+
+ The PSD image resources.
+
+
+
+ Gets or sets the version.
+
+ The version.
+
+
+
+ Gets the image width.
+
+ The image width.
+
+
+
+ Gets the image height.
+
+ The image height.
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the PSD layers.
+
+
+ The PSD layers.
+
+ Note that if there are no layers the other related information within layer and mask information section will not be preserved (layer masks, resources and etc).
+
+
+
+ Gets or sets the global layer resources.
+
+
+ The global layer resources.
+
+
+
+
+ Gets the global layer mask info.
+
+
+
+
+ Gets or sets a value indicating whether first alpha channel contains the transparency data for the merged result when specifying layers data.
+
+
+ true if first alpha channel contains the transparency data for the merged result when specifying layers data; otherwise, false.
+
+
+
+
+ Gets or sets the active layer.
+
+
+ The active layer.
+
+ There is no active layer and no layers in image.
+ The active layer cannot be set as it belongs to another image.
+
+
+
+ Gets a value indicating whether psd image is flattened.
+
+
+ true if this instance is flatten; otherwise, false.
+
+
+
+
+ Gets the raw data format.
+
+
+ The raw data format.
+
+
+
+
+ The resource block.
+
+
+
+
+ The resource signature.
+
+
+
+
+ Saves the resource block to the specified stream.
+
+ The stream to save the resource block to.
+
+
+
+ Validates the resource values.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Caches the data for subsequent faster retrieval.
+
+
+
+
+ Stops data caching.
+
+
+
+
+ Gets the resource signature. Should be always '8BIM'.
+
+ The resource signature.
+
+
+
+ Gets or sets the unique identifier for the resource.
+
+ The unique identifier for the resource.
+
+
+
+ Gets or sets the resource name. Pascal string, padded to make the size even (a null name consists of two bytes of 0).
+
+ The resource name.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the resource block size in bytes including its data.
+
+ The resource block size.
+
+
+
+ Gets the minimal required PSD version.
+
+ The minimal PSD version.
+
+
+
+ Represents resource block state.
+
+
+
+
+ Typical state.
+
+
+
+
+ Cached state.
+
+
+
+
+ CaptionDigest resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets or sets the digest.
+
+
+ The digest.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Halftoning resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the halftone data.
+
+
+ The halftone data.
+
+
+
+
+ Color transfer resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the color transfer data.
+
+
+ The color transfer data.
+
+
+
+
+ Document Specific Ids resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the identifier.
+
+
+ The identifier.
+
+
+
+
+ Fixed-point decimal, with 16-bit integer and 16-bit fraction.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The integer.
+ The fraction.
+
+
+
+ Initializes a new instance of the class. Split the high and low words of a 32-bit integer into a fixed-point number.
+
+ The value.
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+
+ Converts current fixed point decimal to double.
+
+
+ The converted value.
+
+
+
+
+ Gets or sets the integer.
+
+
+ The integer.
+
+
+
+
+ Gets or sets the fraction.
+
+
+ The fraction.
+
+
+
+
+ Global altitude resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the altitude.
+
+
+ The altitude.
+
+
+
+
+ Global angle resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the global angle.
+
+
+ The global angle.
+
+
+
+
+ Represents the grid and guides resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets or sets the guides.
+
+ The guides.
+
+
+
+ Gets the guide resource blocks count.
+
+ The guide resource blocks count.
+
+
+
+ Gets or sets the header version. This value should be always 1.
+
+ The header version.
+
+
+
+ Gets or sets the horizontal grid cycle. The default is 576.
+
+ The horizontal grid cycle.
+
+
+
+ Gets or sets the vertical grid cycle. The default is 576.
+
+ The vertical grid cycle.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ The guide direction.
+
+
+
+
+ Vertical guide direction.
+
+
+
+
+ Horizontal guide direction.
+
+
+
+
+ The guide resource block.
+
+
+
+
+ The guide resource block size.
+
+
+
+
+ Gets or sets the location of guide in document coordinates.
+
+ The guide location.
+
+
+
+ Gets or sets the direction of guide.
+
+ The direction of guide.
+
+
+
+ Represents the ICC profile resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets or sets the ICC profile.
+
+
+ The ICC profile.
+
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Icc untagged resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the profile.
+
+
+ The profile.
+
+
+
+
+ Layer group information resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the groups.
+
+
+ The groups.
+
+
+
+
+ Layer groups enabled resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the i ds.
+
+
+ The i ds.
+
+
+
+
+ Layer selection ids resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the count.
+
+
+ The count.
+
+
+
+
+ Gets or sets the layer ids.
+
+
+ The layer ids.
+
+
+
+
+ Layer state information resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the index of the layer.
+
+
+ The index of the layer.
+
+
+
+
+ The namespace contains PSD file format resource entities.
+
+
+
+
+ Pixel aspect ration resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets the aspect ratio.
+
+
+ The aspect ratio.
+
+
+
+
+ Print flags resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets the center crop mark.
+
+
+ The center crop mark.
+
+
+
+
+ Gets or sets the width of the bleed.
+
+
+ The width of the bleed.
+
+
+
+
+ Gets or sets the bleed scale.
+
+
+ The bleed scale.
+
+
+
+
+ Print Scale resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the style.
+
+
+ The style.
+
+
+
+
+ Gets or sets the x location.
+
+
+ The x location.
+
+
+
+
+ Gets or sets the y location.
+
+
+ The y location.
+
+
+
+
+ Gets or sets the scale.
+
+
+ The scale.
+
+
+
+
+ Quick mask information resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the channel identifier.
+
+
+ The channel identifier.
+
+
+
+
+ Gets or sets a value indicating whether this instance is mask empty.
+
+
+ true if this instance is mask empty; otherwise, false.
+
+
+
+
+ The namespace handles Psd resources resolution units
+
+
+
+
+ The resoulutionInfo physical unit enum
+
+
+
+
+ The inches
+
+
+
+
+ The centimeters
+
+
+
+
+ The points
+
+
+
+
+ The picas unit
+
+
+
+
+ The columns
+
+
+
+
+ The resolution info resolution unit
+
+
+
+
+ The pixels per inch
+
+
+
+
+ The pixels per cm
+
+
+
+
+ The resolution info resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Horizontal DPI.
+
+
+ The horizontal dpi.
+
+
+
+
+ Vertical DPI.
+
+
+ The vertical dpi.
+
+
+
+
+ Display units for horizontal resolution. This only affects the
+ user interface; the resolution is still stored in the PSD file
+ as pixels/inch.
+
+
+ The horizontal resolution display unit.
+
+
+
+
+ Display units for vertical resolution.
+
+
+ The vertical resolution display unit.
+
+
+
+
+ Gets or sets the width display unit.
+
+
+ The width display unit.
+
+
+
+
+ Gets or sets the height display unit.
+
+
+ The height display unit.
+
+
+
+
+ Represents the thumbnail resource for psd 4.0.
+
+
+
+
+ The thumbnail resource block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Validates the resource values.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Caches the data for subsequent faster retrieval.
+
+
+
+
+ Stops data caching.
+
+
+
+
+ Saves the common data.
+
+ The stream container.
+
+
+
+ Gets or sets the JPEG options. Suitable when thumbnail resource is saved into JPEG file format only. This option has no effect when RAW format is defined.
+
+
+ The JPEG options.
+
+
+
+
+ Gets or sets the thumbnail data format.
+
+ The thumbnail data format.
+
+
+
+ Gets or sets the width of thumbnail in pixels.
+
+ The thumbnail width.
+
+
+
+ Gets or sets the height of thumbnail in pixels.
+
+ The thumbnail height.
+
+
+
+ Gets the row width in bytes.
+
+ The row width in bytes.
+
+
+
+ Gets the total data size.
+
+ The total data size.
+
+
+
+ Gets or sets the size after compression. Used for consistency check.
+
+ The size after compression.
+
+
+
+ Gets or sets the bits pixel.
+
+ The thumbnail bits pixel.
+
+
+
+ Gets or sets the planes count.
+
+ The thumbnail planes count.
+
+
+
+ Gets or sets the 32-bit ARGB thumbnail data.
+
+ The 32-bit ARGB thumbnail data.
+
+
+
+ Gets or sets the thumbnail data.
+
+ The thumbnail data.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Specifies thumbnail data format.
+
+
+
+
+ Raw RGB format.
+
+
+
+
+ Compressed Jpeg format.
+
+
+
+
+ The transparency index resource block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Gets or sets the transparency color index.
+
+ The transparency color index.
+
+
+
+ Unicode alpha names resource
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the alpha names.
+
+
+ The alpha names.
+
+
+
+
+ The unknown resource. When a resource block is not recognized then this resource block is created.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data.
+
+ The resource data.
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ Url list resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets or sets the count.
+
+
+ The count.
+
+
+
+
+ Gets or sets the longs.
+
+
+ The longs.
+
+
+
+
+ Gets or sets the ids.
+
+
+ The ids.
+
+
+
+
+ Gets or sets the texts.
+
+
+ The texts.
+
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Version Info resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets the version.
+
+
+ The version.
+
+
+
+
+ Gets or sets a value indicating whether this instance has real merged data.
+
+
+ true if this instance has real merged data; otherwise, false.
+
+
+
+
+ Gets or sets the name of the reader.
+
+
+ The name of the reader.
+
+
+
+
+ Gets or sets the name of the writer.
+
+
+ The name of the writer.
+
+
+
+
+ Gets or sets the file version.
+
+
+ The file version.
+
+
+
+
+ Watermark resource
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Gets the resource data size in bytes.
+
+
+ The resource data size.
+
+
+
+
+ Gets the minimal required PSD version.
+
+
+ The minimal PSD version.
+
+
+
+
+ Gets or sets a value indicating whether this instance is watermark.
+
+
+ true if this instance is watermark; otherwise, false.
+
+
+
+
+ Represents the XMP metadata resource.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the resource block data.
+
+ The stream container to save to.
+
+
+
+ Get or set XMP data container
+
+
+
+
+ Gets the resource data size in bytes.
+
+ The resource data size.
+
+
+
+ Gets the minimal required psd version.
+
+ The minimal psd version.
+
+
+
+ The namespace contains different file format load options.
+
+
+
+
+ Psd load options
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a value indicating whether [load effects resource] (by default resource is not loaded). When set this option only supported effects will be rendered to final merged image.
+
+
+ true if [load effects resource]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [use disk for load effects resource] (by default used disk to load effects resource, but can be used memory if it is enought by setting this value to false).
+
+
+ true if [use disk for load effects resource]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [use read only mode]. This is read-only mode, supported for identical compatibility with Adobe Photoshop.
+ When this option is set, all changes applied for layers will not be saved to final image. All data is used from ImageData section, so it is identical to Photoshop.
+ By default all loaded images are not identical to Adobe Photoshop compatible.
+
+
+ true if [use photoshop compatibility mode]; otherwise, false.
+
+
+
+
+ Gets or sets the default replacement font (font that will be used to draw text when exporting to raster, if existing layer font in PSD file is not presented in system).
+ To take proper name of default font can be used next code snippet:
+ System.Drawing.Text.InstalledFontCollection col = new System.Drawing.Text.InstalledFontCollection();
+ System.Drawing.FontFamily[] families = col.Families;
+ string defaultFontName = families[0].Name;
+ PsdLoadOptions psdLoadOptions = new PsdLoadOptions() { DefaultReplacementFont = defaultFontName });
+
+
+ The default replacement font.
+
+
+
+
+ Gets or sets a value indicating whether PSD text layer fixed width will be ignored on UpdateText operation execution.
+
+
+ true if [ignore text layer width]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [ignore alpha channel].
+
+
+ true if [ignore alpha channel]; otherwise, false.
+
+
+
+
+ The psd file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options.
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+
+
+
+ Get or set XMP data container
+
+
+
+
+ Gets or sets the psd resources.
+
+ The psd resources.
+
+
+
+ Gets or sets the psd file version.
+
+ The psd file version.
+
+
+
+ Gets or sets the psd compression method.
+
+ The compression method.
+
+
+
+ Gets or sets the file format version. It can be PSD or PSB.
+
+
+ The file format version.
+
+
+
+
+ Gets or sets the psd color mode.
+
+ The color mode.
+
+
+
+ Gets or sets the bits count per color channel.
+
+ The bits count per color channel.
+
+
+
+ Gets or sets the color channels count.
+
+ The color channels count.
+
+
+
+ Gets or sets a value indicating whether - Remove the global text engine resource - Used for some text-layered psd files, in only case, when they can not be opened in Adobe Photoshop after processing (mostly for absent fonts text layers related).
+ After using this option, user need to Make next in opened in Photoshop file: Menu "Text" -> "Process absent fonts". After that operation all text will appear again.
+ Please note, that this operation may cause some final layout changes.
+
+
+ true if [remove global text engine resource]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [refresh image preview data] - option used to maximize compatibility with another PSD image viewers.
+ Please note, text layers drawing to final layout is not supported for Compact Framework platform
+
+
+ true if [refresh image preview data]; otherwise, false.
+
+
+
+
+ Exceptions for Jpeg files
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Represents the JPEG image loading exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The reason of error.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+ The reason of error.
+
+
+
+ Gets or sets the reason of error.
+
+
+ The reason of error.
+
+
+
+
+ Represents the reasons of error.
+
+
+
+
+ The basic error type.
+
+
+
+
+ The not enough data in stream.
+
+
+
+
+ Compression mode for jpeg images.
+
+
+
+
+ The baseline compression.
+
+
+
+
+ The progressive compression.
+
+
+
+
+ The lossless compression.
+
+
+
+
+ The JPEG-LS compression.
+
+
+
+
+ The jfif density units.
+
+
+
+
+ The no units.
+
+
+
+
+ The pixels per inch.
+
+
+
+
+ The pixels per cm.
+
+
+
+
+ The jfif segment.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the density units.
+
+
+
+
+ Gets or sets the thumbnail.
+
+
+
+
+ Gets or sets the version.
+
+
+
+
+ Gets or sets the x density.
+
+
+
+
+ Gets or sets the y density.
+
+
+
+
+ A jpeg image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The path to load image from and initialize pixel and palette data with.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The stream to load image from and initialize pixel and palette data with.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The image to initialize pixel and palette data with.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The image width.
+
+
+ The image height.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The jpeg options.
+
+
+ Image width.
+
+
+ Image height.
+
+
+
+
+ Gets the date and time the resource image was last modified.
+
+ if set to true uses the information from FileInfo as default value.
+
+ The date and time the resource image was last modified.
+
+
+
+
+ Sets the resolution for this .
+
+ The horizontal resolution, in dots per inch, of the .
+ The vertical resolution, in dots per inch, of the .
+
+
+
+ Perform automatic rotate of image depending on orientation data provided by Exif.
+
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Updates the image EXIF metadata.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+
+ The stream to save the object's data to.
+
+
+
+
+ Updates the image dimensions.
+
+
+ The new Width.
+
+
+ The new Height.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets the JPEG options used to create or load this instance.
+
+
+ The JPEG options.
+
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the jpeg file comment.
+
+
+
+
+ Get or set exif data container
+
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets the image height.
+
+ The image height.
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+
+ The horizontal resolution.
+
+
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+
+ Gets or sets the jfif.
+
+
+
+
+ Gets the raw data format.
+
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+
+ The vertical resolution.
+
+
+ Note by default this value is always 72 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+
+ Gets the image width.
+
+ The image width.
+
+
+
+ The RGB color profile for CMYK and YCCK jpeg images. Must be in pair with CMYKColorProfile for correct color conversion.
+
+
+
+
+ The CMYK color profile for CMYK and YCCK jpeg images. Must be in pair with RGBColorProfile for correct color conversion.
+
+
+
+
+ The RGB color profile for CMYK and YCCK jpeg images, used for image saving process. Must be in pair with CMYKColorProfile for correct color conversion.
+
+
+
+
+ The CMYK color profile for CMYK and YCCK jpeg images, used for image saving process. Must be in pair with RGBColorProfile for correct color conversion.
+
+
+
+
+ Gets or sets a value indicating whether embedded color profile is ignored. If embedded color profile is ignored, dafault color profile is used.
+
+
+
+
+ Defines the interleave mode for multi-component (color) pixel data.
+
+
+
+
+ The data is encoded and stored as component for component: RRRGGGBBB.
+
+
+
+
+ The interleave mode is by line. A full line of each component is encoded before moving to the next line.
+
+
+
+
+ The data is encoded and stored by sample. For color images this is the format like RGBRGBRGB.
+
+
+
+
+ Defines the JPEG-LS preset coding parameters as defined in ISO/IEC 14495-1, C.2.4.1.1.
+ JPEG-LS defines a default set of parameters, but custom parameters can be used.
+ When used these parameters are written into the encoded bit stream as they are needed for the decoding process.
+
+
+
+
+ Gets or sets the maximum possible value for any image sample in a scan.
+ This must be greater than or equal to the actual maximum value for the components in a scan.
+
+
+
+
+ Gets or sets the first quantization threshold value for the local gradients.
+
+
+
+
+ Gets or sets the second quantization threshold value for the local gradients.
+
+
+
+
+ Gets or sets the third quantization threshold value for the local gradients.
+
+
+
+
+ Gets or sets the value at which the counters A, B, and N are halved.
+
+
+
+
+ The namespace handles Jpeg file format processing.
+
+
+
+
+ Defines a way in which an n-bit value is converted to an 8-bit value.
+
+
+
+
+ Extrapolate an 8-bit value to fit it into n bits, where 1 < n < 8.
+ The number of all possible 8-bit values is 1 << 8 = 256, from 0 to 255.
+ The number of all possible n-bit values is 1 << n, from 0 to (1 << n) - 1.
+ The most reasonable n-bit value Vn corresponding to some 8-bit value V8 is equal to Vn = V8 >> (8 - n).
+
+
+
+
+ Truncate an 8-bit value to fit it into n bits, where 1 < n < 8.
+ The number of all possible n-bit values is 1 << n, from 0 to (1 << n) - 1.
+ The most reasonable n-bit value Vn corresponding to some 8-bit value V8 is equal to Vn = V8 & ((1 << n) - 1).
+
+
+
+
+ The jpeg file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The JPEG options.
+
+
+
+
+ Gets or sets the default memory allocation limit.
+
+
+ The default memory allocation limit.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the jfif.
+
+
+
+
+ Gets or sets the jpeg file comment.
+
+
+
+
+ Get or set exif data container
+
+
+
+
+ Gets or sets the compression type.
+
+
+
+
+ Gets or sets the color type for jpeg image.
+
+
+
+
+ Gets or sets bits per channel for lossless jpeg image. Now we support from 2 to 8 bits per channel.
+
+
+
+
+ Gets or sets image quality.
+
+
+
+
+ The scaled quality.
+
+
+
+
+ Gets or sets the RD optimizer settings.
+
+
+ The RD optimizer settings.
+
+
+
+
+ The destination RGB color profile for CMYK jpeg images. Use for saving images. Must be in pair with CMYKColorProfile for correct color conversion.
+
+
+
+
+ The destination CMYK color profile for CMYK jpeg images. Use for saving images. Must be in pair with RGBColorProfile for correct color conversion.
+
+
+
+
+ Gets or sets the JPEG-LS difference bound for near-lossless coding (NEAR parameter from the JPEG-LS specification).
+
+
+
+
+ Gets or sets the JPEG-LS interleave mode.
+
+
+
+
+ Gets or sets the JPEG-LS preset parameters.
+
+
+
+
+ Gets or sets the horizontal subsamplings for each component.
+
+
+
+
+ Gets or sets the vertical subsamplings for each component.
+
+
+
+
+ Gets or sets the sample rounding mode to fit an 8-bit value to an n-bit value.
+
+
+
+ Gets or sets a value indicating whether red, green and blue components should be mixed with a background color, if alpha channel is present.
+
+
+
+
+ Gets or sets the resolution unit.
+
+
+
+
+ The bmp image exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Specifies different bitmap compression methods.
+
+
+
+
+ No compression.
+
+
+
+
+ RLE 8-bit/pixel compression. Can be used only with 8-bit/pixel bitmaps.
+
+
+
+
+ RLE 4-bit/pixel compression. Can be used only with 4-bit/pixel bitmaps.
+
+
+
+
+ RGB bit fields. Can be used only with 16 and 32-bit/pixel bitmaps.
+
+
+
+
+ JPEG compression. The bitmap contains a JPEG image.
+
+
+
+
+ PNG compression. The bitmap contains a PNG image.
+
+
+
+
+ RGBA bit fields. Can be used only with 16 and 32-bit/pixel bitmaps.
+
+
+
+
+ Dimensions and color format of DIB.
+ Header name BITMAPCOREHEADER aka OS21XBITMAPHEADER.
+
+
+
+
+ The BITMAPCOREHEADER aka OS21XBITMAPHEADER header size
+
+
+
+
+ The bitmap core header2 size
+
+
+
+
+ The bitmap core header2 size
+
+
+
+
+ The bitmap information header size v3
+
+
+
+
+ The bitmap information header size v2
+
+
+
+
+ The bitmap information header size v3
+
+
+
+
+ The bitmap information header size v4
+
+
+
+
+ The bitmap information header size v5
+
+
+
+
+ Gets or sets size of this structure in bytes.
+
+
+
+
+ Gets or sets bitmap width.
+
+
+
+
+ Gets or sets bitmap height.
+
+
+
+
+ Gets or sets number of planes.
+
+
+
+
+ Gets or sets bits per pixel count.
+
+
+
+
+ Specifies BITMAPINFOHEADER.
+ OS Support: Windows NT, 3.1x or later.
+ Features: Adds 16 bpp and 32 bpp formats. Adds RLE compression.
+
+
+
+
+ Gets or sets bitmap compression.
+
+
+
+
+ Gets or sets specifies bitmap raw data size in bytes.
+
+
+
+
+ Gets or sets horizontal pixels resolution.
+
+
+
+
+ Gets or sets vertical pixels resolution.
+
+
+
+
+ Gets or sets number of palette colors used.
+
+
+
+
+ Gets or sets number of important palette colors.
+
+
+
+
+ Gets or sets the extra bit masks.
+ Present only in case the DIB header is the BITMAPINFOHEADER and the is set to either BitmapCompression.Bitfields (RGB) or BitmapCompression.AlphaBitfields (RGBA).
+
+
+
+
+ The BitmapV4Header structure is the bitmap information header file. It is an extended version of the BITMAPINFOHEADER structure.
+ The BitmapV4Header structure is extended to allow a JPEG or PNG image to be passed as the source image to StretchDIBits.
+
+
+
+ Gets or sets the color mask that specifies the red component of each pixel, valid only if bV4Compression is set to BI_BITFIELDS.
+
+
+
+
+ Gets or sets the color mask that specifies the green component of each pixel, valid only if bV4Compression is set to BI_BITFIELDS.
+
+
+
+
+ Gets or sets the color mask that specifies the blue component of each pixel, valid only if bV4Compression is set to BI_BITFIELDS.
+
+
+
+
+ Gets or sets the color mask that specifies the alpha component of each pixel.
+
+
+
+
+ Gets or sets the color space of the DIB.
+
+
+
+
+ Gets or sets the CoordinatesTriple class.
+
+
+ The endpoints.
+
+
+
+
+ Gets or sets the gamma red.
+
+
+ The gamma red.
+
+
+
+
+ Gets or sets the gamma green.
+
+
+ The gamma green.
+
+
+
+
+ Gets or sets the gamma blue.
+
+
+ The gamma blue.
+
+
+
+
+ The BitmapV5Header structure is the bitmap information header file. It is an extended version of the BITMAPINFOHEADER structure.
+ If bV5Height is negative, indicating a top-down DIB, bV5Compression must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed.
+ The Independent Color Management interface (ICM) 2.0 allows International Color Consortium (ICC) color profiles to be linked or embedded in DIBs (DIBs).
+ See Using Structures for more information. When a DIB is loaded into memory, the profile data (if present) should follow the color table,
+ and the bV5ProfileData should provide the offset of the profile data from the beginning of the BITMAPV5HEADER structure.
+ The value stored in bV5ProfileData will be different from the value returned by the sizeof operator given the BITMAPV5HEADER argument,
+ because bV5ProfileData is the offset in bytes from the beginning of the BITMAPV5HEADER structure to the start of the profile data.
+ (Bitmap bits do not follow the color table in memory). Applications should modify the bV5ProfileData member after loading the DIB into memory.
+ For packed DIBs, the profile data should follow the bitmap bits similar to the file format.
+ The bV5ProfileData member should still give the offset of the profile data from the beginning of the BITMAPV5HEADER.
+ Applications should access the profile data only when bV5Size equals the size of the BITMAPV5HEADER and bV5CSType equals PROFILE_EMBEDDED or PROFILE_LINKED.
+
+
+
+ Gets or sets the rendering intent for bitmap.
+
+
+ The intent.
+
+
+
+
+ Gets or sets the profile data.
+
+
+ The profile data.
+
+
+
+
+ Gets or sets the size of the profile.
+
+
+ The size of the profile.
+
+
+
+
+ Gets or sets the reserved member.
+
+
+ The reserved value.
+
+
+
+
+ A bmp image (supports BMP, DIB formats).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load image from and initialize pixel and palette data with.
+ raster image is null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load image from and initialize pixel and palette data with.
+ The bits per pixel.
+ The compression to use.
+ The horizontal resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The vertical resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The raster image cannot be null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load image from and initialize pixel and palette data with.
+ The raster image cannot be null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load image from and initialize pixel and palette data with.
+ The bits per pixel.
+ The compression to use.
+ The horizontal resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The vertical resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The raster image cannot be null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize pixel and palette data with.
+ The raster image cannot be null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize pixel and palette data with.
+ The bits per pixel.
+ The compression to use.
+ The horizontal resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The vertical resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The raster image cannot be null;rasterImage
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The image width.
+ The image height.
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The image width.
+ The image height.
+ The bits per pixel.
+ The color palette.
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Initializes a new instance of the class.
+
+ The image width.
+ The image height.
+ The bits per pixel.
+ The color palette.
+ The compression to use.
+ The horizontal resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The vertical resolution. Note due to the rounding the resulting resolution may slightly differ from the passed.
+ The height should be positive.
+ Palette should be specified for images with 8 bits per pixel or less.;palette
+
+
+
+ Sets the resolution for this .
+
+ The horizontal resolution, in dots per inch, of the .
+ The vertical resolution, in dots per inch, of the .
+
+
+
+ Gets the default options.
+
+ The arguments.
+ Default options
+
+
+
+ Converts raster image to the bitmap.
+
+ The bitmap
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+ The stream to save the object's data to.
+
+
+
+ Updates the image dimensions.
+
+ The new width.
+ The new height.
+
+
+
+ Called when palette is changing.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets the bitmap information header.
+
+
+ The bitmap information header.
+
+
+
+
+ Gets the raw data format.
+
+
+ The raw data format.
+
+
+
+
+ Gets the raw line size in bytes.
+
+
+ The raw line size in bytes.
+
+
+
+
+ Gets the image compression.
+
+
+ The image compression.
+
+
+
+
+ Gets the image width.
+
+ The image width.
+
+
+
+ Gets the image height.
+
+ The image height.
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+ The horizontal resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+ The vertical resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ The namespace handles Bmp file format processing.
+
+
+
+
+ The namespace handles Bmp file format processing.
+
+
+
+
+ An OS/2 2.x OS22XBITMAPHEADER aka BITMAPCOREHEADER2.
+
+
+
+
+ Gets the units.
+
+
+ Type of units used to measure resolution
+
+
+
+
+ Gets the reserved.
+
+
+ Pad structure to 4-byte boundary
+
+
+
+
+ Gets the recording.
+
+
+ Recording algorithm
+
+
+
+
+ Gets the rendering.
+
+
+ Halftoning algorithm used
+
+
+
+
+ Gets the size1.
+
+
+ Reserved for halftoning algorithm use
+
+
+
+
+ Gets the size2.
+
+
+ Reserved for halftoning algorithm use
+
+
+
+
+ Gets the color encoding.
+
+
+ Color model used in bitmap
+
+
+
+
+ Gets the identifier.
+
+
+ Reserved for application use
+
+
+
+
+ The class contains the x,y, and z coordinates of a specific color in a specified color space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array bytes.
+
+
+
+ Gets or sets the coordinates x.
+
+
+ The coordinates x.
+
+
+
+
+ Gets or sets the coordinates y.
+
+
+ The coordinates y.
+
+
+
+
+ Gets or sets the coordinates z.
+
+
+ The coordinates z.
+
+
+
+
+ The class contains the x,y, and z coordinates of the three colors that correspond to the red, green, and blue endpoints for a specified logical color space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bytes.
+
+
+
+ Gets the xyz coordinates of red endpoint.
+
+
+ The xyz coordinates of red endpoint.
+
+
+
+
+ Gets the xyz coordinates of green endpoint.
+
+
+ The xyz coordinates of green endpoint.
+
+
+
+
+ Gets the xyz coordinates of blue endpoint.
+
+
+ The xyz coordinates of blue endpoint.
+
+
+
+
+ The logical structures, used to support bitmap header.
+
+
+
+
+ The bmp file format creation options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The BMP options.
+
+
+
+ Gets or sets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Exceptions for Jpeg files
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Represents JPEG2000 image type
+
+
+
+
+ The j2k codec format
+
+
+
+
+ The JP2 codec format
+
+
+
+
+ The JPT codec format (Not supported)
+
+
+
+
+ Jpeg2000 library main class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load image from and initialize pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load image from and initialize pixel and palette data with
+ The bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load image from and initialize pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load image from and initialize pixel and palette data with.
+ The bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The image width
+ The image height
+
+
+
+ Initializes a new instance of the class.
+
+ The image width
+ The image height
+ The options.
+
+
+
+ Initializes a new instance of the class.
+
+ The image width
+ The image height
+ The bits count.
+
+
+
+ Initializes a new instance of the class.
+
+ The image.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize pixel and palette data with.
+ The bits per pixel.
+
+
+
+ Updates the image dimension
+
+ new width value
+ new height value
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Saves the object's data to the specified stream
+
+ The stream to save the object's data to
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets the raw data format.
+
+
+ The raw data format.
+
+
+
+
+ Gets the raw line size in bytes.
+
+
+ The raw line size in bytes.
+
+
+
+
+ Gets the image width
+
+
+
+
+ Gets the image height
+
+
+
+
+ Gets image depth (bits per pixel)
+
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+
+ The horizontal resolution.
+
+
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+
+ The vertical resolution.
+
+
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+
+ Gets or sets the comments.
+
+
+ The comments.
+
+
+
+
+ Gets the codec.
+
+
+ The codec.
+
+
+
+
+ The namespace handles Jpeg2000 file format processing.
+
+
+
+
+ Jpeg2000 OpenJpeg code generated exception
+
+
+
+
+ The Jpeg2000 file format options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Jpeg2000 file format options to copy settings from.
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the Jpeg comment markers.
+
+
+ The Jpeg comment markers.
+
+
+
+
+ Gets or sets the JPEG2000 codec
+
+
+ The JPEG2000 codec
+
+
+
+
+ Gets or sets the Array of compression ratio.
+ Different compression ratios for successive layers.
+ The rate specified for each quality level is the desired
+ compression factor.
+ Decreasing ratios required.
+
+
+ The compression ratios.
+
+
+
+
+ Gets or sets a value indicating whether use the irreversible DWT 9-7 (true) or use lossless DWT 5-3 compression (default).
+
+
+
+
+ The namespace contains exceptions thrown by one of the file formats supported.
+
+
+
+
+ The png image exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The message.
+
+
+ The inner exception.
+
+
+
+
+ The namespace handles Png file format processing.
+
+
+
+
+ Represents the PNG image color type.
+
+
+
+
+ Represents the color type where each pixel is a greyscale sample.
+
+
+
+
+ Represents the color type where each pixel is an R,G,B triple.
+
+
+
+
+ Represents the color type where each pixel is a palette index; a PLTE chunk shall appear.
+
+
+
+
+ Represents the color type where each pixel is a greyscale sample followed by an alpha sample.
+
+
+
+
+ Represents the color type where each pixel is an R,G,B triple followed by an alpha sample.
+
+
+
+
+ The png filter type.
+
+
+
+
+ The null-filter, means no filtering for image data rows.
+
+
+
+
+ The sub filter, means substractive filtering will be applied to image data.
+
+
+
+
+ The up filter, means row-by-row substraction filter will be applied.
+
+
+
+
+ The avg filter, means, that average filter will be applied to image data.
+
+
+
+
+ The paeth predictor filter.
+
+
+
+
+ Adaptive filtering, means that saving process will choose most sutable filter for each data row. Best compression, slowest execution time.
+
+
+
+
+ The new png image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The width.
+
+
+ The height.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The path to load an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The raster image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The path to load an image.
+
+
+ The color type.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The raster image.
+
+
+ The color type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The stream to load an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The width.
+
+
+ The height.
+
+
+ The color type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The png options.
+
+
+ The width.
+
+
+ The height.
+
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Gets the date and time the resource image was last modified.
+
+ if set to true uses the information from FileInfo as default value.
+
+ The date and time the resource image was last modified.
+
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets the default options.
+
+ The arguments.
+ Default options
+
+
+
+ Gets the options based on the original file settings.
+ This can be helpful to keep bit-depth and other parameters of the original image unchanged.
+ For example, if we load a black-white PNG image with 1 bit per pixel and then save it using the
+ method, the output PNG image with 8-bit per pixel will be produced.
+ To avoid it and save PNG image with 1-bit per pixel, use this method to get corresponding saving options and pass them
+ to the method as the second parameter.
+
+ The options based on the original file settings.
+
+
+
+ Updates the image last modification date and time.
+
+
+
+
+ The save data.
+
+
+ The stream.
+
+
+
+
+ The update dimensions.
+
+
+ The new width.
+
+
+ The new height.
+
+
+
+
+ Gets the bits per pixel.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets or sets the horizontal resolution.
+
+
+
+
+ Gets the raw data format.
+
+
+
+
+ Gets or sets the vertical resolution.
+
+
+
+
+ Gets the width.
+
+
+
+
+ Gets a value indicating whether image has transparent color.
+
+
+
+
+ Get a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets the transparent color.
+
+
+
+
+ Gets a value indicating whether has background color.
+
+
+
+
+ Gets the background color.
+
+
+
+
+ Gets a value indicating whether this is interlaced.
+
+
+ true if interlaced; otherwise, false.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ The namespace contains different file format load options.
+
+
+
+
+ The png load options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a value indicating whether [strict mode].
+
+
+ true if [strict mode]; otherwise, false.
+
+
+
+
+ The png file format create options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The PNG options.
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets the type of the color.
+
+
+ The type of the color.
+
+
+
+
+ Gets or sets a value indicating whether this is progressive.
+
+
+ true if progressive; otherwise, false.
+
+
+
+
+ Gets or sets the filter type used during png file save process.
+
+
+
+
+ The png image compression level in the 0-9 range, where 9 is maximum compression and 0 is store mode.
+
+
+
+
+ The bit depth.
+
+
+
+
+ The Gif image exception.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+ The inner exception.
+
+
+
+ Gif application extension block.
+
+
+
+
+ The default gif block implementation.
+
+
+
+
+ Represents GIF block interface.
+
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Extension introducer.
+
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets a value indicating whether block has changed and requires save.
+
+
+ true if block has changed; otherwise, false.
+
+
+
+
+ Specifies the block header size.
+
+
+
+
+ Extension label.
+
+
+
+
+ Extension name + version block size
+
+
+
+
+ Specifies the application identifier size.
+
+
+
+
+ Specifies the application authentication code size.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The application identifier.
+ The application authentication code.
+ The application data.
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets the application authentication code.
+
+
+ The application authentication code.
+
+
+
+
+ Gets or sets the application identifier.
+
+
+ The application identifier.
+
+
+
+
+ Gets or sets the application data.
+
+
+ The application data.
+
+
+
+
+ Gif comment block.
+
+
+
+
+ Gif comment block extension label.
+
+
+
+
+ Defines the block header size.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The comment.
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets the comment. Note that comment must use ASCII encoding and will be stored accordingly.
+
+
+ The comment.
+
+
+
+
+ Gif frame block.
+
+
+
+
+ Block extension label.
+
+
+
+
+ The image descriptor size.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image width.
+ The image height.
+
+
+
+ Initializes a new instance of the class.
+
+ The left image position.
+ The top image position.
+ The image width.
+ The image height.
+
+
+
+ Initializes a new instance of the class.
+
+ The left image position.
+ The top image position.
+ The image Width.
+ The image Height.
+ The color palette.
+ if set to true the color palette is sorted.
+ if set to true the GIF frame is interlaced.
+ The bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+ if set to true the color palette is sorted.
+ if set to true the GIF frame is interlaced.
+ The bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load an image from and initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load an image from and initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load an image from and initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+ if set to true the color palette is sorted.
+ if set to true the GIF frame is interlaced.
+ The bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load an image from and initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load an image from and initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load an image from and initialize frame pixel and palette data with.
+ The left image position.
+ The top image position.
+ if set to true the color palette is sorted.
+ if set to true the GIF frame is interlaced.
+ The bits per pixel.
+
+
+
+ Gets the associated color palette.
+
+ The frame palette.
+ The container palette.
+
+ The color palette.
+
+
+
+
+ Creates the flags.
+
+ The color palette.
+ if set to true the colors in color palette are sorted.
+ if set to true the GIF frame image is interlaced.
+ The created flags.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color ARGB value to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color ARGB value to replace old color with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color ARGB value to replace non transparent colors with.
+
+
+
+ Does the after save.
+
+ The stream.
+
+
+
+ Saves the object's data to the specified stream.
+
+ The stream to save the object's data to.
+
+
+
+ Updates the image dimensions.
+
+ The new image width.
+ The new image height.
+
+
+
+ Called when palette is changing.
+
+ The old palette.
+ The new palette.
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image bits per pixel count.
+
+
+ The image bits per pixel count.
+
+
+
+
+ Gets or sets a value indicating whether this is interlaced.
+
+
+ true if interlaced; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether color palette is sorted.
+
+
+ true if color palette is sorted; otherwise, false.
+
+
+
+
+ Gets or sets the GIF frame bits per pixel.
+
+
+ The GIF frame bits per pixel.
+
+
+
+
+ Gets or sets the left image location.
+
+
+ The left image location.
+
+
+
+
+ Gets or sets the top image location.
+
+
+ The top image location.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets the graphics control block associated with this block.
+
+
+ The control block.
+
+
+
+
+ Gets a value indicating whether frame block has transparent color.
+
+
+
+
+ Gets the transparent color of frame block.
+
+
+
+
+ Gif graphics control block.
+
+
+
+
+ Specifies the block header size.
+
+
+
+
+ Extension label.
+
+
+
+
+ Gets the sub-block size.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The flags.
+ The delay time expressed in 1/100 seconds.
+ The transparent color index.
+
+
+
+ Initializes a new instance of the class.
+
+ The delay time expressed in 1/100 seconds.
+ if set to true the is valid.
+ The transparent color index.
+ if set to true the user input is expected.
+ The disposal method.
+
+
+
+ Creates the flags.
+
+ if set to true the has valid transparent color index.
+ if set to true the user input is expected.
+ The disposal method.
+ The generated flags.
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets the frame delay time expressed in 1/100 seconds.
+
+
+
+
+ Gets or sets the flags.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the transparent color index.
+
+
+ The transparent color index.
+
+
+
+
+ Gets or sets the disposal method.
+
+
+ The disposal method.
+
+
+
+
+ Gets or sets a value indicating whether user input is expected.
+
+
+ true if user input is expected; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether graphics control block has transparent color.
+
+
+ true if graphics control block has transparent color; otherwise, false.
+
+
+
+
+ Gif plain text extension block. The plain text extension contains textual data and the
+ parameters necessary to render that data as a graphic, in a simple form.
+
+
+
+
+ The plain text extension label.
+
+
+
+
+ The overall block size.
+
+
+
+
+ The size of the sub block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The text grid left position.
+ The text grid top position.
+ The text grid width.
+ The text grid height.
+ The character cell width.
+ The character cell height.
+ The foreground color index.
+ The background color index.
+ The plain text data.
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets the index of the color in the global color palette used to draw the text foreground.
+
+
+ The foreground color index.
+
+
+
+
+ Gets or sets the index of the color in the global color palette used to draw the text background.
+
+
+ The background color index.
+
+
+
+
+ Gets or sets the character cell width, in pixels, of each cell in the grid.
+
+
+ The character cell width.
+
+
+
+
+ Gets or sets the character cell height, in pixels, of each cell in the grid.
+
+
+ The character cell height.
+
+
+
+
+ Gets or sets the text grid left position.
+
+
+ The text grid left position.
+
+ This is a column number, in pixels, of the left edge of the text grid, with respect to the left edge of the logical screen.
+
+
+
+ Gets or sets the text grid top position.
+
+
+ The text grid top position.
+
+ This is a row number, in pixels, of the top edge of the text grid, with respect to the top edge of the logical screen.
+
+
+
+ Gets or sets the text grid with in pixels
+
+
+ The text grid width in pixels.
+
+
+
+
+ Gets or sets the text grid height in pixels
+
+
+ The text grid height in pixels.
+
+
+
+
+ Gets or sets the plain text data.
+
+
+ The plain text data.
+
+
+
+
+ Gif Unknown Extension Block.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The extension label.
+ The block data.
+
+
+
+ Saves the block to the specified stream.
+
+ The stream to save data to.
+
+
+
+ Gets or sets the block's extension label.
+
+
+ The block's extension label.
+
+
+
+
+ Gets or sets the unknown data.
+
+
+ The unknown data.
+
+
+
+
+ The namespace contains Gif file format entities.
+
+
+
+
+ Indicates the way in which the graphic is to be treated after being displayed.
+
+
+
+
+ No disposal specified.
+
+
+
+
+ Do not dispose. The graphic is to be left in place.
+
+
+
+
+ Restore to background color. The area used by the graphic must be restored to the background color.
+
+
+
+
+ Restore to previous. The decoder is required to restore the area overwritten by the graphic with what was there prior to rendering the graphic.
+
+
+
+
+ Undefined value.
+
+
+
+
+ Represents the gif blocks openers registry.
+
+
+
+
+ Gets the first supported descriptor by its type name.
+
+ The descriptor type name.
+ The first found opener descriptor or null if not such descriptor is found.
+ The first opener descriptor will be actually the last registered.
+
+
+
+ Gets the first supported opener descriptor.
+
+ The stream.
+ The gif block opener descriptor or null if no opener descriptor supported for such stream.
+ The first opener will be actually the last registered.
+
+
+
+ Loads gif block using first found opener suitable for the specified .
+
+ The stream.
+ The container palette.
+
+ The loaded gif block or null if no opener is found.
+
+
+ The first opener will be actually the last registered.
+
+
+
+
+ Registers the opener.
+
+ The opener descriptor to register.
+
+
+
+ Unregisters the opener.
+
+ The opener descriptor to unregister.
+
+
+
+ Gets the registered descriptors.
+
+ The registered descriptors.
+
+
+
+ A gif image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The first frame to initialize gif image with.
+ The global palette to use. Note if both and are null then default global palette is used.
+ The frame cannot be null;firstFrame
+ The first frame already belongs to some other image. Check the Container property.;firstFrame
+ The palette specified should contain entries count equal to power of 2. Minimal palette size is 2, maximal is 256.
+
+
+
+ Initializes a new instance of the class.
+
+ The first frame to initialize gif image with.
+ The frame cannot be null;firstFrame
+ The first frame already belongs to some other image. Check the Container property.;firstFrame
+ The palette specified should contain entries count equal to power of 2. Minimal palette size is 2, maximal is 256.
+
+
+
+ Initializes a new instance of the class.
+
+ The first frame to initialize gif image with.
+ The global palette to use. Note if both and are null then default global palette is used.
+ if set to true the palette is sorted. Note the parameter is used when is not null.
+ The palette color resolution. Note the parameter is used when is not null.
+ The palette background color index.
+ The aspect ratio.
+ if set to true the gif image has trailer otherwise no trailer written at the end of the stream.
+ The frame cannot be null;firstFrame
+ The first frame already belongs to some other image. Check the Container property.;firstFrame
+ The palette specified should contain entries count equal to power of 2. Minimal palette size is 2, maximal is 256.
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Rotates the flip all frames in the image.
+
+
+ The rotate flip type to perform.
+
+
+
+
+ Orders the GIF blocks according to the GIF specification. Some may be removed for proper GIF layout.
+
+
+
+
+ Clears all the GIF blocks.
+
+
+
+
+ Adds a new GIF block.
+
+ The zero-based element, at which block will be inserted.
+ The GIF block to add.
+
+
+
+ Adds a new GIF block.
+
+ The GIF block to add.
+
+
+
+ Removes the GIF block.
+
+ The block to remove.
+ Note: do not forget to Dispose the block if you will not add it to some other GifImage.
+
+
+
+ Rotates, flips, or rotates and flips the image.
+
+ The rotate flip type.
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Normalizes the angle.
+ This method is applicable to scanned text documents to get rid of the skewed scan.
+ This method uses and methods.
+
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Resizes the image with extended options.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+ newWidth;The new width should be positive number and at least 1.
+ or
+ newHeight;The new height should be positive number and at least 1.
+
+
+
+
+ Performs proportional resize on the image.
+ The proportional resize will resize each frame according to the ratio of /width and /height.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Filters the specified rectangle.
+
+ The rectangle.
+ The options.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color ARGB value to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color ARGB value to replace old color with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color ARGB value to replace non transparent colors with.
+
+
+
+ Gets value indicating whether use recursion for synchronization.
+
+ Operation context
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+ true if use recursion for synchronization; otherwise, false.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+ The stream to save the object's data to.
+
+
+
+ Saves the pixels.
+
+ The pixels rectangle.
+ The pixels to save.
+
+
+
+ Called when palette is changing.
+
+ The old palette.
+ The new palette.
+
+
+
+ Called when palette is changed.
+
+ The old palette.
+ The new palette.
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets or sets the XMP metadata.
+
+
+ The XMP metadata.
+
+
+
+
+ Gets or sets a value indicating whether GIF has trailer.
+
+
+ true if GIF has trailer; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether palette is sorted.
+
+
+ true if palette is sorted; otherwise, false.
+
+
+
+
+ Gets or sets the palette color resolution bits.
+
+
+ The palette color resolution bits.
+
+
+
+
+ Gets the object width.
+
+ The object width.
+
+
+
+ Gets the object height.
+
+ The object height.
+
+
+
+ Gets the bits per pixel count.
+
+ The bits per pixel count.
+ For GIF this value is calculated from active frame.
+
+
+
+ Gets the GIF blocks.
+
+
+
+
+ Gets or sets the active frame.
+
+
+ The active frame.
+
+
+
+
+ Gets or sets the background color.
+
+
+ The background color.
+
+
+
+
+ Gets or sets the background color index.
+
+
+ The background color index.
+
+
+
+
+ Gets or sets the pixel aspect ratio.
+
+
+ The pixel aspect ratio.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data reading is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets a value indicating whether active frame has transparent color.
+
+
+
+
+ Gets active frame transparent color.
+
+
+
+
+ Gets a value indicating whether image has background color.
+
+
+
+
+ Gets opacity of this image (active frame).
+
+
+ The opacity value between 0.0 (fully transparent) and 1.0 (fully opaque).
+
+
+
+
+ Gif block Loader descriptor.
+
+
+
+
+ Determines whether loader can load the specified data.
+
+ The stream container to load data from.
+
+ true loader can load the specified data; otherwise, false.
+
+
+
+
+ Loads the gif block.
+
+ The stream container.
+ The container palette.
+
+ A new gif block.
+
+
+
+
+ The namespace handles Gif file format processing.
+
+
+
+
+ The namespace handles Gif file format processing.
+
+
+
+
+ The gif file format creation options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The GIF Options.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets or sets a value indicating whether palette correction is applied.
+
+
+ true if palette correction is applied; otherwise, false.
+
+ Palette correction means that whenever image is exported to GIF the source image colors will be analyzed
+ in order to build the best matching palette (in case image Palette does not exist or not specified in the options).
+ The analyze process takes some time however the output image will have the best matching color palette and result is visually better.
+
+
+
+ Gets or sets the GIF color resolution.
+
+
+ The color resolution.
+
+
+ Color Resolution - Number of bits per primary color available
+ to the original image, minus 1. This value represents the size of
+ the entire palette from which the colors in the graphic were
+ selected, not the number of colors actually used in the graphic.
+ For example, if the value in this field is 3, then the palette of
+ the original image had 4 bits per primary color available to create
+ the image. This value should be set to indicate the richness of
+ the original palette, even if not every color from the whole
+ palette is available on the source machine.
+
+
+
+
+ Gets or sets a value indicating whether palette entries are sorted.
+
+
+ true if palette entries are sorted; otherwise, false.
+
+
+
+
+ Gets or sets the GIF pixel aspect ratio.
+
+
+ The GIF pixel aspect ratio.
+
+
+ Pixel Aspect Ratio - Factor used to compute an approximation
+ of the aspect ratio of the pixel in the original image. If the
+ value of the field is not 0, this approximation of the aspect ratio
+ is computed based on the formula:
+ Aspect Ratio = (Pixel Aspect Ratio + 15) / 64
+ The Pixel Aspect Ratio is defined to be the quotient of the pixel's
+ width over its height. The value range in this field allows
+ specification of the widest pixel of 4:1 to the tallest pixel of
+ 1:4 in increments of 1/64th.
+ Values :
+ 0 - No aspect ratio information is given.
+ 1..255 - Value used in the computation.
+
+
+
+ Gets or sets the GIF background color index.
+
+
+ The GIF background color index.
+
+
+
+
+ Gets or sets a value indicating whether GIF has trailer.
+
+
+ true if GIF has trailer; otherwise, false.
+
+
+
+
+ True if image should be interlaced.
+
+
+
+
+ Gets or sets the maximum allowed pixel difference. If greater than zero, lossy compression will be used.
+ Recommended value for optimal lossy compression is 80. 30 is very light compression, 200 is heavy.
+ It works best when only little loss is introduced, and due to limitation of the compression algorithm very high loss levels won't give as much gain.
+ The range of allowed values is [0, 1000].
+
+
+
+
+ The namespace handles Tiff file format processing.
+
+
+
+
+ The namespace handles Tiff file format processing.
+
+
+
+
+ The TIFF Exif image file directory class.
+
+
+ Incapsulates a pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of
+ the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF.
+ See http://www.exiv2.org/tags.html and http://www.awaresystems.be/imaging/tiff/tifftags/exififd.html for more details.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A pointer to the Exif IFD.
+
+ Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily,
+ however, it does not contain image data as in the case of TIFF.
+
+
+
+
+ Gets a value indicating whether this instance has value.
+
+
+ true if this instance has value; otherwise, false.
+
+
+
+
+ Gets or sets the pointer to EXIF IFD.
+
+
+ The pointer to EXIF IFD.
+
+ There is no pointer to EXIF IFD.
+
+
+
+ The tiff frame.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load an image from and initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream to load an image from and initialize frame pixel and palette data with.
+ The options to use for the newly created frame.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load an image from and initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The path to load an image from and initialize frame pixel and palette data with.
+ The options to use for the newly created frame.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize frame pixel and palette data with.
+
+
+
+ Initializes a new instance of the class.
+
+ The image to initialize frame pixel and palette data with.
+ The options to use for the newly created frame.
+
+
+
+ Initializes a new instance of the class.
+
+ The frame options.
+ The width.
+ The height.
+ Options parameter is null.
+
+
+
+ Helper method to make horizontal and vertical resolutions equal.
+
+
+
+
+ Copies the entire frame (duplicates).
+
+
+ The tiff frame to copy.
+
+
+ The newly copied tiff frame.
+
+
+
+
+ Creates the frame from specified using the specified .
+ The pixel data is preserved but converted to the desired format.
+
+
+ The tiff frame to create from.
+
+
+ The new options to use.
+
+
+ The newly created frame.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Saves the object's data to the specified stream.
+
+
+ The stream to save the object's data to.
+
+
+
+
+ Updates the image dimensions.
+
+ The new width.
+ The new height.
+
+
+
+ Gets or sets a value for the background color.
+
+
+
+
+ Gets a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets a value indicating whether image has transparent color.
+
+
+
+
+ Gets or sets XMP data from frame.
+
+ XMP packet data wrapper
+
+
+
+ Gets the image bits per pixel count.
+
+ The image bits per pixel count.
+
+
+
+ Gets the frame create options.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets or sets EXIF data from frame.
+
+ EXIF data container
+
+
+
+ Gets or sets the horizontal resolution, in pixels per inch, of this .
+
+ The horizontal resolution.
+
+
+
+ Gets or sets the vertical resolution, in pixels per inch, of this .
+
+ The vertical resolution.
+
+
+
+ The tiff image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The tiff frame to initialize image with.
+ Tiff frame cannot be empty.;frame
+
+
+
+ Initializes a new instance of the class.
+
+ The frames.
+ frames
+
+
+
+ Helper method to make horizontal and vertical resolutions equal.
+
+
+
+
+ Performs dithering on the current image.
+
+ The dithering method.
+ The final bits count for dithering.
+ The custom palette for dithering.
+
+
+
+ Sets the resolution for this .
+
+ The horizontal resolution, in dots per inch, of the .
+ The vertical resolution, in dots per inch, of the .
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying .
+
+
+
+
+ Rotates, flips, or rotates and flips the Active frame only.
+
+
+ The rotate flip type.
+
+
+
+
+ Rotates the flip all frames in image.
+
+
+ The rotate flip type.
+
+
+
+
+ Rotate image around the center.
+
+ The rotate angle in degrees. Positive values will rotate clockwise.
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Normalizes the angle.
+ This method is applicable to scanned text documents to get rid of the skewed scan.
+ This method uses and methods.
+
+ if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only internal image contents are rotated.
+ Color of the background.
+
+
+
+ Adds the frame to image
+
+
+ The frame to add.
+
+
+
+
+ Adds the specified image's frames to current frame.
+
+
+ The source image.
+
+
+
+
+ Adds the frames array to image
+
+
+ The frames array to add
+
+
+
+
+ The insert frame.
+
+
+ Index of new frame in list of frames
+
+
+ The frame To Insert.
+
+
+
+
+ Replaces the frame at the specified position.
+
+ The zero based frame position.
+ The frame to replace.
+ The removed frame.
+
+ Note: do not forget to Dispose the frame if you will not add it to some other TiffImage.
+
+
+
+
+ Removes the frame by its index.
+
+ Index of frame to be removed.
+ The removed frame.
+
+ Note: do not forget to Dispose the frame if you will not add it to some other TiffImage.
+
+
+
+
+ Removes the specified frame.
+
+ The frame to remove.
+
+ Note: do not forget to Dispose the frame if you will not add it to some other TiffImage.
+
+
+
+
+ Resizes the image.
+
+
+ The new width.
+
+
+ The new height.
+
+
+ The resize type.
+
+
+
+
+ Resizes the image.
+
+
+ The new width.
+
+
+ The new height.
+
+
+ The resize settings.
+
+
+
+
+ Resizes the width proportionally.
+
+ The new width.
+ Type of the resize.
+
+
+
+ Resizes the height proportionally.
+
+ The new height.
+ Type of the resize.
+
+
+
+ Performs proportional resize on the image.
+ The proportional resize will resize each frame according to the ratio of /width and /height.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+ Cropping the image.
+
+ The rectangle.
+
+
+
+ Transformation of an image to its grayscale representation
+
+
+
+
+ Binarization of an image with predefined threshold
+
+ Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
+
+
+
+ Binarization of an image with Otsu thresholding
+
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+ The size of s x s window of pixels centered around this pixel
+
+
+
+ Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding
+
+ The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
+
+
+
+ Crop image with shifts.
+
+ The left shift.
+ The right shift.
+ The top shift.
+ The bottom shift.
+
+
+
+ Adjust of a brightness for image.
+
+ Brightness value.
+
+
+
+ Image contrasting
+
+ Contrast value (in range [-100; 100])
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red channel coefficient
+ Gamma for green channel coefficient
+ Gamma for blue channel coefficient
+
+
+
+ Gamma-correction of an image.
+
+ Gamma for red, green and blue channels coefficient
+
+
+
+ Filters the specified rectangle.
+
+ The rectangle.
+ The options.
+
+
+
+ Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.
+
+ Old color ARGB value to be replaced.
+ Allowed difference in old color to be able to widen replaced color tone.
+ New color ARGB value to replace old color with.
+
+
+
+ Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges.
+ Note: if you use it on images without transparency, all colors will be replaced with a single one.
+
+ New color ARGB value to replace non transparent colors with.
+
+
+
+ Saves the object's data to the specified stream.
+
+
+ The stream to save the object's data to.
+
+
+
+
+ Releases the managed resources. Make sure no unmanaged resources are released here, since they may have been already released.
+
+
+
+
+ Saves pixels (format specific method).
+
+
+ The rectangle to save pixels to.
+
+
+ The pixels array.
+
+
+
+
+ Gets a value indicating whether this instance has alpha.
+
+
+ true if this instance has alpha; otherwise, false.
+
+
+
+
+ Gets a value indicating whether image has transparent color.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets or sets a value indicating whether components must be premultiplied.
+
+
+ true if components must be premultiplied; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating the tiff byte order.
+
+
+ The tiff byte order.
+
+
+
+
+ Gets the horizontal resolution, in pixels per inch, of this .
+
+ The horizontal resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets the vertical resolution, in pixels per inch, of this .
+
+ The vertical resolution.
+ Note by default this value is always 96 since different platforms cannot return the screen resolution. You may consider using the SetResolution method for updating both resolution values in single call.
+
+
+
+ Gets or sets a value for the background color.
+
+
+
+
+ Gets the image bits per pixel value of current frame.
+
+
+ The image bits per pixel count.
+
+
+
+
+ Gets or sets the active frame.
+
+
+ Active frame.
+
+
+
+
+ Gets Frames array of the image.
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data reading is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+ Gets or sets EXIF data for the active frame.
+
+
+
+
+ Gets opacity of this image (active frame).
+
+
+ The opacity value between 0.0 (fully transparent) and 1.0 (fully opaque).
+
+
+
+
+ Gets or sets XMP data from frame.
+
+ XMP packet data wrapper
+
+
+
+ The tiff file format options.
+ Note that width and height tags will get overwritten on image creation by width and height parameters so there is no need to specify them directly.
+ Note that many options return a default value but that does not mean that this option is set explicitly as a tag value. To verify the tag is present use Tags property or the corresponding IsTagPresent method.
+
+
+ WARNING! never modify tiff options during save since this may cause side effects and hard to find bugs.
+ The following line was specially left commented since it caused incorrect determination of data beginning.
+ The passed options did not contain spp (although the options are not correct in such case but still this scenario causes errors)
+ and the next line caused +spp tag +bpp tag added and when options were written after data completely written they have overwritten
+ the data beginning for uncompressed codec!!! See TiffUncompressedCodec.Encode.
+ this.Options.SamplesPerPixel = 3;
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected tiff file format.
+ The tiff file format byte order to use.
+
+
+
+ Initializes a new instance of the class. By default little endian convention is used.
+
+ The expected tiff file format.
+
+
+
+ Initializes a new instance of the class.
+
+ The options to copy from.
+
+
+
+ Initializes a new instance of the class.
+
+ The tags to initialize options with.
+
+
+
+ Determines whether tag is present in the options or not.
+
+ The tag id to check.
+
+ true if tag is present; otherwise, false.
+
+
+
+
+ Gets the valid tags count.
+
+ The tags to validate.
+ The valid tags count.
+
+
+
+ Removes the tag.
+
+
+ The tag to remove.
+
+
+ true if successfully removed
+
+
+
+
+ Validates if options have valid combination of tags
+
+
+
+
+ Adds the tags.
+
+ The tags to add.
+
+
+
+ Adds a new tag.
+
+ The tag to add.
+
+
+
+ Gets the instance of the tag by type.
+
+ The tag key.
+
+ Instance of the tag if exists or null otherwise.
+
+
+
+
+ Gets or sets the TIFF file standard.
+
+
+ The TIFF file standard.
+
+
+
+
+ Gets or sets the default memory allocation limit.
+
+
+ The default memory allocation limit.
+
+
+
+
+ Gets or sets a value indicating whether components must be premultiplied.
+
+
+ true if components must be premultiplied; otherwise, false.
+
+
+
+
+ Gets or sets the XMP metadata container.
+
+
+ The XMP data container.
+
+
+
+
+ Gets a value indicating whether the have been properly configured. Use Validate method as to find the failure reason.
+
+
+ true if TiffOptions are properly configured; otherwise, false.
+
+
+
+
+ Gets or sets the subsampling factors for YCbCr photometric.
+
+
+ The subsampling factors for YCbCr photometric.
+
+
+ Invalid field length. YCbCrSubsampling field must contain two values.
+
+ value
+
+
+
+ Gets or sets the YCbCrCoefficients.
+
+
+ The YCbCrCoefficients.
+
+
+ Invalid count of rational coefficient values. Must be equal to 3.
+
+ value
+
+
+
+ Gets a value indicating whether image is tiled.
+
+
+ true if image is tiled; otherwise, false.
+
+
+
+
+ Gets or sets the artist.
+
+
+ The artist.
+
+
+
+
+ Gets or sets a value indicating the tiff byte order.
+
+
+
+
+ Gets or sets the Icc profile stream.
+
+
+ The icc profile.
+
+
+
+
+ Gets or sets the bits per sample.
+
+
+ The bits per sample value.
+
+ When setting this value keep in mind that it will also set SamplesPerPixel value to array length. These 2 properties are very tightly coupled so may be set alltogether only.
+
+
+
+ Gets or sets the compression.
+
+
+ The compression.
+
+
+
+
+ Gets or sets the copyright.
+
+
+ The copyright.
+
+
+
+
+ Gets or sets the color map.
+
+
+ The color map.
+
+ value
+
+ The color map may be defined for samples per pixel equal to 1 only.
+ or
+ The bits per sample are not defined.
+
+ value;The array length must correspond to the followign formula: 3 * (2**BitsPerSample).
+
+
+
+ Gets or sets the color palette.
+
+
+ The color palette.
+
+
+
+
+ Gets or sets the date and time.
+
+
+ The date and time.
+
+
+
+
+ Gets or sets the name of the document.
+
+
+ The name of the document.
+
+
+
+
+ Gets or sets the alpha storage option. Options other than
+ are used when there are more than 3 defined.
+
+
+ The alpha storage option.
+
+
+
+
+ Gets a value indicating whether the extra samples is present.
+
+
+ true if the extra samples is present; otherwise, false.
+
+
+
+
+ Gets or sets the byte bits fill order.
+
+
+ The byte bits fill order.
+
+
+
+
+ Gets or sets the halftone hints.
+
+
+ The halftone hints.
+
+ value
+ value;Halftone hints array length must be equal to 2.
+
+
+
+ Gets or sets the image description.
+
+
+ The image description.
+
+
+
+
+ Gets or sets the ink names.
+
+
+ The ink names.
+
+
+
+
+ Gets or sets the scanner manufacturer.
+
+
+ The scanner manufacturer.
+
+
+
+
+ Gets or sets the max sample value.
+
+
+ The max sample value.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets or sets the min sample value.
+
+
+ The min sample value.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets or sets the scanner model.
+
+
+ The scanner model.
+
+
+
+
+ Gets or sets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets or sets the page name.
+
+
+ The page name.
+
+
+
+
+ Gets or sets the page number tag.
+
+
+ The page number tag.
+
+ value
+ value;Expected 2 values in the array: PageNumber[0] is the page number and PageNumber[1] is the total number of pages in the document.
+
+
+
+ Gets or sets the photometric.
+
+
+ The photometric.
+
+
+
+
+ Gets or sets the planar configuration.
+
+
+ The planar configuration.
+
+
+
+
+ Gets or sets the resolution unit.
+
+
+ The resolution unit.
+
+
+
+
+ Gets or sets the rows per strip.
+
+
+ The rows per strip.
+
+
+
+
+ Gets ot sets tile width.
+
+
+
+
+ Gets ot sets tile length.
+
+
+
+
+ Gets or sets the sample format.
+
+
+ The sample format.
+
+ value
+ value;The array length must correspond to the samples per pixel count.
+
+
+
+ Gets the samples per pixel. To change this property value use the property setter.
+
+
+ The samples per pixel.
+
+
+
+
+ Gets or sets the max sample value. The value has a field type which best matches the sample data (Byte, Short or Long type).
+
+
+ The max sample value.
+
+
+
+
+ Gets or sets the min sample value. The value has a field type which best matches the sample data (Byte, Short or Long type).
+
+
+ The min sample value.
+
+
+
+
+ Gets or sets the software type.
+
+
+ The software type.
+
+
+
+
+ Gets or sets the strip byte counts.
+
+
+ The strip byte counts.
+
+
+
+
+ Gets or sets the strip offsets.
+
+
+ The strip offsets.
+
+
+
+
+ Gets or sets the tile byte counts.
+
+
+
+
+ Gets or sets the tile offsets.
+
+
+
+
+ Gets or sets a general indication of the kind of data contained in this subfile.
+
+
+ The general indication of the kind of data contained in this subfile.
+
+
+
+
+ Gets or sets the target printer.
+
+
+ The target printer.
+
+
+
+
+ Gets or sets the threshholding.
+
+
+ The threshholding.
+
+
+
+
+ Gets the total pages.
+
+
+ The total pages.
+
+
+
+
+ Gets or sets the x position.
+
+
+ The x position.
+
+
+
+
+ Gets or sets the resolution settings.
+
+
+
+
+ Gets or sets the x resolution.
+
+
+ The x resolution.
+
+
+
+
+ Gets or sets the y position.
+
+
+ The y position.
+
+
+
+
+ Gets or sets the y resolution.
+
+
+ The y resolution.
+
+
+
+
+ Gets or sets the fax t4 options.
+
+
+ The fax t4 options.
+
+
+
+
+ Gets or sets the predictor for LZW compression.
+
+
+ The predictor type.
+
+
+
+
+ Gets or sets the image length.
+
+
+ The image length.
+
+
+
+
+ Gets or sets the image width.
+
+
+ The image width.
+
+
+
+
+ Gets or sets the pointer to EXIF IFD.
+
+
+ The pointer to EXIF IFD.
+
+
+
+
+ Gets or sets the tags.
+
+
+ The tags.
+
+
+
+
+ Gets the valid tag count. This is not the total tags count but the number of tags which may be preserved.
+
+
+ The valid tag count.
+
+
+
+
+ Gets the bits per pixel.
+
+
+ The bits per pixel.
+
+
+
+
+ The metafiles recorder graphics
+
+
+
+
+ Clears the state of the graphics object
+
+
+
+
+ Draws an arc representing a portion of an ellipse specified by a Rectangle structure.
+
+ Pen that determines the color, width, and style of the figure.
+ The boundaries of the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+
+ Draws the cubic bezier.
+
+ Pen that determines the color, width, and style of the figure.
+ The starting point of the curve.
+ The first control point for the curve.
+ The second control point for the curve.
+ The ending point of the curve.
+
+
+
+ Draws the poly cubic bezier.
+
+ Pen that determines the color, width, and style of the figure.
+ The points.
+ The number of points in the array should be a multiple of 3 plus 1, such as 4, 7, or 10.
+
+
+
+ Draws the ellipse.
+
+ Pen that determines the color, width, and style of the figure.
+ The boundaries of the ellipse.
+
+
+
+ Fills the ellipse.
+
+ Brush that determines the characteristics of the fill.
+ The boundaries of the ellipse.
+
+
+
+ Draws the specified Image, using its original physical size, at the specified location.
+
+ The image to draw.
+ The location of the upper-left corner of the drawn image.
+
+
+
+ Draws the specified portion of the specified Image at the specified location and with the specified size.
+
+ The image to draw.
+ Rectangle structure that specifies the location and size of the drawn image. The image is scaled to fit the rectangle.
+ Rectangle structure that specifies the portion of the image object to draw.
+ The units of measure used by the srcRect parameter.
+ srcUnit;Support only Pixel unit
+
+
+
+ Draws the image.
+
+ The image bytes.
+ The dest rect.
+ The source unit.
+
+
+
+ Draws the line.
+
+ Pen that determines the color, width, and style of the figure.
+ The x-coordinate of the first point.
+ The y-coordinate of the first point.
+ The x-coordinate of the second point.
+ The y-coordinate of the second point.
+
+
+
+ Draws the line.
+
+ Pen that determines the color, width, and style of the figure.
+ The first point.
+ The second point.
+
+
+
+ Draws the polyline.
+
+ Pen that determines the color, width, and style of the figure.
+ The points.
+
+
+
+ Draws the path.
+
+ Pen that determines the color, width, and style of the figure.
+ The path to draw.
+
+
+
+ Fills the path.
+
+ Pen that determines the color, width, and style of the figure.
+ Brush that determines the characteristics of the fill.
+ The path to fill.
+
+
+
+ Draws the pie.
+
+ Pen that determines the color, width, and style of the figure.
+ The boundaries of the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+
+ Fills the pie.
+
+ Brush that determines the characteristics of the fill.
+ The boundaries of the ellipse.
+ Angle in degrees measured clockwise from the x-axis to the starting point of the arc.
+ Angle in degrees measured clockwise from the startAngle parameter to ending point of the arc.
+
+
+
+ Draws the polygon.
+
+ Pen that determines the color, width, and style of the figure.
+ The points.
+
+
+
+ Fills the polygon.
+
+ Brush that determines the characteristics of the fill.
+ The points.
+
+
+
+ Fills the polygon.
+
+ Brush that determines the characteristics of the fill.
+ The points.
+ The fill mode.
+
+
+
+ Draws the rectangle.
+
+ Pen that determines the color, width, and style of the figure.
+ The x-coordinate of the upper-left corner of the rectangle to draw.
+ The y-coordinate of the upper-left corner of the rectangle to draw.
+ The width of the rectangle to draw.
+ The height of the rectangle to draw.
+
+
+
+ Draws the rectangle.
+
+ Pen that determines the color, width, and style of the figure.
+ The rectangle to draw.
+
+
+
+ Fills the rectangle.
+
+ Brush that determines the characteristics of the fill.
+ The rectangle to fill.
+
+
+
+ Draws the string.
+
+ The string.
+ Font that defines the text format of the string.
+ The text color.
+ The x-coordinate of the upper-left corner of the drawn text.
+ The y-coordinate of the upper-left corner of the drawn text.
+
+
+
+ Draws the string.
+
+ The string.
+ Font that defines the text format of the string.
+ The text color.
+ The x-coordinate of the upper-left corner of the drawn text.
+ The y-coordinate of the upper-left corner of the drawn text.
+ The angle in degrees, between the escapement vector and the x-axis of the device.
+ The escapement vector is parallel to the base line of a row of text.
+
+
+
+ Updates the clip region of this Graphics to exclude the area specified by a Rectangle structure.
+
+ Rectangle structure that specifies the rectangle to exclude from the clip region.
+
+
+
+ Updates the clip region of this Graphics to exclude the area specified by a Region.
+
+ Region that specifies the region to exclude from the clip region.
+
+
+
+ Updates the clip region of this Graphics to the intersection of the current clip region and the specified Rectangle structure.
+
+ Rectangle structure to intersect with the current clip region.
+
+
+
+ Updates the clip region of this Graphics to the intersection of the current clip region and the specified Region.
+
+ Region to intersect with the current region.
+
+
+
+ Resets the clip.
+
+
+
+
+ Multiplies the world transformation of this Graphics and specified the Matrix.
+
+ The matrix that multiplies the world transformation.
+
+
+
+ Multiplies the world transformation of this Graphics and specified the Matrix in the specified order.
+
+ The matrix that multiplies the world transformation.
+ The order of the multiplication.
+
+
+
+ Changes the origin of the coordinate system by prepending the specified translation to the transformation matrix of this Graphics.
+
+ The x-coordinate of the translation.
+ The y-coordinate of the translation.
+
+
+
+ Changes the origin of the coordinate system by applying the specified translation to the transformation matrix of this Graphics in the specified order.
+
+ The x-coordinate of the translation.
+ The y-coordinate of the translation.
+ Specifies whether the translation is prepended or appended to the transformation matrix.
+
+
+
+ Applies the specified rotation to the transformation matrix of this Graphics.
+
+ Angle of rotation in degrees.
+
+
+
+ Applies the specified rotation to the transformation matrix of this Graphics in the specified order.
+
+ Angle of rotation in degrees.
+ The rotating center.
+ Specifies whether the rotation is appended or prepended to the matrix transformation..
+
+
+
+ Applies the specified scaling operation to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.
+
+ Scale factor in the x direction.
+ Scale factor in the y direction.
+
+
+
+ Applies the specified scaling operation to the transformation matrix of this Graphics in the specified order.
+
+ Scale factor in the x direction.
+ Scale factor in the y direction.
+ Specifies whether the scaling operation is prepended or appended to the transformation matrix.
+
+
+
+ Gets the world transform.
+
+ The transform matrix.
+
+
+
+ Sets the transform.
+
+ The new transform matrix.
+
+
+
+ Gets or sets a Region that limits the drawing region of this Graphics
+
+
+
+
+ Gets the clip bounds.
+
+
+ The clip bounds.
+
+
+
+
+ Gets or sets the color of the background.
+
+
+ The color of the background.
+
+
+
+
+ Gets or sets the background mode.
+
+
+ The background mode.
+
+
+
+
+ The namespace contains Wmf graphics.
+
+
+
+
+ The Wmf recorder.
+
+
+
+
+ Ends the recording.
+
+ The result image.
+
+
+
+ Initializes a new instance of the class.
+
+ Destination rectangle, measured in twips, for displaying the metafile.
+ The number of pixel per inch.
+
+
+
+ Gets an instance of the Wmf recorder for the existing Wmf image.
+
+ The Wmf image to get a recoreder for.
+ An instance of the class.
+
+
+
+ Gets or sets the background mode.
+
+
+ The background mode.
+
+
+
+
+ The namespace handles WMF file format processing.
+
+
+
+
+ The namespace handles WMF file format processing.
+
+
+
+
+ The Wmf Image
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width.
+ The height.
+
+
+
+ Caches the data and ensures no additional data loading will be performed from the underlying
+ .
+
+
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize type.
+
+
+
+
+ Resizes the image.
+
+ The new width.
+ The new height.
+ The resize settings.
+
+
+
+
+ Rotates, flips, or rotates and flips the image.
+
+ Type of the rotate flip.
+
+
+
+
+ Sets the image palette.
+
+ The palette to set.
+
+ if set to true colors will be updated according to the new palette; otherwise color
+ indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no
+ corresponding palette entries.
+
+
+
+
+
+ Returns the list of font which used inside metafile.
+
+
+ The font list
+
+
+
+
+ Crops the specified rectangle.
+
+ The rectangle.
+
+
+
+ Resizes the canvas.
+
+ The new rectangle.
+
+
+
+
+ Gets the default options.
+
+ The arguments.
+ Default options
+
+
+
+ Adds the record.
+
+ The record.
+ Number of record.
+
+
+
+ Gets the post script.
+
+ The post script
+
+
+
+ Saves the data.
+
+ The stream to save data to.
+
+
+
+
+ Gets a value indicating whether object's data is cached currently and no data readig is required.
+
+
+ true if object's data is cached; otherwise, false.
+
+
+
+
+
+ Gets the image bits per pixel count.
+
+
+ The image bits per pixel count.
+
+
+
+
+
+ Gets the image width.
+
+
+ The image width.
+
+
+
+
+
+ Gets the image height.
+
+
+ The image height.
+
+
+
+
+
+ Gets or sets the inch.
+
+
+ The inch.
+
+
+
+
+ Gets a value of file format
+
+
+
+
+ Gets the frame bounds.
+
+
+ The frame bounds.
+
+
+
+
+
+ The render mode enumeration.
+
+
+
+
+ The render wmf records only without ebedded emf.
+
+
+
+
+ The render embedded emf only.
+
+
+
+
+ The render both in order.
+
+
+
+
+ The auto render. If exists embedded emf, then render emf else render wmf.
+
+
+
+
+ The wmf options.
+
+
+
+
+ The Wmf rasterization options.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the WMF render mode.
+
+
+ The WMF render mode.
+
+
+
+
+ The product title.
+
+
+
+
+ The assembly version.
+
+
+
+
+ The file version.
+
+
+
+
+ The major product version.
+
+
+
+
+ The minor product version.
+
+
+
+
+ Exception for Emf classes
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+ throws new exception
+
+
+
+ The packet version is used within block protocols. The following diagram represents a GUID as an
+ opaque sequence of bytes.
+ A GUID, also known as a UUID, is a 16-byte structure, intended to serve as a unique identifier for
+ an object. There are three representations of a GUID, as described in the following sections.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The data1.
+ The data2.
+ The data3.
+ The data4.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets or sets the value of the Data1 member (section 2.3.4), in little-endian byte order.
+
+
+ The data1.
+
+
+
+
+ Gets or sets the value of the Data2 member (section 2.3.4), in little-endian byte order.
+
+
+ The data2.
+
+
+
+
+ Gets or sets the value of the Data3 member (section 2.3.4), in little-endian byte order.
+
+
+ The data3.
+
+
+
+
+ Gets or sets the value of the Data4 member (section 2.3.4), in little-endian byte order.
+
+
+ The data4.
+
+
+
+
+ The namespace contains types [MS-DTYP]: Windows Data Types
+ 2.3 Common Data Structures
+
+
+
+
+ The BitmapDataType enumeration defines types of bitmap data formats.
+
+
+
+
+ Specifies a bitmap image with pixel data.
+
+
+
+
+ Specifies an image with compressed data.
+
+
+
+
+ The BrushData flags specify properties of graphics brushes, including the presence of optional data fields. These flags can be combined to specify multiple options.
+
+
+
+
+ This flag is meaningful in objects (section 2.2.2.29).
+ If set, an object (section 2.2.2.6) MUST be specified in the BoundaryData field of the brush data object.
+ If clear, an object (section 2.2.2.7) MUST be specified in the BoundaryData field of the brush data object.
+
+
+ Graphics brushes are specified by objects
+
+
+
+
+ This flag is meaningful in objects (section 2.2.2.24), objects, and objects (section 2.2.2.45).
+ If set, a 2x3 world space to device space transform matrix MUST be specified in the OptionalData field of the brush data object.
+
+
+
+
+ This flag is meaningful in EmfPlusLinearGradientBrushData and EmfPlusPathGradientBrushData objects.
+ If set, an object (section 2.2.2.4) MUST be specified in the OptionalData field of the brush data object.
+
+
+
+
+ This flag is meaningful in EmfPlusLinearGradientBrushData and EmfPlusPathGradientBrushData objects.
+ If set, an object (section 2.2.2.5) that specifies a blend pattern along a horizontal gradient MUST be specified in the OptionalData field of the brush data object.
+
+
+
+
+ This flag is meaningful in EmfPlusLinearGradientBrushData objects.
+ If set, an EmfPlusBlendFactors object that specifies a blend pattern along a vertical gradient MUST be specified in the OptionalData field of the brush data object.
+
+
+
+
+ This flag is meaningful in EmfPlusPathGradientBrushData objects.
+ If set, an object (section 2.2.2.18) MUST be specified in the OptionalData field of the brush data object.
+
+
+
+
+ This flag is meaningful in EmfPlusLinearGradientBrushData, EmfPlusPathGradientBrushData, and EmfPlusTextureBrushData objects.
+ If set, the brush MUST already be gamma corrected; that is, output brightness and intensity have been corrected to match the input image.
+
+
+
+
+ This flag is meaningful in EmfPlusTextureBrushData objects.
+ If set, a world space to device space transform SHOULD NOT be applied to the texture brush.
+
+
+
+
+ The BrushType enumeration defines types of graphics brushes, which are used to fill graphics regions.
+
+
+
+
+ Specifies a solid-color brush, which is characterized by an EmfPlusArgb value.
+
+
+
+
+ Specifies a hatch brush, which is characterized by a predefined pattern.
+
+
+
+
+ Specifies a texture brush, which is characterized by an image.
+
+
+
+
+ Specifies a path gradient brush, which is characterized by a color gradient path gradient brush data.
+
+
+
+
+ contains linear gradient brush data.
+
+
+
+
+ The CombineMode enumeration defines modes for combining two graphics regions.
+ In the following descriptions, the regions to be combined are referred to as the "existing" and "new" regions.
+
+
+
+
+ Replaces the existing region with the new region.
+
+
+
+
+ Replaces the existing region with the intersection of the existing region and the new region.
+
+
+
+
+ Replaces the existing region with the union of the existing and new regions.
+
+
+
+
+ Replaces the existing region with the XOR of the existing and new regions.
+
+
+
+
+ Replaces the existing region with the part of itself that is not in the new region.
+
+
+
+
+ Replaces the existing region with the part of the new region that is not in the existing region.
+
+
+
+
+ The CompositingMode enumeration defines modes for combining source colors with background colors. The compositing mode represents the enable state of alpha blending.
+
+
+
+
+ Enables alpha blending, which specifies that when a color is rendered, it is blended with the background color. The extent of blending is determined by the value of the alpha component of the color being rendered.
+
+
+
+
+ Disables alpha blending, which means that when a source color is rendered, it overwrites the background color.
+
+
+
+
+ The CompositingQuality enumeration defines levels of quality for creating composite images
+
+
+
+
+ No gamma correction is performed. Gamma correction controls the overall brightness and contrast of an image. Without gamma correction, composited images can appear too light or too dark.
+
+
+
+
+ No gamma correction is performed. Compositing speed is favored at the expense of quality. In terms of the result, there is no difference between this value and CompositingQualityDefault.
+
+
+
+
+ Gamma correction is performed. Compositing quality is favored at the expense of speed.
+
+
+
+
+ Enable gamma correction for higher-quality compositing with lower speed. In terms of the result, there is no difference between this value and CompositingQualityHighQuality.
+
+
+
+
+ No gamma correction is performed; however, using linear values results in better quality than the default at a slightly lower speed.
+
+
+
+
+ The CurveAdjustments enumeration defines adjustments that can be applied to the color curve of an image.
+
+
+
+
+ Specifies the simulation of increasing or decreasing the exposure of an image.
+
+
+
+
+ Specifies the simulation of increasing or decreasing the density of an image.
+
+
+
+
+ Specifies an increase or decrease of the contrast of an image.
+
+
+
+
+ Specifies an increase or decrease of the value of a color channel of an image, if that channel already has a value that is above half intensity. This adjustment can be used to increase definition in the light areas of an image without affecting the dark areas.
+
+
+
+
+ Specifies an increase or decrease of the value of a color channel of an image, if that channel already has a value that is below half intensity. This adjustment can be used to increase definition in the dark areas of an image without affecting the light areas.
+
+
+
+
+ Specifies an adjustment that lightens or darkens an image. Color channel values in the middle of the intensity range are altered more than color channel values near the minimum or maximum extremes of intensity. This adjustment can be used to lighten or darken an image without losing the contrast between the darkest and lightest parts of the image.
+
+
+
+
+ Specifies an adjustment to the white saturation of an image, defined as the maximum value in the range of intensities for a given color channel, whose range is typically 0 to 255.
+
+
+ For example, a white saturation adjustment value of 240 specifies that color channel values in the range 0 to 240 are adjusted so that they spread out over the range 0 to 255, with color channel values greater than 240 set to 255.
+
+
+
+
+ Specifies an adjustment to the black saturation of an image, which is the minimum value in the range of intensities for a given color channel, which is typically 0 to 255.
+
+
+ For example, a black saturation adjustment value of 15 specifies that color channel values in the range 15 to 255 are adjusted so that they spread out over the range 0 to 255, with color channel values less than 15 set to 0.
+
+
+
+
+ The CurveChannel enumeration defines color channels that can be affected by a color curve effect adjustment to an image.
+
+
+
+
+ Specifies that a color curve adjustment applies to all color channels.
+
+
+
+
+ Specifies that a color curve adjustment applies only to the red color channel.
+
+
+
+
+ Specifies that a color curve adjustment applies only to the green color channel.
+
+
+
+
+ Specifies that a color curve adjustment applies only to the blue color channel.
+
+
+
+
+ The CustomLineCapData flags specify data for custom line caps. These flags can be combined to specify multiple options.
+
+
+ Custom graphics line caps are specified by objects.
+
+
+
+
+ If set, an object MUST be specified in the OptionalData field of the object for filling the custom line cap.
+
+
+
+
+ If set, an object MUST be specified in the OptionalData field of the EmfPlusCustomLineCapData object for outlining the custom line cap.
+
+
+
+
+ The CustomLineCapDataType enumeration defines types of custom line cap data, which specify styles and shapes for the ends of graphics lines.
+
+
+
+
+ Specifies a default custom line cap.
+
+
+
+
+ Specifies an adjustable arrow custom line cap.
+
+
+
+
+ The DashedLineCapType enumeration defines types of line caps to use at the ends of dashed lines that are drawn with graphics pens.
+
+
+
+
+ Specifies a flat dashed line cap.
+
+
+
+
+ Specifies a round dashed line cap.
+
+
+
+
+ Specifies a triangular dashed line cap.
+
+
+
+
+ The DriverStringOptions flags specify properties of graphics text positioning and rendering. These flags can be combined to specify multiple options.
+
+
+ Graphics text output is specified in records
+
+
+
+
+ If set, the positions of character glyphs SHOULD be specified in a character map lookup table.
+ If clear, the glyph positions SHOULD be obtained from an array of coordinates.
+
+
+
+
+ If set, the string SHOULD be rendered vertically.
+ If clear, the string SHOULD be rendered horizontally.
+
+
+
+
+ If set, character glyph positions SHOULD be calculated relative to the position of the first glyph.
+ If clear, the glyph positions SHOULD be obtained from an array of coordinates.
+
+
+
+
+ If set, less memory SHOULD be used to cache anti-aliased glyphs, which produces lower quality text rendering.
+ If clear, more memory SHOULD be used, which produces higher quality text rendering.
+
+
+
+
+ The FilterType enumeration defines types of filtering algorithms that can be used for text and graphics quality enhancement and image rendering.
+
+
+
+
+ Specifies that filtering is not performed.
+
+
+
+
+ Specifies that each destination pixel is computed by sampling the nearest pixel from the source image.
+
+
+
+
+ Specifies that linear interpolation is performed using the weighted average of a 2x2 area of pixels surrounding the source pixel.
+
+
+
+
+ Specifies that each pixel in the source image contributes equally to the destination image. This is the slowest of filtering algorithms.
+
+
+
+
+ Specifies a box filter algorithm, in which each destination pixel is computed by averaging a rectangle of source pixels. This algorithm is useful only when reducing the size of an image.
+
+
+
+
+ Specifies that a 4-sample tent filter is used.
+
+
+
+
+ Specifies that a 4-sample Gaussian filter is used, which creates a blur effect on an image.
+
+
+
+
+ The FontStyle flags specify styles of graphics font typefaces. These flags can be combined to specify multiple options.
+
+
+ Graphics font typefaces are specified by objects
+
+
+
+
+ If set, the font typeface MUST be rendered with a heavier weight or thickness.
+ If clear, the font typeface MUST be rendered with a normal thickness.
+
+
+
+
+ If set, the font typeface MUST be rendered with the vertical stems of the characters at an increased angle or slant relative to the baseline.
+ If clear, the font typeface MUST be rendered with the vertical stems of the characters at a normal angle.
+
+
+
+
+ If set, the font typeface MUST be rendered with a line underneath the baseline of the characters.
+ If clear, the font typeface MUST be rendered without a line underneath the baseline.
+
+
+
+
+ If set, the font typeface MUST be rendered with a line parallel to the baseline drawn through the middle of the characters.
+ If clear, the font typeface MUST be rendered without a line through the characters.
+
+
+
+
+ The GraphicsVersion enumeration defines versions of operating system graphics that are used to create EMF+ metafiles.
+
+
+
+
+ Specifies GDI+ version 1.0
+
+
+
+
+ Specifies GDI+ version 1.1
+
+
+
+
+ The HatchStyle enumeration defines hatch patterns used by graphics brushes. A hatch pattern consists of a solid background color and lines drawn over the background.
+
+
+
+
+ Specifies equally spaced horizontal lines.
+
+
+
+
+ Specifies equally spaced vertical lines.
+
+
+
+
+ Specifies lines on a diagonal from upper left to lower right.
+
+
+
+
+ Specifies lines on a diagonal from upper right to lower left.
+
+
+
+
+ Specifies crossing horizontal and vertical lines.
+
+
+
+
+ Specifies crossing forward diagonal and backward diagonal lines with anti-aliasing.
+
+
+
+
+ Specifies a 5-percent hatch, which is the ratio of foreground color to background color equal to 5:100.
+
+
+
+
+ Specifies a 10-percent hatch, which is the ratio of foreground color to background color equal to 10:100.
+
+
+
+
+ Specifies a 20-percent hatch, which is the ratio of foreground color to background color equal to 20:100.
+
+
+
+
+ Specifies a 20-percent hatch, which is the ratio of foreground color to background color equal to 20:100.
+
+
+
+
+ Specifies a 30-percent hatch, which is the ratio of foreground color to background color equal to 30:100.
+
+
+
+
+ Specifies a 40-percent hatch, which is the ratio of foreground color to background color equal to 40:100.
+
+
+
+
+ Specifies a 50-percent hatch, which is the ratio of foreground color to background color equal to 50:100.
+
+
+
+
+ Specifies a 60-percent hatch, which is the ratio of foreground color to background color equal to 60:100.
+
+
+
+
+ Specifies a 70-percent hatch, which is the ratio of foreground color to background color equal to 70:100.
+
+
+
+
+ Specifies a 75-percent hatch, which is the ratio of foreground color to background color equal to 75:100.
+
+
+
+
+ Specifies an 80-percent hatch, which is the ratio of foreground color to background color equal to 80:100.
+
+
+
+
+ Specifies a 90-percent hatch, which is the ratio of foreground color to background color equal to 90:100.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top to bottom points with no anti-aliasing. They are spaced 50 percent further apart than lines in the HatchStyleForwardDiagonal pattern
+
+
+
+
+ Specifies diagonal lines that slant to the left from top to bottom points with no anti-aliasing. They are spaced 50 percent further apart than lines in the HatchStyleBackwardDiagonal pattern.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top to bottom points with no anti-aliasing. They are spaced 50 percent closer and are twice the width of lines in the HatchStyleForwardDiagonal pattern.
+
+
+
+
+ Specifies diagonal lines that slant to the left from top to bottom points with no anti-aliasing. They are spaced 50 percent closer and are twice the width of lines in the HatchStyleBackwardDiagonal pattern.
+
+
+
+
+ Specifies diagonal lines that slant to the right from top to bottom points with no anti-aliasing. They have the same spacing between lines in HatchStyleWideDownwardDiagonal pattern and HatchStyleForwardDiagonal pattern, but HatchStyleWideDownwardDiagonal has the triple line width of HatchStyleForwardDiagonal.
+
+
+
+
+ Specifies diagonal lines that slant to the left from top to bottom points with no anti-aliasing. They have the same spacing between lines in HatchStyleWideUpwardDiagonal pattern and HatchStyleBackwardDiagonal pattern, but HatchStyleWideUpwardDiagonal has the triple line width of HatchStyleWideUpwardDiagonal.
+
+
+
+
+ Specifies vertical lines that are spaced 50 percent closer together than lines in the HatchStyleVertical pattern.
+
+
+
+
+ Specifies horizontal lines that are spaced 50 percent closer than lines in the HatchStyleHorizontal pattern.
+
+
+
+
+ Specifies vertical lines that are spaced 75 percent closer than lines in the HatchStyleVertical pattern; or 25 percent closer than lines in the HatchStyleLightVertical pattern.
+
+
+
+
+ Specifies horizontal lines that are spaced 75 percent closer than lines in the HatchStyleHorizontal pattern; or 25 percent closer than lines in the HatchStyleLightHorizontal pattern.
+
+
+
+
+ Specifies lines that are spaced 50 percent closer than lines in the HatchStyleVertical pattern.
+
+
+
+
+ Specifies lines that are spaced 50 percent closer than lines in the HatchStyleHorizontal pattern.
+
+
+
+
+ Specifies dashed diagonal lines that slant to the right from top to bottom points.
+
+
+
+
+ Specifies dashed diagonal lines that slant to the left from top to bottom points.
+
+
+
+
+ Specifies dashed horizontal lines.
+
+
+
+
+ Specifies dashed vertical lines.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of confetti.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of confetti, and is composed of larger pieces than the HatchStyleSmallConfetti pattern.
+
+
+
+
+ Specifies horizontal lines that are composed of zigzags.
+
+
+
+
+ Specifies horizontal lines that are composed of tildes.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of layered bricks that slant to the left from top to bottom points.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of horizontally layered bricks.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a woven material.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a plaid material.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of divots.
+
+
+
+
+ Specifies crossing horizontal and vertical lines, each of which is composed of dots.
+
+
+
+
+ Specifies crossing forward and backward diagonal lines, each of which is composed of dots.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of diagonally layered shingles that slant to the right from top to bottom points.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a trellis.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of spheres laid adjacent to each other.
+
+
+
+
+ Specifies crossing horizontal and vertical lines that are spaced 50 percent closer together than HatchStyleLargeGrid.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a checkerboard.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a checkerboard, with squares that are twice the size of the squares in the pattern.
+
+
+
+
+ Specifies crossing forward and backward diagonal lines; the lines are not anti-aliased.
+
+
+
+
+ Specifies a pattern of lines that has the appearance of a checkerboard placed diagonally.
+
+
+
+
+ The HotkeyPrefix enumeration defines output options for hotkey prefixes in graphics text.
+
+
+
+
+ Specifies that the hotkey prefix SHOULD NOT be displayed.
+
+
+
+
+ Specifies that no hotkey prefix is defined.
+
+
+
+
+ Specifies that the hotkey prefix SHOULD be displayed.
+
+
+
+
+ The ImageDataType enumeration defines types of image data formats.
+
+
+
+
+ The type of image is not known.
+
+
+
+
+ Specifies a bitmap image.
+
+
+
+
+ Specifies a metafile image.
+
+
+
+
+ The ImageEffects identifiers define standard GUIDs for specifying graphics image effects. These identifiers are used by device drivers to publish their levels of support for these effects. The identifier constants are defined using the GUID curly-braced string representation ([MS-DTYP] section 2.3.4.3).
+
+
+ Image effects identifiers and Image Effects Parameter Blocks are specified by records for records.
+
+
+
+
+ Specifies the blur effect.
+
+
+
+
+ Specifies the brightness contrast effect.
+
+
+
+
+ Specifies the color balance effect.
+
+
+
+
+ Specifies the color curve effect.
+
+
+
+
+ Specifies the color lookup table effect.
+
+
+
+
+ Specifies the color matrix effect.
+
+
+
+
+ Specifies the hue saturation lightness effect.
+
+
+
+
+ Specifies the levels effect.
+
+
+
+
+ Specifies the red-eye correction effect.
+
+
+
+
+ Specifies the sharpen effect.
+
+
+
+
+ Specifies the tint effect.
+
+
+
+
+ Contains the specified object unique identifier.
+
+ The object unique identifier.
+ True if contain.
+
+
+
+ The InterpolationMode enumeration defines ways to perform scaling, including stretching and shrinking.
+
+
+
+
+ Specifies the default interpolation mode, which is defined as InterpolationModeBilinear.
+
+
+
+
+ Specifies a low-quality interpolation mode, which is defined as InterpolationModeNearestNeighbor.
+
+
+
+
+ Specifies a high-quality interpolation mode, which is defined as InterpolationModeHighQualityBicubic.
+
+
+
+
+ Specifies bilinear interpolation, which uses the closest 2x2 neighborhood of known pixels surrounding the interpolated pixel. The weighted average of these 4 known pixel values determines the value to assign to the interpolated pixel. The result is smoother looking than InterpolationModeNearestNeighbor.
+
+
+
+
+ Specifies bicubic interpolation, which uses the closest 4x4 neighborhood of known pixels surrounding the interpolated pixel. The weighted average of these 16 known pixel values determines the value to assign to the interpolated pixel. Because the known pixels are likely to be at varying distances from the interpolated pixel, closer pixels are given a higher weight in the calculation. The result is smoother looking than InterpolationModeBilinear.
+
+
+
+
+ Specifies nearest-neighbor interpolation, which uses only the value of the pixel that is closest to the interpolated pixel. This mode simply duplicates or removes pixels, producing the lowest-quality result among these options.
+
+
+
+
+ Specifies bilinear interpolation with prefiltering.
+
+
+
+
+ Specifies bicubic interpolation with prefiltering, which produces the highest-quality result among these options.
+
+
+
+
+ The LanguageIdentifier enumeration defines identifiers for natural languages in locales, including countries, geographical regions, and administrative districts.
+
+
+ Language identifiers are specified by objects (section 2.2.2.23). Each value is an encoding of a primary language identifier and a sublanguage identifier.
+ See [MS-LCID] for additional information concerning language identifiers, including Windows version support.
+
+
+
+
+ Neutral locale language.
+
+
+
+
+ Chinese, Simplified (China).
+
+
+
+
+ Invariant language.
+
+
+
+
+ User default locale language.
+
+
+
+
+ Arabic (Saudi Arabia).
+
+
+
+
+ Bulgarian (Bulgaria).
+
+
+
+
+ Catalan (Spain).
+
+
+
+
+ Chinese, Traditional (Taiwan).
+
+
+
+
+ Czech (Czech Republic).
+
+
+
+
+ Danish (Denmark).
+
+
+
+
+ German (Germany).
+
+
+
+
+ Greek (Greece).
+
+
+
+
+ English (United States).
+
+
+
+
+ Spanish, Traditional (Spain).
+
+
+
+
+ Finnish (Finland).
+
+
+
+
+ French (France).
+
+
+
+
+ Hebrew (Israel).
+
+
+
+
+ Hungarian (Hungary).
+
+
+
+
+ Icelandic (Iceland).
+
+
+
+
+ Italian (Italy).
+
+
+
+
+ Japanese (Japan).
+
+
+
+
+ Korean (Korea).
+
+
+
+
+ Dutch (Netherlands).
+
+
+
+
+ Bokmal (Norway).
+
+
+
+
+ Polish (Poland).
+
+
+
+
+ Portuguese (Brazil).
+
+
+
+
+ Romansh (Switzerland).
+
+
+
+
+ Romanian (Romania).
+
+
+
+
+ Russian (Russia).
+
+
+
+
+ Croatian (Croatia).
+
+
+
+
+ Slovak (Slovakia).
+
+
+
+
+ Albanian (Albania).
+
+
+
+
+ Swedish (Sweden).
+
+
+
+
+ Thai (Thailand).
+
+
+
+
+ Turkish (Turkey).
+
+
+
+
+ Urdu (Pakistan).
+
+
+
+
+ Indonesian (Indonesia).
+
+
+
+
+ Ukranian (Ukraine).
+
+
+
+
+ Belarusian (Belarus).
+
+
+
+
+ Slovenian (Slovenia).
+
+
+
+
+ Estonian (Estonia).
+
+
+
+
+ Latvian (Latvia).
+
+
+
+
+ Lithuanian (Lithuania).
+
+
+
+
+ Tajik (Tajikistan).
+
+
+
+
+ Persian (Iran).
+
+
+
+
+ Vietnamese (Vietnam).
+
+
+
+
+ Armenian (Armenia).
+
+
+
+
+ Azeri, Latin alphabet (Azerbaijan).
+
+
+
+
+ Basque (Spain).
+
+
+
+
+ Sorbian, Upper (Germany).
+
+
+
+
+ Macedonian (Macedonia).
+
+
+
+
+ Sutu (South Africa).
+
+
+
+
+ Setswana (Botswana).
+
+
+
+
+ isiXhosa (South Africa).
+
+
+
+
+ isiZulu (South Africa).
+
+
+
+
+ Afrikaans (South Africa).
+
+
+
+
+ Georgian (Georgia).
+
+
+
+
+ Faeroese (Faroe Islands).
+
+
+
+
+ Hindi (India).
+
+
+
+
+ Maltese (Malta).
+
+
+
+
+ Sami, Northern (Norway).
+
+
+
+
+ Gaelic (United Kingdom).
+
+
+
+
+ Malay (Malaysia).
+
+
+
+
+ Kazakh (Kazakhstan).
+
+
+
+
+ Kyrgyz (Kyrgyzstan).
+
+
+
+
+ Kiswahili (Kenya, Tanzania, and other Eastern African nations; and it is the official language of the African Union).
+
+
+
+
+ Turkmen (Turkmenistan).
+
+
+
+
+ Uzbek, Latin alphabet (Uzbekistan).
+
+
+
+
+ Tatar (Belarus, Russia, Ukraine, and other eastern European nations; and Kazakhstan, and Uzbekistan in central Asia).
+
+
+
+
+ Bengali, Bengali script (India).
+
+
+
+
+ Punjabi (India).
+
+
+
+
+ Gujarati (India).
+
+
+
+
+ Oriya (India).
+
+
+
+
+ Tamil (India, Sri Lanka).
+
+
+
+
+ Telugu (India).
+
+
+
+
+ Kannada (India).
+
+
+
+
+ Malayalam (India).
+
+
+
+
+ Assamese (India).
+
+
+
+
+ Marathi (India).
+
+
+
+
+ Sanskrit (India).
+
+
+
+
+ Mongolian, Cyrillic alphabet (Mongolia).
+
+
+
+
+ Tibetan (China).
+
+
+
+
+ Welsh (United Kingdom).
+
+
+
+
+ Khmer (Cambodia).
+
+
+
+
+ Lao (Laos).
+
+
+
+
+ Galician (Spain).
+
+
+
+
+ Konkani (India).
+
+
+
+
+ Sindhi (India).
+
+
+
+
+ Syriac (Syria).
+
+
+
+
+ Sinhalese (Sri Lanka).
+
+
+
+
+ Inuktitut, Syllabics (Canada).
+
+
+
+
+ Amharic (Ethiopia).
+
+
+
+
+ Nepali (Nepal).
+
+
+
+
+ Frisian (Netherlands).
+
+
+
+
+ Pashto (Afghanistan, Pakistan).
+
+
+
+
+ Filipino (Philippines).
+
+
+
+
+ Divehi (Maldives, India).
+
+
+
+
+ Hausa, Latin alphabet (Benin, Nigeria, Togo, and other western African nations).
+
+
+
+
+ Yoruba (Benin, Ghana, Nigeria, Togo, and other western African nations).
+
+
+
+
+ Quechua (Bolivia).
+
+
+
+
+ Sesotho sa Leboa (South Africa).
+
+
+
+
+ Bashkir (Russia).
+
+
+
+
+ Luxembourgish (Luxembourg).
+
+
+
+
+ Greenlandic (Greenland).
+
+
+
+
+ Igbo (Nigeria).
+
+
+
+
+ Somali (Somalia).
+
+
+
+
+ Yi (China).
+
+
+
+
+ Mapudungun (Chile).
+
+
+
+
+ Mohawk (Canada).
+
+
+
+
+ Breton (France).
+
+
+
+
+ Uighur (China).
+
+
+
+
+ Maori (New Zealand).
+
+
+
+
+ Occitan (France).
+
+
+
+
+ Corsican (France).
+
+
+
+
+ Alsatian (France).
+
+
+
+
+ Yakut (Russia).
+
+
+
+
+ K'iche (Guatemala).
+
+
+
+
+ Kinyarwanda (Rwanda).
+
+
+
+
+ Wolof (Gambia, Mauritania, Senegal, and other western African nations).
+
+
+
+
+ Dari (Afghanistan).
+
+
+
+
+ System default locale language.
+
+
+
+
+ Arabic (Iraq).
+
+
+
+
+ Chinese (China).
+
+
+
+
+ German (Switzerland).
+
+
+
+
+ English (United Kingdom).
+
+
+
+
+ Spanish (Mexico).
+
+
+
+
+ French (Belgium).
+
+
+
+
+ Italian (Switzerland).
+
+
+
+
+ Korean, Johab (Korea).
+
+
+
+
+ Dutch (Belgium).
+
+
+
+
+ Nyorsk (Norway).
+
+
+
+
+ Portuguese (Portugal).
+
+
+
+
+ Serbian, Latin alphabet (Serbia).
+
+
+
+
+ Swedish (Finland).
+
+
+
+
+ Urdu (India).
+
+
+
+
+ Lithuanian, Classic (Lithuania).
+
+
+
+
+ Azeri, Cyrillic alphabet (Azerbaijan).
+
+
+
+
+ Sorbian, Lower (Germany).
+
+
+
+
+ Sami, Northern (Sweden).
+
+
+
+
+ Irish (Ireland).
+
+
+
+
+ Malay (Brunei).
+
+
+
+
+ Uzbek, Cyrillic alphabet (Uzbekistan).
+
+
+
+
+ Bengali (Bangladesh).
+
+
+
+
+ Mongolian, Traditional (China).
+
+
+
+
+ Sindhi (Pakistan).
+
+
+
+
+ Inuktitut, Latin alphabet (Canada).
+
+
+
+
+ Tamazight, Latin alphabet (Algeria).
+
+
+
+
+ Quechua (Ecuador).
+
+
+
+
+ Default custom locale language.
+
+
+
+
+ Arabic (Egypt).
+
+
+
+
+ Chinese (Hong Kong Special Administrative Region, China).
+
+
+
+
+ German (Austria).
+
+
+
+
+ English (Australia).
+
+
+
+
+ Spanish, Modern (Spain).
+
+
+
+
+ French (Canada).
+
+
+
+
+ Serbian, Cyrillic alphabet (Serbia).
+
+
+
+
+ Sami, Northern (Finland).
+
+
+
+
+ Quechua (Peru).
+
+
+
+
+ Unspecified custom locale language.
+
+
+
+
+ Arabic (Libya).
+
+
+
+
+ Chinese (Singapore).
+
+
+
+
+ German (Luxembourg).
+
+
+
+
+ English (Canada).
+
+
+
+
+ Spanish (Guatemala).
+
+
+
+
+ French (Switzerland).
+
+
+
+
+ Croatian (Bosnia and Herzegovina).
+
+
+
+
+ Sami, Luli (Norway).
+
+
+
+
+ Default custom multi-user interface locale language.
+
+
+
+
+ Arabic (Algeria).
+
+
+
+
+ Chinese (Macao Special Administrative Region, China).
+
+
+
+
+ German (Liechtenstein).
+
+
+
+
+ English (New Zealand).
+
+
+
+
+ Spanish (Costa Rica).
+
+
+
+
+ French (Luxembourg).
+
+
+
+
+ Bosnian, Latin alphabet (Bosnia and Herzegovina).
+
+
+
+
+ Sami, Lule (Sweden).
+
+
+
+
+ Arabic (Morocco).
+
+
+
+
+ English (Ireland).
+
+
+
+
+ Spanish (Panama).
+
+
+
+
+ French (Monaco).
+
+
+
+
+ Serbian, Latin alphabet (Bosnia and Herzegovina).
+
+
+
+
+ Sami, Southern (Norway).
+
+
+
+
+ Arabic (Tunisia).
+
+
+
+
+ English (South Africa).
+
+
+
+
+ Spanish (Dominican Republic).
+
+
+
+
+ Serbian, Cyrillic alphabet (Bosnia and Herzegovina).
+
+
+
+
+ Sami, Southern (Sweden).
+
+
+
+
+ Arabic (Oman).
+
+
+
+
+ Greek 2 (Greece).
+
+
+
+
+ English (Jamaica).
+
+
+
+
+ Spanish (Venezuela).
+
+
+
+
+ Bosnian, Cyrillic alphabet (Bosnia and Herzegovina).
+
+
+
+
+ Sami, Skolt (Finland).
+
+
+
+
+ Arabic (Yemen).
+
+
+
+
+ English (Nations of the Caribbean).
+
+
+
+
+ Spanish (Colombia).
+
+
+
+
+ Sami, Inari (Finland).
+
+
+
+
+ Arabic (Syria).
+
+
+
+
+ English (Belize).
+
+
+
+
+ Spanish (Peru).
+
+
+
+
+ Arabic (Jordan).
+
+
+
+
+ English (Trinidad and Tobago).
+
+
+
+
+ Spanish (Argentina).
+
+
+
+
+ Arabic (Lebanon).
+
+
+
+
+ English (Zimbabwe).
+
+
+
+
+ Spanish (Ecuador).
+
+
+
+
+ Arabic (Kuwait).
+
+
+
+
+ English (Phillippines).
+
+
+
+
+ Spanish (Chile).
+
+
+
+
+ Arabic (United Arab Emirates).
+
+
+
+
+ Spanish (Uruguay).
+
+
+
+
+ Arabic (Bahrain).
+
+
+
+
+ Spanish (Paraguay).
+
+
+
+
+ Arabic (Qatar).
+
+
+
+
+ English (India).
+
+
+
+
+ Spanish (Bolivia).
+
+
+
+
+ English (Malaysia).
+
+
+
+
+ Spanish (El Salvador).
+
+
+
+
+ English (Singapore).
+
+
+
+
+ Spanish (Honduras).
+
+
+
+
+ Spanish (Nicaragua).
+
+
+
+
+ Spanish (Puerto Rico).
+
+
+
+
+ Spanish (United States).
+
+
+
+
+ Chinese, Traditional (China).
+
+
+
+
+ The LineCapType enumeration defines types of line caps to use at the ends of lines that are drawn with graphics pens.
+
+
+ Graphics line caps are specified by objects (section 2.2.1.7).
+
+
+
+
+ Specifies a squared-off line cap. The end of the line MUST be the last point in the line.
+
+
+
+
+ Specifies a square line cap. The center of the square MUST be located at the last point in the line. The width of the square is the line width.
+
+
+
+
+ Specifies a circular line cap. The center of the circle MUST be located at the last point in the line. The diameter of the circle is the line width.
+
+
+
+
+ Specifies a triangular line cap. The base of the triangle MUST be located at the last point in the line. The base of the triangle is the line width.
+
+
+
+
+ Specifies that the line end is not anchored.
+
+
+
+
+ Specifies that the line end is anchored with a square line cap. The center of the square MUST be located at the last point in the line. The height and width of the square are the line width.
+
+
+
+
+ Specifies that the line end is anchored with a circular line cap. The center of the circle MUST be located at the last point in the line. The circle SHOULD be wider than the line.
+
+
+
+
+ Specifies that the line end is anchored with a diamond-shaped line cap, which is a square turned at 45 degrees. The center of the diamond MUST be located at the last point in the line. The diamond SHOULD be wider than the line.
+
+
+
+
+ Specifies that the line end is anchored with an arrowhead shape. The arrowhead point MUST be located at the last point in the line. The arrowhead SHOULD be wider than the line.
+
+
+
+
+ Mask used to check whether a line cap is an anchor cap.
+
+
+
+
+ Specifies a custom line cap.
+
+
+
+
+ The LineJoinType enumeration defines ways to join two lines that are drawn by the same graphics pen and whose ends meet.
+
+
+ Graphics lines are specified by objects (section 2.2.1.7). A line join makes the intersection of the two line ends look more continuous.
+
+
+
+
+ Specifies a mitered line join.
+
+
+
+
+ Specifies a beveled line join.
+
+
+
+
+ Specifies a rounded line join.
+
+
+
+
+ Specifies a clipped mitered line join.
+
+
+
+
+ The LineStyle enumeration defines styles of lines that are drawn with graphics pens.
+
+
+ Graphics lines are specified by objects (section 2.2.1.7).
+
+
+
+
+ Specifies a solid line.
+
+
+
+
+ Specifies a dashed line.
+
+
+
+
+ Specifies a dotted line.
+
+
+
+
+ Specifies an alternating dash-dot line.
+
+
+
+
+ Specifies an alternating dash-dot-dot line.
+
+
+
+
+ Specifies a user-defined, custom dashed line.
+
+
+
+
+ The MetafileDataType enumeration defines types of metafiles data that can be embedded in an EMF+ metafile.
+
+
+ Embedded metafile data is specified by EmfPlusMetafileData objects (section 2.2.2.27).
+
+
+
+
+ Specifies that the metafile is a WMF metafile that specifies graphics operations with WMF records, as specified in [MS-WMF].
+
+
+
+
+ Specifies that the metafile is a WMF metafile that specifies graphics operations with WMF records, and which contains additional header information that makes the WMF metafile device-independent, as specified in [MS-WMF].
+
+
+
+
+ Specifies that the metafile is an EMF metafile that specifies graphics operations with EMF records, as specified in [MS-EMF].
+
+
+
+
+ Specifies that the metafile is an EMF+ metafile that specifies graphics operations with EMF+ records only.
+
+
+
+
+ Specifies that the metafile is an EMF+ metafile that specifies graphics operations with both EMF and EMF+ records.
+
+
+
+
+ EmfPlusObjectClamp specifies the object clamping behavior. It
+ is not used until this object is applied to an image being drawn.
+
+
+
+
+ The rectangle clamp
+
+
+
+
+ The bitmap clamp
+
+
+
+
+ The ObjectType enumeration defines types of graphics objects that can be created and used in graphics operations.
+
+
+
+
+ The object is not a valid object.
+
+
+
+
+ Specifies an object (section 2.2.1.1). Brush objects fill graphics regions.
+
+
+
+
+ Specifies an object (section 2.2.1.7). Pen objects draw graphics lines.
+
+
+
+
+ Specifies an object (section 2.2.1.6). Path objects specify sequences of lines, curves, and shapes.
+
+
+
+
+ Specifies an object (section 2.2.1.8). Region objects specify areas of the output surface.
+
+
+
+
+ Specifies an object (section 2.2.1.4). Image objects encapsulate bitmaps and metafiles.
+
+
+
+
+ Specifies an object (section 2.2.1.3). Font objects specify font properties, including typeface style, EM size, and font family.
+
+
+
+
+ Specifies an object (section 2.2.1.9). String format objects specify text layout, including alignment, orientation, tab stops, clipping, and digit substitution for languages that do not use Western European digits.
+
+
+
+
+ Specifies an object (section 2.2.1.5). Image attribute objects specify operations on pixels during image rendering, including color adjustment, grayscale adjustment, gamma correction, and color mapping.
+
+
+
+
+ Specifies an object (section 2.2.1.2). Custom line cap objects specify shapes to draw at the ends of a graphics line, including squares, circles, and diamonds.
+
+
+
+
+ The PaletteStyle flags specify properties of graphics palettes. These flags can be combined to specify multiple options.
+
+
+ Graphics palettes are specified by objects.
+
+
+
+
+ If set, one or more of the palette entries MUST contain alpha transparency information.
+
+
+
+
+ If set, the palette MUST contain only grayscale entries.
+
+
+
+
+ If set, the palette MUST contain discrete color values that can be used for halftoning.
+
+
+
+
+ A 32-bit unsigned integer that specifies how to interpret the points and associated point types that are defined by this object.
+ C (1 bit): If set, the PathPoints array specifies absolute locations in the coordinate space with 16-bit integer coordinates.
+ If clear, the PathPoints array specifies absolute locations in the coordinate space with 32-bit floating-point coordinates.
+ Note If the P flag (below) is set, this flag MAY be clear and MUST be ignored.
+ R (1 bit): If set, the point types in the PathPointTypes array are specified by EmfPlusPathPointTypeRle objects (section 2.2.2.32),
+ which use run-length encoding (RLE) compression, and/or EmfPlusPathPointType objects (section 2.2.2.31). See [MS-WMF] section 3.1.6 for more information on RLE compression.
+ If clear, the point types in the PathPointTypes array are specified by EmfPlusPathPointType objects.
+ P (1 bit): If set, each element in the PathPoints array specifies a location in the coordinate space that is relative to the
+ location specified by the previous element in the array. In the case of the first element in PathPoints, a previous location at coordinates (0,0) is assumed.
+ If clear, each element in the PathPoints array specifies an absolute location.
+
+
+
+
+ The c flag
+
+
+
+
+ The r flag
+
+
+
+
+ The p flag
+
+
+
+
+ The PathPointType enumeration defines types of points on a graphics path.
+
+
+ Graphics path point types are specified by objects (section 2.2.2.31).
+
+
+
+
+ Specifies that the point is the starting point of a path.
+
+
+
+
+ Specifies that the point is one of the two endpoints of a line.
+
+
+
+
+ Specifies that the point is an endpoint or control point of a cubic Bezier curve.
+
+
+
+
+ The PathPointType flags specify type properties of points on graphics paths. These flags can be combined to specify multiple options.
+
+
+ Graphics paths are specified by objects.
+
+
+
+
+ Specifies that a line segment that passes through the point is dashed.
+
+
+
+
+ Specifies that the point is a position marker.
+
+
+
+
+ Specifies that the point is the endpoint of a subpath.
+
+
+
+
+ The PenAlignment enumeration defines the distribution of the width of the pen with respect to the line being drawn.
+
+
+ Graphics pens are specified by objects (section 2.2.1.7).
+ Pen alignment can be visualized by considering a theoretical one-dimensional line drawn between two specified points.
+ The pen alignment determines the proportion of pen width that is orthogonal to the theoretical line.
+
+
+
+
+ Specifies that the EmfPlusPen object is centered over the theoretical line.
+
+
+
+
+ Specifies that the pen is positioned on the inside of the theoretical line.
+
+
+
+
+ Specifies that the pen is positioned to the left of the theoretical line.
+
+
+
+
+ Specifies that the pen is positioned on the outside of the theoretical line.
+
+
+
+
+ Specifies that the pen is positioned to the right of the theoretical line.
+
+
+
+
+ The PenData flags specify properties of graphics pens, including the presence of optional data fields. These flags can be combined to specify multiple options.
+
+
+ Graphics pens are specified by objects.
+
+
+
+
+ If set, a 2x3 transform matrix MUST be specified in the OptionalData field of an object.
+
+
+
+
+ If set, the style of a starting line cap MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether the style of an ending line cap MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a line join type MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a miter limit MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a line style MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a dashed line cap MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a dashed line offset MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether an object MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether a pen alignment MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether the length and content of a object are present in the OptionalData field of an object.
+
+
+
+
+ Indicates whether an object MUST be specified in the OptionalData field of an object.
+
+
+
+
+ Indicates whether an object MUST be specified in the OptionalData field of an object.
+
+
+
+
+ The PixelFormat enumeration defines pixel formats that are supported in EMF+ bitmaps.
+
+
+
+
+ The format is not specified.
+
+
+ Pixel formats are specified by objects.
+ They are encoded as follows:
+ - Bits 0-7: Enumeration of the pixel format constants, starting at zero.
+ - Bits 8-15: The total number of bits per pixel.
+ - Bit 16: If set, the color value is indexed into a palette.
+ - Bit 17: If set, the color value is in a GDI-supported format.
+ - Bit 18: If set, the color value has an alpha component.
+ - Bit 19: If set, the color value has a premultiplied alpha component.
+ - Bit 20: If set, extended colors, 16-bits per channel, are supported.
+ - Bits 21-31: Reserved.
+
+
+
+
+ The format is monochrome, and a color palette lookup table is used.
+
+
+
+
+ The format is 16-color, and a color palette lookup table is used.
+
+
+
+
+ The format is 256-color, and a color palette lookup table is used.
+
+
+
+
+ The format is 16 bits per pixel, grayscale.
+
+
+
+
+ The format is 16 bits per pixel; 5 bits each are used for the red, green, and blue components. The remaining bit is not used.
+
+
+
+
+ The format is 16 bits per pixel; 5 bits are used for the red component, 6 bits for the green component, and 5 bits for the blue component.
+
+
+
+
+ The format is 16 bits per pixel; 1 bit is used for the alpha component, and 5 bits each are used for the red, green, and blue components.
+
+
+
+
+ The format is 24 bits per pixel; 8 bits each are used for the red, green, and blue components.
+
+
+
+
+ The format is 32 bits per pixel; 8 bits each are used for the red, green, and blue components. The remaining 8 bits are not used.
+
+
+
+
+ The format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components.
+
+
+
+
+ The format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component.
+
+
+
+
+ The format is 48 bits per pixel; 16 bits each are used for the red, green, and blue components.
+
+
+
+
+ The format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components.
+
+
+
+
+ The format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component.
+
+
+
+
+ The PixelOffsetMode enumeration defines how pixels are offset, which specifies the trade-off between rendering speed and quality.
+
+
+
+
+ Pixels are centered on integer coordinates, specifying speed over quality.
+
+
+
+
+ Pixels are centered on integer coordinates, as with PixelOffsetModeNone. Higher speed at the expense of quality is specified.
+
+
+
+
+ Pixels are centered on half-integer coordinates, as with PixelOffsetModeHalf. Higher quality at the expense of speed is specified.
+
+
+
+
+ Pixels are centered on the origin, which means that the pixel covers the area from -0.5 to 0.5 on both the x and y axes and its center is at (0,0).
+
+
+
+
+ Pixels are centered on half-integer coordinates, which means that the pixel covers the area from 0 to 1 on both the x and y axes and its center is at (0.5,0.5). By offsetting pixels during rendering, the render quality can be improved at the cost of render speed.
+
+
+
+
+ The RecordType enumeration defines record types used in EMF+ metafiles.
+
+
+
+
+ This record specifies the start of EMF+ data in the metafile. It MUST be embedded in the first EMF record after the record ([MS-EMF] section 2.3.4.2 record).
+
+
+
+
+ This record specifies the end of EMF+ data in the metafile.
+
+
+
+
+ This record specifies arbitrary private data.
+
+
+
+
+ This record specifies that subsequent EMF records encountered in the metafile SHOULD be processed. EMF records cease being processed when the next EMF+ record is encountered.
+
+
+
+
+ This record is reserved and MUST NOT be used.
+
+
+
+
+ This record is reserved and MUST NOT be used.
+
+
+
+
+ This record is reserved and MUST NOT be used.
+
+
+
+
+ This record specifies an object for use in graphics operations.
+
+
+
+
+ This record clears the output coordinate space and initializes it with a specified background color and transparency.
+
+
+
+
+ This record defines how to fill the interiors of a series of rectangles, using a specified brush.
+
+
+
+
+ This record defines the pen strokes for drawing a series of rectangles.
+
+
+
+
+ This record defines the data to fill the interior of a polygon, using a specified brush.
+
+
+
+
+ This record defines the pen strokes for drawing a series of connected lines.
+
+
+
+
+ This record defines how to fill the interiors of an ellipse, using a specified brush.
+
+
+
+
+ This record defines the pen strokes for drawing an ellipse.
+
+
+
+
+ This record defines how to fill a section of an interior section of an ellipse using a specified brush.
+
+
+
+
+ This record defines pen strokes for drawing a section of an ellipse.
+
+
+
+
+ The record defines pen strokes for drawing an arc of an ellipse.
+
+
+
+
+ This record defines how to fill the interior of a region using a specified brush.
+
+
+
+
+ The record defines how to fill the interiors of the figures defined in a graphics path with a specified brush. A path is an object that defines an arbitrary sequence of lines, curves, and shapes.
+
+
+
+
+ The record defines the pen strokes to draw the figures in a graphics path. A path is an object that defines an arbitrary sequence of lines, curves, and shapes.
+
+
+
+
+ This record defines how to fill the interior of a closed cardinal spline using a specified brush.
+
+
+
+
+ This record defines the pen and strokes for drawing a closed cardinal spline.
+
+
+
+
+ This record defines the pen strokes for drawing a cardinal spline.
+
+
+
+
+ This record defines the pen strokes for drawing a Bezier spline.
+
+
+
+
+ This record defines a scaled object (section 2.2.1.4). An image can consist of either bitmap or metafile data.
+
+
+
+
+ This record defines a scaled EmfPlusImage object inside a parallelogram. An image can consist of either bitmap or metafile data.
+
+
+
+
+ This record defines a text string based on a font, a layout rectangle, and a format.
+
+
+
+
+ This record defines the origin of rendering to the specified horizontal and vertical coordinates. This applies to hatch brushes and to 8 and 16 bits per pixel dither patterns.
+
+
+
+
+ This record defines whether to enable or disable text anti-aliasing. Text anti-aliasing is a method of making lines and edges of character glyphs appear smoother when drawn on an output surface.
+
+
+
+
+ This record defines the process used for rendering text.
+
+
+
+
+ This record sets text contrast according to the specified text gamma value.
+
+
+
+
+ This record defines the interpolation mode of an object according to the specified type of image filtering. The interpolation mode influences how scaling (stretching and shrinking) is performed.
+
+
+
+
+ This record defines the pixel offset mode according to the specified pixel centering value.
+
+
+
+
+ This record defines the compositing mode according to the state of alpha blending, which specifies how source colors are combined with background colors.
+
+
+
+
+ This record defines the compositing quality, which describes the desired level of quality for creating composite images from multiple objects.
+
+
+
+
+ This record saves the graphics state, identified by a specified index, on a stack of saved graphics states. Each stack index is associated with a particular saved state, and the index is used by an record (section 2.3.7.4) to restore the state.
+
+
+
+
+ This record restores the graphics state, identified by a specified index, from a stack of saved graphics states. Each stack index is associated with a particular saved state, and the index is defined by an record (section 2.3.7.5) to save the state.
+
+
+
+
+ This record opens a new graphics state container and specifies a transform for it. Graphics containers are used to retain elements of the graphics state.
+
+
+
+
+ This record opens a new graphics state container.
+
+
+
+
+ This record closes a graphics state container that was previously opened by a begin container operation.
+
+
+
+
+ This record defines the current world space transform in the playback device_context, according to a specified transform matrix.
+
+
+
+
+ This record resets the current world space transform to the identify matrix.
+
+
+
+
+ This record multiplies the current world space by a specified transform matrix.
+
+
+
+
+ This record applies a translation transform to the current world space by specified horizontal and vertical distances.
+
+
+
+
+ This record applies a scaling transform to the current world space by specified horizontal and vertical scale factors.
+
+
+
+
+ This record rotates the current world space by a specified angle.
+
+
+
+
+ This record specifies extra scaling factors for the current world space transform.
+
+
+
+
+ This record resets the current clipping region for the world space to infinity.
+
+
+
+
+ This record combines the current clipping region with a rectangle.
+
+
+
+
+ This record combines the current clipping region with a graphics path.
+
+
+
+
+ This record combines the current clipping region with another graphics region.
+
+
+
+
+ This record applies a translation transform on the current clipping region of the world space.
+
+
+
+
+ This record specifies text output with character positions.
+
+
+
+
+ This record closes any open figures in a path, strokes the outline of the path by using the current pen, and fills its interior by using the current brush.
+
+
+
+
+ This record defines an image effects parameter block that has been serialized into a data buffer.
+
+
+
+
+ This record specifies the state of a graphics device context for a terminal server.
+
+
+
+
+ This record specifies clipping areas in the graphics device context for a terminal server.
+
+
+
+
+ The RegionNodeDataType enumeration defines types of region node data.
+
+
+ Region node data is specified by objects (section 2.2.2.40).
+
+
+
+
+ Specifies a region node with child nodes. A Boolean AND operation SHOULD be applied to the left and right child nodes specified by an object (section 2.2.2.41).
+
+
+
+
+ Specifies a region node with child nodes. A Boolean OR operation SHOULD be applied to the left and right child nodes specified by an object.
+
+
+
+
+ Specifies a region node with child nodes. A Boolean XOR operation SHOULD be applied to the left and right child nodes specified by an object.
+
+
+
+
+ Specifies a region node with child nodes. A Boolean operation, defined as "the part of region 1 that is excluded from region 2", SHOULD be applied to the left and right child nodes specified by an object.
+
+
+
+
+ Specifies a region node with child nodes. A Boolean operation, defined as "the part of region 2 that is excluded from region 1", SHOULD be applied to the left and right child nodes specified by an object.
+
+
+
+
+ Specifies a region node with no child nodes. The RegionNodeData field SHOULD specify a boundary with an object (section 2.2.2.39).
+
+
+
+
+ Specifies a region node with no child nodes. The RegionNodeData field SHOULD specify a boundary with an object (section 2.2.2.42).
+
+
+
+
+ Specifies a region node with no child nodes. The RegionNodeData field SHOULD NOT be present
+
+
+
+
+ Specifies a region node with no child nodes, and its bounds are not defined.
+
+
+
+
+ The SmoothingMode enumeration defines smoothing modes to apply to lines, curves, and the edges of filled areas to make them appear more continuous or sharply defined.
+
+
+
+
+ Specifies default curve smoothing with no anti-aliasing.
+
+
+
+
+ Specifies best performance with no anti-aliasing.
+
+
+
+
+ Specifies best quality with anti-aliasing.
+
+
+
+
+ Performs no curve smoothing and no anti-aliasing.
+
+
+
+
+ Specifies good quality using an 8x4 box filter.
+
+
+
+
+ Specifies better quality using an 8x8 box filter.
+
+
+
+
+ The StringAlignment enumeration defines ways to align strings with respect to a text layout rectangle.
+
+
+
+
+ Specifies that string alignment is toward the origin of the layout rectangle. This can be used to align characters along a line or to align text within a rectangle. For a right-to-left layout rectangle, the origin SHOULD be at the upper right.
+
+
+
+
+ Specifies that alignment is centered between the origin and extent of the layout rectangle.
+
+
+
+
+ Specifies that alignment is to the right side of the layout rectangle.
+
+
+
+
+ The StringDigitSubstitution enumeration defines ways to substitute digits in a string according to a user's locale or language.
+
+
+
+
+ Specifies an implementation-defined substitution scheme.
+
+
+
+
+ Specifies to disable substitutions.
+
+
+
+
+ Specifies substitution digits that correspond with the official national language of the user's locale.
+
+
+
+
+ Specifies substitution digits that correspond to the user's native script or language, which can be different from the official national language of the user's locale.
+
+
+
+
+ The StringFormat flags specify options for graphics text layout, including direction, clipping and font handling. These flags can be combined to specify multiple options.
+
+
+
+
+ If set, the reading order of the string SHOULD be right to left. For horizontal text, this means that characters are read from right to left. For vertical text, this means that columns are read from right to left.
+ If clear, horizontal or vertical text SHOULD be read from left to right.
+
+
+ Graphics text layout is specified by objects
+
+
+
+
+ If set, individual lines of text SHOULD be drawn vertically on the display device.
+ If clear, individual lines of text SHOULD be drawn horizontally, with each new line below the previous line.
+
+
+
+
+ If set, parts of characters MUST be allowed to overhang the text layout rectangle.
+ If clear, characters that overhang the boundaries of the text layout rectangle MUST be repositioned to avoid overhang.
+ An italic, "f" is an example of a character that can have overhanging parts.
+
+
+
+
+ If set, control characters SHOULD appear in the output as representative Unicode glyphs.
+
+
+
+
+ If set, an alternate font SHOULD be used for characters that are not supported in the requested font.
+ If clear, a character missing from the requested font SHOULD appear as a "font missing" character, which MAY be an open square.
+
+
+
+
+ If set, the space at the end of each line MUST be included in measurements of string length.
+ If clear, the space at the end of each line MUST be excluded from measurements of string length.
+
+
+
+
+ If set, a string that extends past the end of the text layout rectangle MUST NOT be wrapped to the next line.
+ If clear, a string that extends past the end of the text layout rectangle MUST be broken at the last word boundary within the bounding rectangle, and the remainder of the string MUST be wrapped to the next line.
+
+
+
+
+ If set, whole lines of text SHOULD be output and SHOULD NOT be clipped by the string's layout rectangle.
+ If clear, text layout SHOULD continue until all lines are output, or until additional lines would not be visible as a result of clipping.
+ This flag can be used either to deny or allow a line of text to be partially obscured by a layout rectangle that is not a multiple of line height. For all text to be visible, a layout rectangle at least as tall as the height of one line.
+
+
+
+
+ If set, text extending outside the string layout rectangle SHOULD be allowed to show.
+ If clear, all text that extends outside the layout rectangle SHOULD be clipped.
+
+
+
+
+ This flag MAY be used to specify an implementation-specific process for rendering text.
+
+
+
+
+ The StringTrimming enumeration defines how to trim characters from a string that is too large for the text layout rectangle.
+
+
+
+
+ Specifies that no trimming is done.
+
+
+
+
+ Specifies that the string is broken at the boundary of the last character that is inside the layout rectangle. This is the default.
+
+
+
+
+ Specifies that the string is broken at the boundary of the last word that is inside the layout rectangle.
+
+
+
+
+ Specifies that the string is broken at the boundary of the last character that is inside the layout rectangle, and an ellipsis (...) is inserted after the character.
+
+
+
+
+ Specifies that the string is broken at the boundary of the last word that is inside the layout rectangle, and an ellipsis (...) is inserted after the word.
+
+
+
+
+ Specifies that the center is removed from the string and replaced by an ellipsis. The algorithm keeps as much of the last portion of the string as possible.
+
+
+
+
+ The TextRenderingHint enumeration defines types of text hinting and anti-aliasing, which affects the quality of text rendering.
+
+
+
+
+ Specifies that each text character SHOULD be drawn using whatever font-smoothing settings have been configured on the operating system.
+
+
+
+
+ Specifies that each text character SHOULD be drawn using its glyph bitmap. Smoothing MAY be used to improve the appearance of character glyph stems and curvature.
+
+
+
+
+ Specifies that each text character SHOULD be drawn using its glyph bitmap. Smoothing is not used.
+
+
+
+
+ Specifies that each text character SHOULD be drawn using its anti-aliased glyph bitmap with smoothing. The rendering is high quality because of anti-aliasing, but at a higher performance cost.
+
+
+
+
+ Specifies that each text character is drawn using its anti-aliased glyph bitmap without hinting. Better quality results from anti-aliasing, but stem width differences MAY be noticeable because hinting is turned off.
+
+
+
+
+ Specifies that each text character SHOULD be drawn using its ClearType glyph bitmap with smoothing. This is the highest-quality text hinting setting, which is used to take advantage of ClearType font features.
+
+
+
+
+ The UnitType enumeration defines units of measurement in different coordinate systems.
+
+
+
+
+ Specifies a unit of logical distance within the world space.
+
+
+
+
+ Specifies a unit of distance based on the characteristics of the physical display.
+ For example, if the display device is a monitor, then the unit is 1 pixel.
+
+
+
+
+ Specifies a unit of 1 pixel.
+
+
+
+
+ Specifies a unit of 1 printer's point, or 1/72 inch.
+
+
+
+
+ Specifies a unit of 1 inch.
+
+
+
+
+ Specifies a unit of 1/300 inch.
+
+
+
+
+ Specifies a unit of 1 millimeter.
+
+
+
+
+ The WrapMode enumeration defines how the pattern from a texture or gradient brush is tiled across a shape or at shape boundaries, when it is smaller than the area being filled.
+
+
+
+
+ Tiles the gradient or texture.
+
+
+
+
+ Reverses the texture or gradient horizontally, and then tiles the texture or gradient.
+
+
+
+
+ Reverses the texture or gradient vertically, and then tiles the texture or gradient.
+
+
+
+
+ Reverses the texture or gradient horizontally and vertically, and then tiles the texture or gradient.
+
+
+
+
+ Fixes the texture or gradient to the object boundary.
+
+
+
+
+ The namespace contains types [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions
+ 2.1 EMF+ Constants
+
+
+
+
+ The namespace contains types [MS-EMFPLUS]
+
+
+
+
+ Base class for bitmap data types.
+
+
+
+
+ The Structure Objects specify containers for data structures that are embedded in EMF+ metafile
+ records.Structure objects, unlike graphics objects, are not explicitly created; they are components
+ that make up more complex structures
+
+
+
+
+ Base Emf+ object type.
+
+
+
+
+ Base class for EMF, WMF, EMF+ objects
+
+
+
+
+ Base class for Brush data types.
+
+
+
+
+ Base class for image data types.
+
+
+
+
+ The base point type.
+
+
+
+
+ The EmfPlusBitmap object specifies a bitmap that contains a graphics image.
+
+
+
+
+ Gets or sets bitmap data
+ BitmapData (variable): Variable-length data that defines the bitmap data object specified in the Type field. The
+ content and format of the data can be different for every bitmap type.
+
+
+ The bitmap data.
+
+
+
+
+ Gets or sets bitmap height
+ Height (4 bytes): A 32-bit signed integer that specifies the height in pixels of the area occupied by the bitmap.
+ If the image is compressed, according to the Type field, this value is undefined and MUST be ignored.
+
+
+ The height.
+
+
+
+
+ Gets or sets pixel format
+ PixelFormat (4 bytes): A 32-bit unsigned integer that specifies the format of the pixels that make up the bitmap
+ image. The supported pixel formats are specified in the enumeration (section
+ 2.1.1.25).
+ If the image is compressed, according to the Type field, this value is undefined and MUST be ignored.
+
+
+ The pixel format.
+
+
+
+
+ Gets or sets stride of the image
+ Stride (4 bytes): A 32-bit signed integer that specifies the byte offset between the beginning of one scan-line and
+ the next. This value is the number of bytes per pixel, which is specified in the PixelFormat field, multiplied by
+ the width in pixels, which is specified in the Width field. The value of this field MUST be a multiple of four.
+ If the image is compressed, according to the Type field, this value is undefined and MUST be ignored.
+
+
+ The stride.
+
+
+
+
+ Gets or sets type of the image
+ Type (4 bytes): A 32-bit unsigned integer that specifies the type of data in the BitmapData field. This value MUST
+ be defined in the enumeration (section 2.1.1.2).
+
+
+ The type.
+
+
+
+
+ Gets or sets image Width
+ Width (4 bytes): A 32-bit signed integer that specifies the width in pixels of the area occupied by the bitmap.
+ If the image is compressed, according to the Type field, this value is undefined and MUST be ignored.
+
+
+ The width.
+
+
+
+
+ The EmfPlusBitmapData object specifies a bitmap image with pixel data.
+
+
+
+
+ Gets or sets the palette colors
+ Colors (variable): An optional object (section 2.2.2.28), which specifies the palette
+ of colors used in the pixel data. This field MUST be present if the I flag is set in the PixelFormat field of the
+ object.
+
+
+ The colors.
+
+
+
+
+ Gets or sets pixel data
+ PixelData (variable): An array of bytes that specify the pixel data. The size and format of this data can be
+ computed from fields in the EmfPlusBitmap object, including the pixel format from the
+ enumeration (section 2.1.1.25).
+
+
+ The pixel data.
+
+
+
+
+ Base object for blend objects
+
+
+
+
+ Gets or sets blend positions
+ An array of PositionCount 32-bit floating-point values
+ that specify proportions of distance along the gradient line.
+ Each element MUST be a number between 0.0 and 1.0 inclusive.
+ For a linear gradient brush, 0.0 represents the starting point
+ and 1.0 represents the ending point. For a path gradient brush,
+ 0.0 represents the midpoint and 1.0 represents an endpoint
+
+
+
+
+ The EmfPlusBlendColors object specifies positions and colors for the blend pattern of a gradient brush.
+
+
+
+
+ Gets or sets an array of PositionCount EmfPlusARGB objects (section 2.2.2.1) that
+ specify colors at the positions defined in the BlendPositions field.
+
+
+
+
+ The EmfPlusBlendFactors object specifies positions and factors for the blend pattern of a gradient brush.
+
+
+
+
+ Gets or sets an array of PositionCount 32-bit floating point values that
+ specify proportions of colors at the positions defined in the BlendPositions field.
+ Each value MUST be a number between 0.0 and 1.0 inclusive.
+
+
+
+
+ The BlurEffect object specifies a decrease in the difference in intensity between pixels in an image.
+
+
+
+
+ The Image Effects Objects specify parameters for graphics image effects, which can be applied to bitmap images
+
+
+
+
+ Gets or sets a 32-bit floating-point number that specifies the blur radius in pixels,
+ which determines the number of pixels involved in calculating the new value of a given pixel.
+ This value MUST be in the range 0.0 through 255.0.
+
+
+
+
+ Gets or sets a 32-bit Boolean value that specifies whether the bitmap expands by
+ an amount equal to the value of the BlurRadius to produce soft edges. This value MUST be
+ one of the following:
+ FALSE
+ 0x00000000
+ The size of the bitmap MUST NOT change, and its soft edges SHOULD be clipped to
+ the size of the BlurRadius.
+ TRUE
+ 0x00000001
+ The size of the bitmap SHOULD expand by an amount equal to the BlurRadius to
+ produce soft edges.
+
+
+
+
+ Base class for boundary objects
+
+
+
+
+ The EmfPlusBoundaryPathData object specifies a graphics path boundary for a gradient brush.
+
+
+
+
+ Gets or sets an EmfPlusPath object (section 2.2.1.6) that specifies the boundary of the brush
+
+
+
+
+ The EmfPlusBoundaryPointData object specifies a closed cardinal spline boundary for a gradient brush
+
+
+
+
+ Gets or sets an array of BoundaryPointCount EmfPlusPointF objects that specify the boundary of the brush.
+
+
+
+
+ The BrightnessContrastEffect object specifies an expansion or contraction of the lightest and darkest areas of an image.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the brightness level. This
+ value MUST be in the range -255 through 255, with effects as follows:
+ -255 ≤ value < 0 As the value decreases, the brightness of the image SHOULD decrease.
+ 0 A value of 0 specifies that the brightness MUST NOT change.
+ 0 < value ≤ 255 As the value increases, the brightness of the image SHOULD increase.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the contrast level. This value
+ MUST be in the range -100 through 100, with effects as follows:
+ -100 ≤ value < 0 As the value decreases, the contrast of the image SHOULD decrease.
+ 0 A value of 0 specifies that the contrast MUST NOT change.
+ 0 < value ≤ 100 As the value increases, the contrast of the image SHOULD increase.
+
+
+
+
+ The EmfPlusBrush object specifies a graphics brush for filling regions.
+
+
+
+
+ The Graphics Objects specify parameters for graphics output. They are part of the playback device context and are persistent during the playback of an EMF+ metafile.
+
+
+
+
+ Gets or sets the version.
+
+
+ An object (section 2.2.2.19) that specifies the version of operating system graphics that was used to create this object.
+
+
+
+
+ Gets or sets the Brush data
+ Variable-length data that defines the brush object specified in the Type field.
+ The content and format of the data can be different for every brush type.
+ EmfPlusHatchBrushData (section 2.2.2.20) (done)
+ EmfPlusLinearGradientBrushData object (section 2.2.2.24) (done)
+ EmfPlusPathGradientBrushData object (section 2.2.2.29) (done)
+ EmfPlusSolidBrushData object (section 2.2.2.43) (done)
+ EmfPlusTextureBrushData object (section 2.2.2.45) (done)
+
+
+ The brush data.
+
+
+
+
+ Gets or sets the type.
+
+
+ A 32-bit unsigned integer that specifies the type of brush,
+ which determines the contents of the BrushData field.
+ This value MUST be defined in the enumeration.
+
+
+
+
+ EmfPlusCharacterRange description
+
+
+
+
+ Gets or sets a 32-bit signed integer that
+ specifies the first position of this range.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies
+ the number of positions in this range
+
+
+
+
+ The ColorBalanceEffect object specifies adjustments to the relative amounts of red, green, and blue in an image.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies a change in the amount of red in the
+ image. This value MUST be in the range -100 through 100, with effects as follows:
+ -100 ≤ value < 0
+ As the value decreases, the amount of red in the image SHOULD decrease and the
+ amount of cyan SHOULD increase.
+ 0 A value of 0 specifies that the amounts of red and cyan MUST NOT change.
+ 0 < value ≤ 100
+ As the value increases, the amount of red in the image SHOULD increase and the
+ amount of cyan SHOULD decrease.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies a change in the amount of
+ green in the image. This value MUST be in the range -100 through 100, with effects as
+ follows:
+ -100 ≤ value < 0
+ As the value decreases, the amount of green in the image SHOULD decrease and
+ the amount of magenta SHOULD increase.
+ 0 A value of 0 specifies that the amounts of green and magenta MUST NOT change.
+ 0 < value ≤ 100
+ As the value increases, the amount of green in the image SHOULD increase and
+ the amount of magenta SHOULD decrease.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies a change in the amount of blue in
+ the image. This value MUST be in the range -100 through 100, with effects as follows:
+ -100 ≤ value < 0
+ As the value decreases, the amount of blue in the image SHOULD decrease and
+ the amount of yellow SHOULD increase.
+ 0 A value of 0 specifies that the amounts of blue and yellow MUST NOT change.
+ 0 < value ≤ 100
+ As the value increases, the amount of blue in the image SHOULD increase and the
+ amount of yellow SHOULD decrease.
+
+
+
+
+ The ColorCurveEffect object specifies one of eight adjustments to the color curve of an image.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the curve adjustment to
+ apply to the colors in bitmap. This value MUST be defined in the CurveAdjustments
+ enumeration (section 2.1.1.7).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the color channel to which
+ the curve adjustment applies. This value MUST be defined in the CurveChannel
+ enumeration (section 2.1.1.8).
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the intensity of the
+ curve adjustment to the color channel specified by CurveChannel. The ranges of meaningful
+ values for this field vary according to the CurveAdjustment value, as follows:
+ Exposure adjustment range:
+ -255 ≤ value < 0 As the value decreases, the exposure of the image SHOULD decrease.
+ 0 A value of 0 specifies that the exposure MUST NOT change.
+ 0 < value ≤ 255 As the value increases, the exposure of the image SHOULD increase.
+ Density adjustment range:
+ -255 ≤ value < 0
+ As the value decreases, the density of the image SHOULD decrease, resulting in
+ a darker image.
+ 0 A value of 0 specifies that the density MUST NOT change.
+ 0 < value ≤ 255
+ As the value increases, the density of the image SHOULD increase.
+ Contrast adjustment range:
+ -100 ≤ value < 0 As the value decreases, the contrast of the image SHOULD decrease.
+ 0 A value of 0 specifies that the contrast MUST NOT change.
+ 0 < value ≤ 100 As the value increases, the contrast of the image SHOULD increase.
+ Highlight adjustment range:
+ -100 ≤ value < 0 As the value decreases, the light areas of the image SHOULD appear darker.
+ 0 A value of 0 specifies that the highlight MUST NOT change.
+ 0 < value ≤ 100 As the value increases, the light areas of the image SHOULD appear lighter.
+ Shadow adjustment range:
+ -100 ≤ value < 0 As the value decreases, the dark areas of the image SHOULD appear darker.
+ 0 A value of 0 specifies that the shadow MUST NOT change.
+ 0 < value ≤ 100 As the value increases, the dark areas of the image SHOULD appear lighter.
+ White saturation adjustment range:
+ 0 — 255 As the value increases, the upper limit of the range of color channel intensities increases.
+ Black saturation adjustment range:
+ 0 — 255 As the value increases, the lower limit of the range of color channel intensities increases.
+
+
+
+
+ The ColorLookupTableEffect object specifies adjustments to the colors in an image.
+
+
+
+
+ Gets or sets an array of 256 bytes that specifies the adjustment for the blue color channel.
+
+
+
+
+ Gets or sets an array of 256 bytes that specifies the adjustment for the green color channel.
+
+
+
+
+ Gets or sets an array of 256 bytes that specifies the adjustment for the red color channel.
+
+
+
+
+ Gets or sets an array of 256 bytes that specifies the adjustment for the alpha color channel.
+
+
+
+
+ The ColorMatrixEffect object specifies an affine transform to be applied to an image.
+
+
+ Bitmap images are specified by EmfPlusBitmap objects (section 2.2.2.2). A color matrix effect is
+ performed by multiplying a color vector by a ColorMatrixEffect object. A 5x5 color matrix can
+ perform a linear transform, including reflection, rotation, shearing, or scaling followed by a translation.
+
+
+
+
+ Gets or sets the Matrix[N][0] of the 5x5 color matrix. This row is used for transforms.
+
+
+ Matrix_0_0 (4 bytes): Matrix[0][0], which is the factor for the color red.
+ Matrix_1_0 (4 bytes): Matrix[1][0].
+ Matrix_2_0 (4 bytes): Matrix[2][0].
+ Matrix_3_0 (4 bytes): Matrix[3][0].
+ Matrix_4_0 (4 bytes): Matrix[4][0]. This value MUST be 0.0.
+
+
+
+
+ Gets or sets the Matrix[N][1] of the 5x5 color matrix. This row is used for transforms.
+
+
+ The matrix n1.
+
+
+ Matrix_0_1 (4 bytes): Matrix[0][1].
+ Matrix_1_1 (4 bytes): Matrix[1][1], which is the factor for the color green.
+ Matrix_2_1 (4 bytes): Matrix[2][1].
+ Matrix_3_1 (4 bytes): Matrix[3][1].
+ Matrix_4_0 (4 bytes): Matrix[4][0]. This value MUST be 0.0.
+
+
+
+
+ Gets or sets the Matrix[N][2] of the 5x5 color matrix. This row is used for transforms.
+
+
+ The matrix n1.
+
+
+ Matrix_0_2 (4 bytes): Matrix[0][2].
+ Matrix_1_2 (4 bytes): Matrix[1][2].
+ Matrix_2_2 (4 bytes): Matrix[2][2], which is the factor for the color blue.
+ Matrix_3_1 (4 bytes): Matrix[3][1].
+ Matrix_4_0 (4 bytes): Matrix[4][0]. This value MUST be 0.0.
+
+
+
+
+ Gets or sets the Matrix[N][3] of the 5x5 color matrix. This row is used for transforms.
+
+
+ The matrix n1.
+
+
+ Matrix_0_3 (4 bytes): Matrix[0][3].
+ Matrix_1_3 (4 bytes): Matrix[1][3].
+ Matrix_2_3 (4 bytes): Matrix[2][3].
+ Matrix_3_3 (4 bytes): Matrix[3][3], which is the factor for the alpha (transparency)
+ Matrix_4_0 (4 bytes): Matrix[4][0]. This value MUST be 0.0.
+
+
+
+
+ Gets or sets the Matrix[N][4] of the 5x5 color matrix. This row is used for color translations.
+
+
+ The matrix n1.
+
+
+ Matrix_0_4 (4 bytes): Matrix[0][4].
+ Matrix_1_4 (4 bytes): Matrix[1][4].
+ Matrix_2_4 (4 bytes): Matrix[2][4].
+ Matrix_3_4 (4 bytes): Matrix[3][4].
+ Matrix_4_4 (4 bytes): Matrix[4][4]. This value SHOULD be 1.0.
+
+
+
+
+ Gets or sets the matrix.
+
+
+ The matrix.
+
+
+
+
+ The EmfPlusCompoundLineData object specifies line and space data for a compound line.
+
+
+
+
+ Gets or sets an array of CompoundLineDataSize floating-point values
+ that specify the compound line of a pen. The elements
+ MUST be in increasing order, and their values MUST be
+ between 0.0 and 1.0, inclusive
+
+
+
+
+ The EmfPlusCompressedImage object specifies an image with compressed data.
+
+
+
+
+ Gets or sets an array of bytes, which specify the compressed image.
+ The type of compression MUST be determined from the data itself.
+
+
+ Bitmaps are specified by EmfPlusBitmap objects (section 2.2.2.2). An EmfPlusCompressedImage
+ object MUST be present in the BitmapData field of an EmfPlusBitmap object if
+ BitmapDataTypeCompressed is specified in its Type field.
+ This object is generic and is used for different types of compressed data, including:
+ Exchangeable Image File Format(EXIF), as specified in [EXIF];
+ Graphics Interchange Format(GIF), as specified in [GIF];
+ Joint Photographic Experts Group(JPEG), as specified in [JFIF];
+ Portable Network Graphics(PNG), as specified in [RFC2083]
+ and[W3C - PNG]; and
+ Tag Image File Format(TIFF), as specified in [RFC3302]
+ and[TIFF].
+
+
+
+
+ Base class for custom line cap types.
+
+
+
+
+ The EmfPlusCustomEndCapData object specifies a custom line cap for the end of a line.
+
+
+
+
+ Gets or sets a custom line cap that defines the shape to draw at the end
+ of a line. It can be any of various shapes, including a
+ square, circle, or diamond
+
+
+
+
+ The EmfPlusCustomLineCap object specifies the shape to use at the ends of a line drawn by a graphics pen.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the type of custom line cap object,
+ which determines the contents of the CustomLineCapData field.
+
+
+
+
+ Gets or sets Variable-length data that defines the custom line cap data object specified in the Type field. The content
+ and format of the data can be different for every custom line cap type.
+
+
+
+
+ The EmfPlusCustomLineCapArrowData object specifies adjustable arrow data for a custom line cap.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies
+ the width of the arrow cap
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies
+ the height of the arrow cap.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the number of pixels between the outline of the arrow
+ cap and the fill of the arrow cap.
+
+
+
+
+ Gets or sets a 32-bit Boolean value that specifies whether the arrow cap is filled. If the arrow cap is
+ not filled, only the outline is drawn
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the value in the LineCap enumeration that indicates the line cap to
+ be used at the start of the line to be drawn
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the value in the LineCap enumeration that indicates the line cap to
+ be used at the end of the line to be drawn
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the value in the LineJoin
+ enumeration that specifies how to join two lines that are drawn by
+ the same pen and whose ends meet. At the intersection of the two line ends,
+ a line join makes the connection look more continuous.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the limit of the
+ thickness of the join on a mitered corner by setting
+ the maximum allowed ratio of miter length to line width
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the amount by
+ which to scale an EmfPlusCustomLineCap object with respect to the width
+ of the graphics pen that is used to draw the lines
+
+
+
+
+ Gets or sets EmfPlusPointF object that is not currently used. It MUST be set to {0.0, 0.0}.
+
+
+
+
+ Gets or sets an EmfPlusPointF object that is not currently used. It MUST be set to {0.0, 0.0}.
+
+
+
+
+ The EmfPlusCustomLineCapData object specifies default data for a custom line cap.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the data in the OptionalData field
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the value from the LineCap enumeration (section 2.1.1.18)
+ on which the custom line cap is based.
+
+
+
+
+ Gets or sets 32-bit floating-point value that specifies the distance between the beginning
+ of the line cap and the end of the line.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the value in the LineCap enumeration that indicates the
+ line cap used at the start of the line to be drawn
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the value in the LineCap enumeration that indicates what
+ line cap is to be used at the end of the line to be drawn.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the value in the LineJoin enumeration
+ (section 2.1.1.19), which specifies how to join two lines that are drawn by
+ the same pen and whose ends meet. At the intersection of the two line ends,
+ a line join makes the connection look more continuous.
+
+
+
+
+ Gets or sets 32-bit floating-point value that contains the limit of the thickness
+ of the join on a mitered corner by setting the maximum allowed ratio
+ of miter length to line width.
+
+
+
+
+ Gets or sets 32-bit floating-point value that specifies the amount by which to
+ scale the custom line cap with respect to the width of the EmfPlusPen
+ object (section 2.2.1.7) that is used to draw the lines.
+
+
+
+
+ Gets or sets EmfPlusPointF object that is not currently used. It MUST be set to {0.0, 0.0}.
+
+
+
+
+ Gets or sets EmfPlusPointF object that is not currently used. It MUST be set to {0.0, 0.0}.
+
+
+
+
+ Gets or sets optional EmfPlusCustomLineCapOptionalData object (section 2.2.2.14)
+ that specifies additional data for the custom graphics line cap. T
+ he specific contents of this field are determined
+ by the value of the CustomLineCapDataFlags field.
+
+
+
+
+ The EmfPlusCustomLineCapOptionalData object specifies optional fill and outline data for a custom line cap.
+
+
+
+
+ Gets or sets optional EmfPlusFillPath object (section 2.2.2.17) that specifies the path for filling a custom
+ graphics line cap. This field MUST be present if the CustomLineCapDataFillPath flag is set in the CustomLineCapDataFlags
+ field of the EmfPlusCustomLineCapData object.
+
+
+
+
+ Gets or sets optional EmfPlusLinePath object (section 2.2.2.26)
+ that specifies the path for outlining a custom graphics line cap. This field MUST be present if the CustomLineCapDataLinePath flag is set in the CustomLineCapDataFlags
+ field of the EmfPlusCustomLineCapData object.
+
+
+
+
+ The EmfPlusCustomStartCapData object specifies a custom line cap for the start of a line.
+
+
+
+
+ Gets or sets custom line cap that defines the shape to draw at the end
+ of a line. It can be any of various shapes, including a
+ square, circle, or diamond
+
+
+
+
+ The EmfPlusDashedLineData object specifies properties of a dashed line for a graphics pen.
+
+
+
+
+ Gets or sets array of DashedLineDataSize floating-point values
+ that specify the lengths of the dashes and spaces in
+ a dashed line
+
+
+
+
+ The EmfPlusFillPath object specifies a graphics path for filling a custom line cap
+
+
+
+
+ Gets or sets EmfPlusPath object (section 2.2.1.6) that specifies the area to fill.
+
+
+
+
+ The EmfPlusFocusScaleData object specifies focus scales for the blend pattern of a path gradient brush.
+
+
+
+
+ Gets or sets a floating-point value that defines the horizontal focus scale.
+ The focus scale MUST be a value between 0.0 and 1.0, exclusive.
+
+
+
+
+ Gets or sets a floating-point value that defines the vertical focus scale.
+ The focus scale MUST be a value between 0.0 and 1.0, exclusive.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of focus scales.
+ This value MUST be 2.
+
+
+
+
+ The EmfPlusFont object specifies properties that determine the appearance of text, including
+ typeface, size, and style.
+
+
+
+
+ Gets or sets a string of Length Unicode characters that contains
+ the name of the font family
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies attributes of the
+ character glyphs that affect the appearance of the font,
+ such as bold and italic. This value MUST be composed of
+ FontStyle flags (section 2.1.2.4).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the units used for
+ the EmSize field. These are typically the units that were
+ employed when designing the font. The value MUST be in the
+ UnitType enumeration (section 2.1.1.33).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the em size of the
+ font in units specified by the SizeUnit field.
+
+
+
+
+ The EmfPlusGraphicsVersion object specifies the version of operating system graphics that is used to create an EMF+
+ metafile.
+
+
+ Graphics versions are vendor-extensible; however, to ensure inter-operability, any such extension MUST be
+ implemented in both clients and servers of EMF+ metafiles.
+
+
+
+
+ Gets a MetafileSignature (20 bits): A value that identifies the type of metafile. The value for an EMF+ metafile is
+ 0xDBC01.
+
+
+
+
+ Gets a GraphicsVersion (12 bits): The version of operating system graphics. This value MUST be defined in the
+ enumeration
+
+
+
+
+ The EmfPlusHatchBrushData object specifies a hatch pattern for a graphics brush.
+
+
+ Graphics brushes are specified by objects (section 2.2.1.1). A hatch brush paints a background and draws a pattern of lines, dots, dashes, squares, and crosshatch lines over this background. The hatch brush defines two colors: one for the background and one for the pattern over the background. The color of the background is called the background color, and the color of the pattern is called the foreground color.
+
+
+
+
+ Gets or sets a 32-bit EmfPlusArgb object that specifies the color used to paint the background of the hatch pattern.
+
+
+
+
+ Gets or sets a 32-bit EmfPlusArgb object that specifies the color used to draw the lines of the hatch pattern.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the brush hatch style. It MUST be defined in the enumeration.
+
+
+
+
+ The HueSaturationLightnessEffect object specifies adjustments to the hue, saturation, and lightness of an image.
+
+
+
+
+ Gets or sets the Specifies the adjustment to the hue.
+ -180 ≤ value < 0 Negative values specify clockwise rotation on the color wheel.
+ 0 A value of 0 specifies that the hue MUST NOT change.
+ 0 < value ≤ 180 Positive values specify counter-clockwise rotation on the color wheel.
+
+
+ The hue level.
+
+
+
+
+ Gets or sets the Specifies the adjustment to the saturation.
+ -100 ≤ value < 0 Negative values specify decreasing saturation.
+ 0 A value of 0 specifies that the saturation MUST NOT change.
+ 0 < value ≤ 100 Positive values specify increasing saturation.
+
+
+ The saturation level.
+
+
+
+
+ Gets or sets the Specifies the adjustment to the lightness.
+ -100 ≤ value < 0 Negative values specify decreasing lightness.
+ 0 A value of 0 specifies that the lightness MUST NOT change.
+ 0 < value ≤ 100 Positive values specify increasing lightness.
+
+
+ The lightness level.
+
+
+
+
+ The EmfPlusImage object specifies a graphics image in the form of a bitmap or metafile.
+
+
+
+
+ Gets or sets the Image data
+ Variable-length data that defines the image data specified
+ in the Type field. The content and format of the data can
+ be different for every image type.
+
+
+
+
+ Gets or sets image type
+ A 32-bit unsigned integer that specifies the type of data
+ in the ImageData field. This value MUST be defined in the
+ ImageDataType enumeration (section 2.1.1.15).
+
+
+
+
+ The EmfPlusImageAttributes object specifies how bitmap image
+ colors are manipulated during rendering.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to handle edge conditions with
+ a value from the WrapMode enumeration (section 2.1.1.34).
+
+
+
+
+ Gets or sets EmfPlusARGB (section 2.2.2.1) object that specifies the edge color to use
+ when the WrapMode value is WrapModeClamp. This color is visible when the
+ source rectangle processed by an EmfPlusDrawImage (section 2.3.4.8) record
+ is larger than the image itself.
+
+
+
+
+ Gets or sets 32-bit signed integer that specifies the object clamping behavior.
+ It is not used until this object is applied to an image being
+ drawn. This value MUST be one of the values defined in the
+ following table.
+
+
+
+
+ The EmfPlusLanguageIdentifier object specifies a language identifier that corresponds to the natural
+ language in a locale, including countries, geographical regions, and administrative districts.
+ Each language identifier is an encoding of a primary language value and sublanguage value.
+
+
+
+
+ Gets or sets the value of the field
+ 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1
+ SubLanguageId| PrimaryLanguageId |
+ SubLanguageId (6 bits): The country, geographic region or administrative district for the natural language specified in the PrimaryLanguageId field.
+ Sublanguage identifiers are vendor-extensible. Vendor-defined sublanguage identifiers MUST be in the range 0x20 to 0x3F, inclusive.
+ PrimaryLanguageId (10 bits): The natural language.
+ Primary language identifiers are vendor-extensible. Vendor-defined primary language identifiers MUST be in the range 0x0200 to 0x03FF, inclusive.
+
+
+
+
+ The LevelsEffect object specifies adjustments to the highlights, midtones, and shadows of an image.
+
+
+
+
+ Gets or sets the Specifies how much to lighten the highlights of an image. The color
+ channel values at the high end of the intensity range are altered more than values near the
+ middle or low ends, which means an image can be lightened without losing the contrast
+ between the darker portions of the image.
+ 0 ≤ value < Specifies that highlights with a percent of intensity above this threshold SHOULD
+ 100 be increased.
+ 100 Specifies that highlights MUST NOT change.
+
+
+ The highlight.
+
+
+
+
+ Gets or sets the Specifies how much to lighten or darken the midtones of an image. Color
+ channel values in the middle of the intensity range are altered more than values near the high
+ or low ends, which means an image can be lightened or darkened without losing the contrast
+ between the darkest and lightest portions of the image.
+ -100 ≤ value < 0 Specifies that midtones are made darker.
+ 0 Specifies that midtones MUST NOT change.
+ 0 < value ≤ 100 Specifies that midtones are made lighter.
+
+
+ The mid tone.
+
+
+
+
+ Gets or sets the Specifies how much to darken the shadows of an image. Color channel
+ values at the low end of the intensity range are altered more than values near the middle or
+ high ends, which means an image can be darkened without losing the contrast between the
+ lighter portions of the image.
+ 0 Specifies that shadows MUST NOT change.
+ 0 < value ≤ 100
+ Specifies that shadows with a percent of intensity below this threshold are made
+ darker.
+
+
+ The shadow.
+
+
+
+
+ The EmfPlusLinearGradientBrushData object specifies a linear gradient for a graphics brush.
+
+
+
+
+ Gets or sets the brush data flags.
+
+
+ BrushDataFlags (4 bytes): A 32-bit unsigned integer that specifies the data in the OptionalData field. This value
+ MUST be composed of (section 2.1.2.1).
+
+
+
+
+ Gets or sets the end color.
+
+
+ An EmfPlusARGB object that specifies the color at the ending boundary point of the linear
+ gradient brush.
+
+
+
+
+ Gets or sets the optional data.
+
+
+ An optional object (section
+ 2.2.2.25) that specifies additional data for the linear gradient brush. The specific contents of this field are
+ determined by the value of the BrushDataFlags field.
+
+
+
+
+ Gets or sets the rect f.
+
+
+ An EmfPlusRectF object (section 2.2.2.39) that specifies the starting and ending points of the
+ gradient line. The upper-left corner of the rectangle is the starting point. The lower-right corner is the ending
+ point.
+
+
+
+
+ Gets or sets the start color.
+
+
+ An EmfPlusARGB object (section 2.2.2.1) that specifies the color at the starting boundary
+ point of the linear gradient brush.
+
+
+
+
+ Gets or sets the wrap mode.
+
+
+ A 32-bit signed integer from the WrapMode enumeration (section 2.1.1.34) that specifies whether
+ to paint the area outside the boundary of the brush. When painting outside the boundary, the wrap mode specifies
+ how the color gradient is repeated.
+
+
+
+
+ The EmfPlusLinearGradientBrushOptionalData object specifies optional data for a linear gradient brush.
+
+
+
+
+ Gets or sets an optional EmfPlusTransformMatrix object (section 2.2.2.47) that specifies a
+ world space to device space transform for the linear gradient brush.
+ This field MUST be present if the BrushDataTransform flag is set in the
+ BrushDataFlags field of the EmfPlusLinearGradientBrushData object.
+
+
+
+
+ Gets or sets an optional blend pattern for the linear gradient brush. If this field is present,
+ it MUST contain either an EmfPlusBlendColors object (section 2.2.2.4),
+ or one or two EmfPlusBlendFactors objects (section 2.2.2.5),
+ but it MUST NOT contain both. The table below shows the valid combinations of
+ EmfPlusLinearGradientBrushData BrushData flags and the corresponding blend patterns:
+ EmfPlusBlendFactors
+
+
+
+
+ Gets the blend pattern as preset colors.
+
+
+ The blend pattern as preset colors.
+
+
+
+
+ Gets the blend pattern as blend factors h.
+
+
+ The blend pattern as blend factors h.
+
+
+
+
+ Gets the blend pattern as blend factors v.
+
+
+ The blend pattern as blend factors v.
+
+
+
+
+ The EmfPlusLinePath object specifies a graphics path for outlining a custom line cap.
+
+
+
+
+ Gets or sets an object that defines the outline.
+
+
+
+
+ The EmfPlusMetafileData object specifies a metafile that contains a graphics image
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the type of metafile that is embedded
+ in the MetafileData field. This value MUST be defined in the MetafileDataType
+ enumeration (section 2.1.1.21).
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the size in bytes of the metafile
+ data in the MetafileData field
+
+
+
+
+ Gets or sets variable-length data that specifies the embedded metafile. The content
+ and format of the data can be different for each metafile type.
+
+
+ Graphics images are specified by EmfPlusImage objects (section 2.2.1.4). An EmfPlusMetafile object MUST be present in the ImageData field of an EmfPlusImage object if ImageTypeMetafile is specified in its Type field.
+ This object is generic and is used for different types of data, including:
+ A WMF metafile [MS-WMF];
+ WMF metafile which can be placed;
+ An EMF metafile [MS-EMF];
+ An EMF+ metafile that specifies graphics operations with EMF+ records only; and
+ An EMF+ metafile that specifies graphics operations with both EMF+ and EMF records.
+ See section 2.2.2 for the specification of additional structure objects.
+
+
+
+
+ The EmfPlusPalette object specifies the colors that make up a palette.
+
+
+
+
+ Gets or sets the palette style flags.
+
+
+ PaletteStyleFlags (4 bytes): A 32-bit unsigned integer that specifies the attributes of data in the palette. This
+ value MUST be composed of flags.
+
+
+
+
+ Gets or sets the palette entries.
+
+
+ PaletteEntries (variable): An array of PaletteCount 32-bit ARGB objects that specify the data in the
+ palette.
+
+
+
+
+ The EmfPlusPath object specifies a series of line and curve segments that form a graphics path. The
+ order for Bezier data points is the start point, control point 1, control point 2, and end point.For
+ more information see[MSDN - DrawBeziers].
+
+
+
+
+ Gets or sets Path points count
+ A 32-bit unsigned integer that specifies how to interpret the points and associated point types that are defined by this object
+
+
+
+
+ Gets or sets array of path points
+ An array of PathPointCount points that specify the path. The type of objects in this array are specified by the PathPointFlags field, as follows:
+ If the P flag is set, the points are relative locations that are specified by EmfPlusPointR objects (section 2.2.2.37).
+ If the P flag is clear and the C flag is set, the points are absolute locations that are specified by EmfPlusPoint objects (section 2.2.2.35).
+ If the P flag is clear and the C flag is clear, the points are absolute locations that are specified by EmfPlusPointF objects (section 2.2.2.36).
+
+
+
+
+ Gets or sets an array that specifies how the points in the PathPoints field are used to draw the path.
+ The type of objects in this array is specified by the R flag in the PathPointFlags field
+
+
+ The path point types.
+
+
+
+
+ The EmfPlusPathGradientBrushData object specifies a path gradient for a graphics brush.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the data in the OptionalData field.
+ This value MUST be composed of BrushData flags (section 2.1.2.1). The following flags are relevant to a path gradient brush:
+
+
+
+
+ Gets or sets 32-bit signed integer from the WrapMode enumeration (section 2.1.1.34) that specifies
+ whether to paint the area outside the boundary of the brush. When painting
+ outside the boundary, the wrap mode specifies how the color gradient is repeated
+
+
+
+
+ Gets or sets EmfPlusARGB object (section 2.2.2.1) that specifies the center color of
+ the path gradient brush, which is the color that appears at the center point of the brush.
+ The color of the brush changes gradually from the boundary
+ color to the center color as it moves from the boundary to the center point.
+
+
+
+
+ Gets or sets EmfPlusARGB object (section 2.2.2.1) that specifies the center color of the path gradient brush,
+ which is the color that appears at the center point of the brush. The color of the
+ brush changes gradually from the boundary color to the center color as it moves
+ from the boundary to the center point.
+
+
+
+
+ Gets or sets array of SurroundingColorCount EmfPlusARGB objects
+ that specify the colors for discrete points on the boundary of the brush.
+
+
+
+
+ Gets or sets the boundary of the path gradient brush, which is specified by either a path or a closed cardinal spline.
+ If the BrushDataPath flag is set in the BrushDataFlags field, this field MUST contain an EmfPlusBoundaryPathData object (section 2.2.2.6);
+ otherwise, this field MUST contain an EmfPlusBoundaryPointData object (section 2.2.2.7).
+
+
+
+
+ Gets or sets an optional EmfPlusPathGradientBrushOptionalData object (section 2.2.2.30) that
+ specifies additional data for the path gradient brush.
+ The specific contents of this field are determined by the value of the BrushDataFlags field.
+
+
+
+
+ The EmfPlusPathGradientBrushOptionalData object specifies optional data for a path gradient brush.
+
+
+
+
+ Gets or sets an optional EmfPlusTransformMatrix object (section 2.2.2.47) that specifies a world space to device space transform for the path gradient brush.
+ This field MUST be present if the BrushDataTransform flag is set in the BrushDataFlags field of the EmfPlusPathGradientBrushData object.
+
+
+
+
+ Gets or sets an optional blend pattern for the path gradient brush. If this field is
+ present, it MUST contain either an EmfPlusBlendColors object (section 2.2.2.4),
+ or an EmfPlusBlendFactors object (section 2.2.2.5), but it MUST NOT contain both.
+ The table below shows the valid combinations of EmfPlusPathGradientBrushData
+ BrushData flags and the corresponding blend patterns:
+
+
+
+
+ Gets or sets an optional EmfPlusFocusScaleData object (section 2.2.2.18) that specifies
+ focus scales for the path gradient brush. This field MUST be present if the
+ BrushDataFocusScales flag is set in the BrushDataFlags field of the
+ EmfPlusPathGradientBrushData object.
+
+
+
+
+ The EmfPlusPathPointType object specifies a type value associated with a point on a graphics
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets or sets 4-bit unsigned integer path point type. This value MUST be
+ defined in the PathPointType enumeration (section 2.1.1.23).
+
+
+
+
+ Gets or sets 4-bit flag field that specifies properties of the path point.
+ This value MUST be one or more of the PathPointType flags (section 2.1.2.6).
+
+
+
+
+ The EmfPlusPathPointTypeRle object specifies type values associated with points on a graphics path using RLE compression.
+ 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1
+ B|1|RunCount | PointType |
+ B (1 bit): If set, the path points are on a Bezier curve.
+ If clear, the path points are on a graphics line.
+ RunCount (6 bits): The run count, which is the number of path points to be associated with the type in the PointType field.
+ PointType (1 byte): An EmfPlusPathPointType object (section 2.2.2.31) that specifies the type to associate with the path points.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets or sets a value indicating whether this is bezier.
+ If set, the path points are on a Bezier curve.
+ If clear, the path points are on a graphics line.
+
+
+ true if bezier; otherwise, false.
+
+
+
+
+ Gets or sets the run count.
+ RunCount (6 bits): The run count, which is the number of path
+ points to be associated with the type in the PointType field
+
+
+ The run count.
+
+
+
+
+ Gets or sets the type of the point.
+ PointType (1 byte): An EmfPlusPathPointType object
+ (section 2.2.2.31) that specifies the type to associate with the path points.
+
+
+ The type of the point.
+
+
+
+
+ The EmfPlusPen object specifies a graphics pen for the drawing of lines.
+
+
+
+
+ Gets or sets This field MUST be set to zero
+
+
+
+
+ Gets or sets an EmfPlusPenData object that specifies properties of the graphics pen
+
+
+
+
+ Gets or sets an EmfPlusBrush object that specifies a graphics brush associated with the pen
+
+
+
+
+ The EmfPlusPenData object specifies properties of a graphics pen.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the data in the
+ OptionalData field. This value MUST be composed of PenData
+ flags (section 2.1.2.7).
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the measuring units
+ for the pen. The value MUST be from the UnitType enumeration
+ (section 2.1.1.33).
+
+
+
+
+ Gets or sets 32-bit floating-point value that specifies the width of the
+ line drawn by the pen in the units specified by the PenUnit
+ field. If a zero width is specified, a minimum value is used,
+ which is determined by the units
+
+
+
+
+ Gets or sets optional EmfPlusPenOptionalData object (section 2.2.2.34)
+ that specifies additional data for the pen object. The specific
+ contents of this field are determined by the value of the
+ PenDataFlags field.
+
+
+
+
+ The EmfPlusPenOptionalData object specifies optional data for a graphics pen
+
+
+
+
+ Gets or sets an optional EmfPlusTransformMatrix object (section 2.2.2.47)
+ that specifies a world space to device space transform for
+ the pen. This field MUST be present if the PenDataTransform
+ flag is set in the PenDataFlags field of the EmfPlusPenData
+ object.
+
+
+
+
+ Gets or sets an optional 32-bit signed integer that specifies the shape for
+ the start of a line in the CustomStartCapData field.
+ This field MUST be present if the PenDataStartCap flag is set
+ in the PenDataFlags field of the EmfPlusPenData object, and the
+ value MUST be defined in the LineCapType enumeration
+ (section 2.1.1.18).
+
+
+
+
+ Gets or sets optional 32-bit signed integer that specifies the shape
+ for the end of a line in the CustomEndCapData field. This
+ field MUST be present if the PenDataEndCap flag is set in the
+ PenDataFlags field of the EmfPlusPenData object, and the value
+ MUST be defined in the LineCapType enumeration
+
+
+
+
+ Gets or sets an optional 32-bit signed integer that specifies how to join
+ two lines that are drawn by the same pen and whose ends meet.
+ This field MUST be present if the PenDataJoin flag is set in
+ the PenDataFlags field of the EmfPlusPenData object, and the
+ value MUST be defined in the LineJoinType enumeration
+ (section 2.1.1.19).
+
+
+
+
+ Gets or sets optional 32-bit floating-point value that specifies the miter
+ limit, which is the maximum allowed ratio of miter length to
+ line width. The miter length is the distance from the
+ intersection of the line walls on the inside the join to
+ the intersection of the line walls outside the join.
+ The miter length can be large when the angle between two
+ lines is small. This field MUST be present if the
+ PenDataMiterLimit flag is set in the PenDataFlags field
+ of the EmfPlusPenData object.
+
+
+
+
+ Gets or sets optional 32-bit signed integer that specifies the style
+ used for lines drawn with this pen object. This field MUST
+ be present if the PenDataLineStyle flag is set in the
+ PenDataFlags field of the EmfPlusPenData object, and the
+ value MUST be defined in the LineStyle enumeration
+ (section 2.1.1.20).
+
+
+
+
+ Gets or sets optional 32-bit signed integer that specifies the shape for
+ both ends of each dash in a dashed line. This field MUST be
+ present if the PenDataDashedLineCap flag is set in the
+ PenDataFlags field of the EmfPlusPenData object, and the
+ value MUST be defined in the DashedLineCapType enumeration
+ (section 2.1.1.10).
+
+
+
+
+ Gets or sets optional 32-bit floating-point value that specifies the
+ distance from the start of a line to the start of the
+ first space in a dashed line pattern. This field MUST be
+ present if the PenDataDashedLineOffset flag is set in the
+ PenDataFlags field of the EmfPlusPenData object.
+
+
+
+
+ Gets or sets optional EmfPlusDashedLineData object (section 2.2.2.16)
+ that specifies the lengths of dashes and spaces in a custom
+ dashed line. This field MUST be present if the PenDataDashedLine
+ flag is set in the PenDataFlags field of the EmfPlusPenData
+ object.
+
+
+
+
+ Gets or sets optional 32-bit signed integer that specifies the
+ distribution of the pen width with respect to the
+ coordinates of the line being drawn. This field MUST
+ be present if the PenDataNonCenter flag is set in the
+ PenDataFlags field of the EmfPlusPenData object, and
+ the value MUST be defined in the PenAlignment
+ enumeration (section 2.1.1.24).
+
+
+
+
+ Gets or sets optional EmfPlusCompoundLineData object (section 2.2.2.9)
+ that specifies an array of floating-point values that define
+ the compound line of a pen, which is made up of parallel lines
+ and spaces. This field MUST be present if the
+ PenDataCompoundLine flag is set in the PenDataFlags field
+ of the EmfPlusPenData object
+
+
+
+
+ Gets or sets optional EmfPlusCustomStartCapData object (section 2.2.2.15)
+ that defines the custom start-cap shape, which is the shape to
+ use at the start of a line drawn with this pen. It can be any
+ of various shapes, such as a square, circle, or diamond.
+ This field MUST be present if the PenDataCustomStartCap flag
+ is set in the PenDataFlags field of the EmfPlusPenData object
+
+
+
+
+ Gets or sets optional EmfPlusCustomEndCapData object (section 2.2.2.11)
+ that defines the custom end-cap shape, which is the shape to
+ use at the end of a line drawn with this pen. It can be any of
+ various shapes, such as a square, circle, or diamond. This
+ field MUST be present if the PenDataCustomEndCap flag is
+ set in the PenDataFlags field of the EmfPlusPenData object
+
+
+
+
+ The EmfPlusRectF object specifies a rectangle's origin, height, and width as 32-bit floating-point values.
+
+
+
+
+ Gets or sets the rectangle.
+
+
+
+
+ The RedEyeCorrectionEffect object specifies areas of an image to which a red-eye correction is applied.
+
+
+
+
+ Gets or sets the A 32-bit signed integer that specifies the number of rectangles in
+ the Areas field.
+
+
+ The number of areas.
+
+
+
+
+ Gets or sets the An array of NumberOfAreas WMF RectL objects, specified in [MS-WMF]
+ section 2.2.2.19. Each rectangle specifies an area of the bitmap image to which the red-eye
+ correction effect SHOULD be applied.
+
+
+ The areas.
+
+
+
+
+ The EmfPlusRegion object specifies line and curve segments that define a non rectilinear shape
+
+
+
+
+ Gets or sets an array of RegionNodeCount+1 EmfPlusRegionNode objects
+ (section 2.2.2.40). Regions are specified as a binary tree
+ of region nodes, and each node MUST either be a terminal
+ node or specify one or two child nodes.
+ RegionNode MUST contain at least one element
+
+
+
+
+ The EmfPlusRegionNode object specifies nodes of a graphics region.
+
+
+
+
+ Gets or sets an optional, variable-length data that defines the region node
+ data object specified in the Type field. The content and
+ format of the data can be different for every region
+ node type. This field MUST NOT be present if the node
+ type is RegionNodeDataTypeEmpty or RegionNodeDataTypeInfinite
+ This object is generic and is used to specify different types of region node data, including:
+ An EmfPlusRegionNodePath object (section 2.2.2.42), for a terminal node;
+ An EmfPlusRectF object (section 2.2.2.39), for a terminal node; and
+ An EmfPlusRegionNodeChildNodes object (section 2.2.2.41), for a non-terminal node.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the type of
+ data in the RegionNodeData field. This value MUST be defined in the
+ RegionNodeDataType enumeration (section 2.1.1.27).
+
+
+
+
+ The EmfPlusRegionNodeChildNodes object specifies child nodes of a graphics region node
+
+
+
+
+ Gets or sets the operation.
+
+
+ The operation.
+
+
+
+
+ Gets or sets an EmfPlusRegionNode object that specifies the left child node of this region node.
+
+
+
+
+ Gets or sets an EmfPlusRegionNode object that defines the right child node of this region node.
+
+
+
+
+ The nodes operation
+
+
+
+
+ The and operation
+
+
+
+
+ The or operation
+
+
+
+
+ The xor operation
+
+
+
+
+ The exclude operation
+
+
+
+
+ The complement operation
+
+
+
+
+ The EmfPlusRegionNodePath object specifies a graphics path for drawing the boundary of a region node.
+
+
+
+
+ Gets or sets an EmfPlusPath object (section 2.2.1.6) that specifies
+ the boundary of the region node.
+
+
+
+
+ The SharpenEffect object specifies an increase in the difference in intensity between pixels in an image.
+
+
+
+
+ Gets or sets A 32-bit floating-point number that specifies the sharpening radius in pixels,
+ which determines the number of pixels involved in calculating the new value of a given pixel.
+ As this value increases, the number of pixels involved in the calculation increases, and the
+ resulting bitmap SHOULD become sharper.
+
+
+ The radius.
+
+
+
+
+ Gets or sets A 32-bit floating-point number that specifies the difference in intensity
+ between a given pixel and the surrounding pixels.
+ 0 Specifies that sharpening MUST NOT be performed.
+ 0 < value ≤ 100
+ As this value increases, the difference in intensity between pixels SHOULD
+ increase.
+
+
+ The amount.
+
+
+
+
+ The EmfPlusSolidBrushData object specifies a solid color for a graphics brush.
+
+
+
+
+ Gets or sets an EmfPlusARGB object (section 2.2.2.1) that specifies the color of the brush.
+
+
+
+
+ The EmfPlusStringFormat object specifies text layout,
+ display manipulations, and language identification
+
+
+
+
+ Gets or sets an EmfPlusLanguageIdentifier object that specifies the
+ language to use for numeric digits in the string.
+ For example, if this string contains Arabic digits,
+ this field MUST contain a language identifier that
+ specifies an Arabic language
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to substitute
+ numeric digits in the string according to a locale or language.
+ This value MUST be defined in the StringDigitSubstitution
+ enumeration (section 2.1.1.30).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the number
+ of spaces between the beginning of a text line and
+ the first tab stop
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the type of
+ processing that is performed on a string when a keyboard
+ shortcut prefix (that is, an ampersand) is encountered.
+ Basically, this field specifies whether to display
+ keyboard shortcut prefixes that relate to text.
+ The value MUST be defined in the HotkeyPrefix
+ enumeration (section 2.1.1.14).
+
+
+
+
+ Gets or sets an EmfPlusLanguageIdentifier object (section 2.2.2.23)
+ that specifies the language to use for the string
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the length
+ of the space to add to the starting position of a string.
+ The default is 1/6 inch; for typographic fonts, the
+ default value is 0.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to
+ align the string vertically in the layout rectangle.
+ This value MUST be defined in the StringAlignment enumeration.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the number of EmfPlusCharacterRange
+ objects (section 2.2.2.8) defined in the StringFormatData field.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to
+ align the string horizontally in the layout rectangle.
+ This value MUST be defined in the StringAlignment
+ enumeration (section 2.1.1.29).
+
+
+
+
+ Gets or sets an EmfPlusStringFormatData object (section 2.2.2.44)
+ that specifies optional text layout data.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies text layout
+ options for formatting, clipping and font handling.
+ This value MUST be composed of StringFormat flags
+ (section 2.1.2.8).
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the number of tab stops
+ defined in the StringFormatData field.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the ratio
+ of the horizontal space allotted to each character in
+ a specified string to the font-defined width of the
+ character. Large values for this property specify ample
+ space between characters; values less than 1 can produce
+ character overlap. The default is 1.03; for typographic
+ fonts, the default value is 1.00.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the length
+ of the space to leave following a string. The default
+ is 1/6 inch; for typographic fonts, the default value is 0.
+
+
+
+
+ Gets or sets specifies how to trim characters from a string that is
+ too large to fit into a layout rectangle. This value
+ MUST be defined in the StringTrimming enumeration (section 2.1.1.31).
+
+
+
+
+ The EmfPlusStringFormatData object specifies tab stops and character positions for a graphics string.
+
+
+
+
+ Gets or sets an optional array of floating-point values that specify
+ the optional tab stop locations for this object. Each tab
+ stop value represents the number of spaces between tab
+ stops or, for the first tab stop, the number of spaces
+ between the beginning of a line of text and the first tab stop.
+ This field MUST be present if the value of the TabStopCount
+ field in the EmfPlusStringFormat object is greater than 0.
+
+
+
+
+ Gets or sets an optional array of RangeCount EmfPlusCharacterRange
+ objects that specify the range of character positions
+ within a string of text. The bounding region is defined
+ by the area of the display that is occupied by a group
+ of characters specified by the character range.
+ This field MUST be present if the value of the RangeCount
+ field in the EmfPlusStringFormat object is greater than 0.
+
+
+
+
+ The EmfPlusTextureBrushData object specifies a texture image for a graphics brush.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the data in the OptionalData field.
+ This value MUST be composed of BrushData flags (section 2.1.2.1).
+ The following flags are relevant to a texture brush
+ BrushDataTransform
+ BrushDataIsGammaCorrected
+ BrushDataDoNotTransform
+
+
+
+
+ Gets or sets a 32-bit signed integer from the WrapMode enumeration (section 2.1.1.34)
+ that specifies how to repeat the texture image across a shape, when the
+ image is smaller than the area being filled.
+
+
+
+
+ Gets or sets an optional EmfPlusTextureBrushOptionalData object (section 2.2.2.46) that
+ specifies additional data for the texture brush. The specific contents of
+ this field are determined by the value of the BrushDataFlags field
+
+
+
+
+ he EmfPlusTextureBrushOptionalData object specifies optional data for a texture brush.
+
+
+ Note Each field of this object is optional and might not be present in the OptionalData field of an
+ EmfPlusTextureBrushData object (section 2.2.2.45), depending on the BrushData flags(section
+ 2.1.2.1) set in its BrushDataFlags field.Although it is not practical to represent every possible
+ combination of fields present or absent, this section specifies their relative order in the object. The
+ implementer is responsible for determining which fields are actually present in a given metafile
+ record, and for unmarshaling the data for individual fields separately and appropriately.
+
+
+
+
+ Gets or sets an optional EmfPlusTransformMatrix object (section 2.2.2.47)
+ that specifies a world space to device space transform for the
+ texture brush. This field MUST be present if the BrushDataTransform
+ flag is set in the BrushDataFlags field of the EmfPlusTextureBrushData object.
+
+
+
+
+ Gets or sets an optional EmfPlusImage object (section 2.2.1.4) that specifies the
+ brush texture. This field MUST be present if the size of the
+ EmfPlusObject record (section 2.3.5.1) that defines this texture
+ brush is large enough to accommodate an EmfPlusImage object in
+ addition to the required fields of the EmfPlusTextureBrushData object
+ and optionally an EmfPlusTransformMatrix object.
+
+
+
+
+ The TintEffect object specifies an addition of black or white to a specified hue in an image.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the hue to which the tint effect is applied.
+ -180 ≤ value < 0
+ The color at a specified counter-clockwise rotation of the color wheel, starting
+ from blue.
+ 0 A value of 0 specifies the color blue on the color wheel.
+ 0 < value ≤ 180
+ The color at a specified clockwise rotation of the color wheel, starting from blue
+
+
+
+
+ Gets or sets A 32-bit signed integer that specifies how much the hue is strengthened or weakened.
+ -100 ≤ value < 0
+ Negative values specify how much the hue is weakened, which equates to the
+ addition of black.
+ 0 A value of 0 specifies that the tint MUST NOT change.
+ 0 < value ≤ 100
+ Positive values specify how much the hue is strengthened, which equates to the
+ addition of white.
+
+
+ The amount.
+
+
+
+
+ The namespace contains types [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions
+ 2.2 EMF+ Objects
+
+
+
+
+ The EmfPlusBeginContainer record opens a new graphics state container and specifies a transform for it.
+
+
+
+
+ The State Record Types specify operations on the state of the playback device context.
+
+
+ Each graphics state container MUST be added to an array of saved graphics containers. The graphics
+ state container is not written to the EMF+ metafile, so its format can be determined by the
+ implementation.
+
+
+
+
+ The Emf+ base record type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a 16-bit unsigned integer that identifies the record type.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that contains information for some records on how
+ the operation is to be performed and on the structure of the record.
+
+
+ The flags.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the 32-bit-aligned number of bytes
+ in the entire record, including the 12-byte record header and record-specific data.
+
+
+ The size.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that MUST define the 32-bit–aligned number of
+ bytes of data in the RecordData field that follows. This number does not include the 12-byte record header.
+
+
+ The size of the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets the page unit.
+
+
+ The page unit.
+
+
+
+
+ Gets or sets an EmfPlusRectF object (section 2.2.2.39) that, with SrcRect, specifies
+ a transform for the container. This transformation results in SrcRect when applied to DestRect.
+
+
+ The dest rect.
+
+
+
+
+ Gets or sets an EmfPlusRectF rectangle that, with DestRect, specifies a transformation
+ for the container. This transformation results in SrcRect when applied to DestRect.
+
+
+ The source rect.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies an index to associate with the
+ graphics state container. The index MUST be referenced by a subsequent
+ EmfPlusEndContainer record (section 2.3.7.3) to close the graphics state container.
+
+
+ The index of the stack.
+
+
+
+
+ The EmfPlusBeginContainerNoParams record opens a new graphics state container.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies an index to associate with the
+ graphics state container. The index MUST be referenced by a subsequent
+ EmfPlusEndContainer record (section 2.3.7.3) to close the graphics state container.
+
+
+ The index of the stack.
+
+
+
+
+ The EmfPlusClear record clears the output coordinate space and initializes it with a background color and transparency
+
+
+
+
+ The drawing record types specify graphics output.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the color.
+ An EmfPlusARGB object (section 2.2.2.1) that defines the color to paint the screen. All colors are specified in [IEC-RGB], unless otherwise noted.
+
+
+ The color.
+
+
+
+
+ The clipping record types specify clipping regions and operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusComment record specifies arbitrary private data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a DataSize-length byte array of private data.
+ bytes of record-specific data that follows.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that is not used. This field SHOULD be set to zero
+ and MUST be ignored upon receipt
+
+
+ The flags.
+
+ value
+
+
+
+ The control record types specify global parameters for EMF+ metafile processing.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusDrawArc record specifies drawing the arc of an ellipse.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the size of the data.
+ A 32-bit unsigned integer that specifies the 32-bit-aligned number of
+ bytes of record-specific data that follows.
+ For this record type, the value MUST be one of the following:
+ 0x00000010 If the C bit is set in the Flags field.
+ 0x00000018 If the C bit is clear in the Flags field.
+
+
+ The size of the data.
+
+ Invalid value
+
+
+
+ Gets or sets a value indicating whether the data contains
+ EmfPlusRectF or EmfPlusRect records
+ This bit indicates whether the data in the RectData field is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if float; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the
+ EMF+ Object Table to draw the arc. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the size.
+ A 32-bit unsigned integer that specifies the 32-bit-aligned number of
+ bytes in the entire record, including the 12-byte record header and
+ record-specific data. For this record type, the value MUST be one of the following:
+ 0x0000001C If the C bit is set in the Flags field.
+ 0x00000024 If the C bit is clear in the Flags field
+
+
+ The size.
+
+ Invalid value
+
+
+
+ Gets or sets the start angle
+ A 32-bit non-negative floating-point value that specifies the angle between
+ the x-axis and the starting point of the arc. Any value is acceptable,
+ but it MUST be interpreted modulo 360, with the result that is used being
+ in the range 0.0 inclusive to 360.0 exclusive.
+
+
+
+
+ Gets or sets the sweep angle
+ A 32-bit floating-point value that specifies the extent of the arc to draw,
+ as an angle in degrees measured from the starting point defined by the
+ StartAngle value. Any value is acceptable, but it MUST be clamped to -360.0
+ to 360.0 inclusive. A positive value indicates that the sweep is defined in
+ a clockwise direction, and a negative value indicates that the sweep is
+ defined in a counter-clockwise direction.
+
+
+
+
+ Gets or sets the rectangle data
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box
+ of the ellipse that is collinear with the arc. This rectangle defines the
+ position, size, and shape of the arc. The type of object in this field is
+ specified by the value of the Flags field.
+
+
+
+
+ The EmfPlusDrawBeziers record specifies drawing a sequence of connected Bezier curves.
+ The order for Bezier data points is the start point, control point 1,
+ control point 2 and end point. For more information see [MSDN-DrawBeziers].
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, PointData specifies absolute locations in the coordinate space with
+ 16-bit integer coordinates. If clear, PointData specifies absolute locations
+ in the coordinate space with 32-bit floating-point coordinates.
+ Note If the Relative flag (below) is set, this flag is undefined and MUST be ignored.
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the PointData is relative.
+ If set, each element in PointData specifies a location in the coordinate space
+ that is relative to the location specified by the previous element in the array.
+ In the case of the first element in PointData, a previous location at coordinates
+ (0,0) is assumed. If clear, PointData specifies absolute locations according
+ to the C flag.
+ Note If this flag is set, the C flag (above) is undefined and MUST be ignored.
+
+
+ true if relative; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the Bezier curves. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the point data
+ An array of Count points that specify the starting, ending, and control points of the Bezier curves. The ending coordinate of one Bezier curve is the starting coordinate of the next. The control points are used for producing the Bezier effect.
+ The type of data in this array is specified by the Flags field, as follows: Data Type Meaning
+ EmfPlusPointR object (section 2.2.2.37)
+ If the P flag is set in the Flags, the points specify relative locations.
+ EmfPlusPointF object (section 2.2.2.36)
+ If the P and C bits are clear in the Flags field, the points specify absolute locations.
+ EmfPlusPoint object (section 2.2.2.35)
+ If the P bit is clear and the C bit is set in the Flags field, the points specify relative locations.
+ A Bezier curve does not pass through its control points. The control points act as
+
+
+
+
+ The EmfPlusDrawClosedCurve record specifies drawing a closed cardinal spline
+
+
+
+
+ Initializes a new instance of the class.
+ RecordType - A 16-bit unsigned integer that identifies this record type as EmfPlusDrawClosedCurve
+ from the RecordType enumeration (section 2.1.1.1). The value MUST be 0x4017.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the closed curve. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets a value indicating whether this is compressed.
+ This bit indicates whether the PointData field specifies compressed data.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit integer coordinates.
+ If clear, PointData specifies absolute locations in the coordinate space with 32-bit floating-point coordinates
+ Note If the Relative flag (below) is set, this flag is undefined and MUST be ignored
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is relative.
+ This bit indicates whether the PointData field specifies relative or absolute locations.
+ If set, each element in PointData specifies a location in the coordinate space that is relative
+ to the location specified by the previous element in the array. In the case of the first
+ element in PointData, a previous location at coordinates (0,0) is assumed. If clear,
+ PointData specifies absolute locations according to the C flag.
+ Note If this flag is set, the Compressed flag (above) is undefined and MUST be ignored
+
+
+ true if relative; otherwise, false.
+
+
+
+
+ Gets or sets the tension
+ A 32-bit floating point number that specifies how tightly the spline
+ bends as it passes through the points. A value of 0 specifies that
+ the spline is a sequence of straight lines. As the value increases,
+ the curve becomes more rounded. For more information, see [SPLINE77] and [PETZOLD].
+
+
+
+
+ Gets or sets the point data
+ An array of Count points that specify the endpoints of the lines that define the spline. In a closed cardinal spline,
+ the curve continues through the last point in the PointData array and connects with the first point in the array.
+ The type of data in this array is specified by the Flags field, as follows: Data Type Meaning
+ EmfPlusPointR object (section 2.2.2.37)
+ If the P flag is set in the Flags, the points specify relative locations.
+ EmfPlusPointF object (section 2.2.2.36)
+ If the P and C bits are set in the Flags field, the points specify absolute locations.
+ EmfPlusPoint object (section 2.2.2.35)
+ If the P bit is clear and the C bit is set in the Flags field, the points specify relative locations.
+
+
+
+
+ The EmfPlusDrawCurve record specifies drawing a cardinal spline
+ NOTE: ObjectID (1 byte): The index of an EmfPlusPen object (section 2.2.1.7)
+ in the EMF+ Object Table to draw the curve. The value MUST be zero to 63, inclusive.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this is compressed.
+ This bit indicates whether the PointData field specifies compressed data.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit integer coordinates.
+ If clear, PointData specifies absolute locations in the coordinate space with 32-bit floating-point coordinates
+ Note If the Relative flag (below) is set, this flag is undefined and MUST be ignored
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the curve. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the tension
+ A 32-bit floating point number that specifies how tightly the spline
+ bends as it passes through the points. A value of 0 specifies that
+ the spline is a sequence of straight lines. As the value increases,
+ the curve becomes more rounded. For more information, see [SPLINE77] and [PETZOLD].
+
+
+
+
+ Gets or sets the segments count
+ A 32-bit unsigned integer that specifies the number of line segments making up the spline.
+
+
+
+
+ Gets or sets an array of either 32-bit signed integers or 32-bit floating-point numbers of
+ Count length that defines coordinate values of the endpoints of the lines to be stroked.
+
+
+
+
+ The EmfPlusDrawDriverString record specifies text output with character positions.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The EMF+ Object Table index of an object (section
+ 2.2.1.3) to render the text. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that specifies either the foreground color of the text or a graphics brush,
+ depending on the value of the S flag in the Flags
+
+
+
+
+ Gets or sets the driver string options flags
+ A 32-bit unsigned integer that specifies the spacing, orientation, and quality of rendering for the string.
+
+
+
+
+ Gets or sets the glyph count
+ A 32-bit unsigned integer that specifies number of glyphs in the string
+
+
+
+
+ Gets or sets the glyph positions array
+ An array of EmfPlusPointF objects (section 2.2.2.36) that specify the output position of each character glyph.
+ There MUST be GlyphCount elements, which have a one-to-one correspondence with the elements in the Glyphs array.
+ Glyph positions are calculated from the position of the first glyph if the DriverStringOptionsRealizedAdvance
+ flag in DriverStringOptions flags is set. In this case, GlyphPos specifies the position of the first glyph only.
+
+
+
+
+ Gets or sets the glyphs array
+ An array of 16-bit values that define the text string to draw.
+ If the DriverStringOptionsCmapLookup flag in the DriverStringOptionsFlags field is set, each value in this
+ array specifies a Unicode character. Otherwise, each value specifies an index to a
+ character glyph in the EmfPlusFont object specified by the ObjectId value in Flags field.
+
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ This bit indicates the type of data in the BrushId field.
+ If set, BrushId specifies the color value in an EmfPlusARGB object
+ (section 2.2.2.1). If clear, BrushId contains the EMF+ Object
+ Table index of an EmfPlusBrush object (section 2.2.1.1).
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets if the matrix present flag
+ A 32-bit unsigned integer that specifies whether a transform matrix is present in the TransformMatrix field
+ 0 - no matrix present. 1 - transform matrix is in TransformMatrix field
+
+
+
+
+ Gets or sets the transform matrix
+ An optional EmfPlusTransformMatrix object (section 2.2.2.47) that specifies the transformation to apply to
+ each value in the text array. The presence of this data is determined from the MatrixPresent field.
+
+
+
+
+ The EmfPlusDrawEllipse record specifies drawing an ellipse.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen (section 2.2.1.7) object in the EMF+
+ Object Table to draw the ellipse. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the rectangle data
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the ellipse.
+
+
+
+
+ The EmfPlusDrawImage record specifies drawing a scaled image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusImage object (section 2.2.1.4) in the EMF+
+ Object Table, which specifies the image to render. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the image attributes identifier
+ A 32-bit unsigned integer that specifies the index of an optional EmfPlusImageAttributes object (section 2.2.1.5) in the EMF+ Object Table.
+
+
+
+
+ Gets or sets the rect data
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the image.
+ The portion of the image specified by the SrcRect field is scaled to fit this rectangle.
+
+
+
+
+ Gets or sets the source rect
+ An EmfPlusRectF object that specifies a portion of the image to be rendered.
+ The portion of the image specified by this rectangle is scaled to fit the destination
+ rectangle specified by the RectData field.
+
+
+
+
+ Gets or sets the source unit
+ 32-bit signed integer that specifies the units of the SrcRect field.
+ It MUST be the UnitTypePixel member of the UnitType enumeration (section 2.1.1.33).
+
+
+
+
+ The EmfPlusDrawImagePoints record specifies drawing a scaled image inside a parallelogram.
+
+
+ An EmfPlusImage can specify either a bitmap or metafile.
+ Colors in an image can be manipulated during rendering. They can be corrected, darkened,
+ lightened, and removed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ This bit indicates whether the PointData field specifies compressed data.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit integer
+ coordinates. If clear, PointData specifies absolute locations in the coordinate space with
+ 32-bit floating-point coordinates.
+ Note If the P flag (below) is set, this flag is undefined and MUST be ignored.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusImage object (section 2.2.1.4) in the EMF+
+ Object Table, which specifies the image to render. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets a value indicating whether [applying an effect].
+ This bit indicates that the rendering of the image includes applying an effect.
+ If set, an object of the Effect class MUST have been specified in an earlier
+ EmfPlusSerializableObject record (section 2.3.5.2).
+
+
+ true if [applying an effect]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is relative.
+ This bit indicates whether the PointData field specifies relative or absolute locations.
+ If set, each element in PointData specifies a location in the coordinate space that is
+ relative to the location specified by the previous element in the array. In the case of the
+ first element in PointData, a previous location at coordinates (0,0) is assumed. If clear,
+ PointData specifies absolute locations according to the C flag.
+ Note If this flag is set, the C flag (above) is undefined and MUST be ignored.
+
+
+ true if relative; otherwise, false.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that contains the index of the
+ optional EmfPlusImageAttributes object (section 2.2.1.5) in the EMF+ Object Table.
+
+
+ The image attributes identifier.
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the units of the SrcRect field. It MUST
+ be the UnitPixel value of the UnitType enumeration (section 2.1.1.33).
+
+
+ The source unit.
+
+
+
+
+ Gets or sets an EmfPlusRectF object (section 2.2.2.39) that defines a portion of the image to be rendered.
+
+
+ The source rect.
+
+
+
+
+ Gets or sets an array of Count points that specify three points of a parallelogram.
+ The three points represent the upper-left, upper-right, and lower-left corners of the
+ parallelogram. The fourth point of the parallelogram is extrapolated from the first three. The
+ portion of the image specified by the SrcRect field SHOULD have scaling and shearing
+ transforms applied if necessary to fit inside the parallelogram.
+
+
+ The point data.
+
+
+
+
+ The EmfPlusDrawlLines record specifies drawing a series of connected lines
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the lines. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets a value indicating whether this is compressed.
+ This bit indicates whether the PointData field specifies compressed data.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit integer coordinates.
+ If clear, PointData specifies absolute locations in the coordinate space with 32-bit floating-point coordinates
+ Note If the Relative flag (below) is set, this flag is undefined and MUST be ignored
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is relative.
+ This bit indicates whether the PointData field specifies relative or absolute locations.
+ If set, each element in PointData specifies a location in the coordinate space that is relative
+ to the location specified by the previous element in the array. In the case of the first
+ element in PointData, a previous location at coordinates (0,0) is assumed. If clear,
+ PointData specifies absolute locations according to the C flag.
+ Note If this flag is set, the Compressed flag (above) is undefined and MUST be ignored
+
+
+ true if relative; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether [closed shape].
+
+
+ true if [closed shape]; otherwise, false.
+
+
+
+
+ Gets or sets the point data
+ An array of Count points that specify the starting and ending points of the lines to be drawn.
+
+
+
+
+ The EmfPlusDrawPath record specifies drawing a graphics path.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The index of the EmfPlusPath object (section 2.2.1.6) to draw, in the
+ EMF+ Object Table. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the pen identifier
+ A 32-bit unsigned integer that specifies an index in the EMF+ Object Table
+ for an EmfPlusPen object (section 2.2.1.7) to use for drawing the EmfPlusPath.
+ The value MUST be zero to 63, inclusive
+
+
+
+
+ The EmfPlusDrawPie record specifies drawing a section of the interior of an ellipse.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the pie. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the start angle
+ A 32-bit, non-negative floating-point value that specifies the angle between the
+ x-axis and the starting point of the pie wedge. Any value is acceptable, but it
+ MUST be interpreted modulo 360, with the result that is used being in the range
+ 0.0 inclusive to 360.0 exclusive.
+
+
+
+
+ Gets or sets the sweep angle
+ A 32-bit floating-point value that specifies the extent of the arc that defines
+ the pie wedge to draw, as an angle in degrees measured from the starting point
+ defined by the StartAngle value. Any value is acceptable, but it MUST be clamped
+ to -360.0 to 360.0 inclusive. A positive value indicates that the sweep is defined
+ in a clockwise direction, and a negative value indicates that the sweep is defined
+ in a counter-clockwise direction.
+
+
+
+
+ Gets or sets the rectangle datas
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the
+ ellipse that contains the pie wedge. This rectangle defines the position, size,
+ and shape of the pie. The type of object in this field is specified by the value
+ of the Flags field.
+
+
+
+
+ The EmfPlusDrawRects record specifies drawing a series of rectangles
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusPen object (section 2.2.1.7) in the EMF+
+ Object Table to draw the rectangles. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the rect data
+ An array of either an EmfPlusRect or EmfPlusRectF objects of Count length that defines the rectangle data.
+
+
+
+
+ The EmfPlusDrawString record specifies text output with string formatting
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object
+ (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of an EmfPlusFont object (section 2.2.1.3) in the EMF+
+ Object Table to render the text. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that specifies the brush, the content of which
+ is determined by the S bit in the Flags field. This definition is used
+ to paint the foreground text color; that is, just the glyphs themselves.
+
+
+
+
+ Gets or sets the format identifier
+ A 32-bit unsigned integer that specifies the index of an optional
+ EmfPlusStringFormat object (section 2.2.1.9) in the EMF+ Object Table.
+ This object specifies text layout information and display manipulations
+ to be applied to a string
+
+
+
+
+ Gets or sets the length
+ 32-bit unsigned integer that specifies the number of characters in the string.
+
+
+
+
+ Gets or sets the layout rect
+ An EmfPlusRectF object (section 2.2.2.39) that defines the bounding area
+ of the destination that will receive the string
+
+
+
+
+ Gets or sets the string data
+ An array of 16-bit Unicode characters that specifies the string to be drawn
+
+
+
+
+ The EmfPlusEndContainer record closes a graphics state container that was previously opened by a begin container operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of a graphics state
+ container. The index MUST must match the value associated with a graphics state container
+ opened by a previous EmfPlusBeginContainer (section 2.3.7.1) or
+ EmfPlusBeginContainerNoParams record (section 2.3.7.2).
+
+
+ The index of the stack.
+
+
+
+
+ The EmfPlusEndOfFile record specifies the end of EMF+ data in the metafile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 16-bit unsigned integer that is not used. This field SHOULD be set to zero
+ and MUST be ignored upon receipt
+
+
+ The flags.
+
+ value
+
+
+
+ The EmfPlusFillClosedCurve record specifies filling the interior of a closed cardinal spline
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object
+ (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is compressed.
+ This bit indicates whether the PointData field specifies compressed data.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit
+ integer coordinates. If clear, PointData specifies absolute locations in the
+ coordinate space with 32-bit floating-point coordinates.
+ ----------------------
+ A "winding" fill operation fills areas according to the "even-odd parity" rule.
+ According to this rule, a test point can be determined to be inside or outside a
+ closed curve as follows: Draw a line from the test point to a point that is distant
+ from the curve. If that line crosses the curve an odd number of times, the test
+ point is inside the curve; otherwise, the test point is outside the curve.
+ ---------------------
+ An "alternate" fill operation fills areas according to the "non-zero" rule.
+ According to this rule, a test point can be determined to be inside or outside
+ a closed curve as follows: Draw a line from a test point to a point that is
+ distant from the curve. Count the number of times the curve crosses the test
+ line from left to right, and count the number of times the curve crosses the
+ test line from right to left. If those two numbers are the same, the test point
+ is outside the curve; otherwise, the test point is inside the curve.
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is winding.
+ This bit indicates how to perform the fill operation.
+ If set, the fill is a "winding" fill. If clear, the fill is an "alternate" fill.
+
+
+ true if winding; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is relative.
+ This bit indicates whether the PointData field specifies relative or absolute locations.
+ If set, each element in PointData specifies a location in the coordinate space that is
+ relative to the location specified by the previous element in the array. In the case
+ of the first element in PointData, a previous location at coordinates (0,0) is assumed.
+ If clear, PointData specifies absolute locations according to the C flag.
+ Note If this flag is set, the C flag (above) is undefined and MUST be ignored.
+
+
+ true if relative; otherwise, false.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that specifies the EmfPlusBrush, the content of which is
+ determined by the S bit in the Flags field. This brush is used to fill the interior
+ of the closed cardinal spline.
+
+
+
+
+ Gets or sets the tension
+ A 32-bit floating point value that specifies how tightly the spline bends as it passes
+ through the points. A value of 0.0 specifies that the spline is a sequence of straight
+ lines. As the value increases, the curve becomes more rounded. For more information,
+ see [SPLINE77] and [PETZOLD].
+
+
+
+
+ Gets or sets the point data
+ An array of Count points that specify the endpoints of the lines that define the spline.
+ In a closed cardinal spline, the curve continues through the last point in the PointData
+ array and connects with the first point in the array
+
+
+
+
+ The EmfPlusFillEllipse record specifies filling the interior of an ellipse
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object
+ (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if this instance is compressed; otherwise, false.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that specifies the brush, the content of which
+ is determined by the S bit in the Flags field. This definition is used
+ to fill the interior of the ellipse
+
+
+
+
+ Gets or sets the rect data
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the ellipse
+
+
+
+
+ Fill path record
+ FLAGS:
+ 16-bit unsigned integer that provides information about how the operation is to be performed,
+ and about the structure of the record.
+ 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1
+ S X X X X X X X | ObjectId |
+ S (1 bit): This bit indicates the type of data in the BrushId field.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1). If clear, BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table.
+ X (1 bit): Reserved and MUST be ignored.
+ ObjectId (1 byte): The index of the EmfPlusPath object (section 2.2.1.6) to fill, in the EMF+ Object Table. The value MUST be zero to 63, inclusive.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1). If clear,
+ BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets the object identifier.
+ The index of the EmfPlusPath object (section 2.2.1.6) to fill, in the
+ EMF+ Object Table. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the Brush ID
+ A 32-bit unsigned integer that defines the brush, the content of which is determined
+ by the S bit in the Flags field.
+
+
+
+
+ The EmfPlusFillPie record specifies filling a section of the interior of an ellipse
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether the PointData is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38).
+ If clear, RectData contains an EmfPlusRectF object (section 2.2.2.39).
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets the start angle
+ A 32-bit, non-negative floating-point value that specifies the angle between the
+ x-axis and the starting point of the pie wedge. Any value is acceptable, but it
+ MUST be interpreted modulo 360, with the result that is used being in the range
+ 0.0 inclusive to 360.0 exclusive.
+
+
+
+
+ Gets or sets the sweep angle
+ A 32-bit floating-point value that specifies the extent of the arc that defines
+ the pie wedge to draw, as an angle in degrees measured from the starting point
+ defined by the StartAngle value. Any value is acceptable, but it MUST be clamped
+ to -360.0 to 360.0 inclusive. A positive value indicates that the sweep is defined
+ in a clockwise direction, and a negative value indicates that the sweep is defined
+ in a counter-clockwise direction.
+
+
+
+
+ Gets or sets the rectangle datas
+ Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the
+ ellipse that contains the pie wedge. This rectangle defines the position, size,
+ and shape of the pie. The type of object in this field is specified by the value
+ of the Flags field.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that defines the brush, the content of which
+ is determined by the S bit in the Flags field.
+
+
+
+
+ The EmfPlusFillPolygon record specifies filling the interior of a polygon.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is compressed.
+ If set, PointData specifies absolute locations in the coordinate space with 16-bit
+ integer coordinates. If clear, PointData specifies absolute locations in the coordinate
+ space with 32-bit floating-point coordinates
+
+
+ true if this instance is compressed; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this instance is relative.
+ If set, each element in PointData specifies a location in the coordinate
+ space that is relative to the location specified by the previous element
+ in the array. In the case of the first element in PointData, a previous
+ location at coordinates (0,0) is assumed. If clear, PointData specifies
+ absolute locations according to the C flag
+
+
+ true if this instance is relative; otherwise, false.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that defines the brush, the content
+ of which is determined by the S bit in the Flags field.
+
+
+
+
+ Gets or sets the point data
+ An array of Count points that define the vertices of the polygon.
+ The first two points in the array specify the first side of the polygon.
+ Each additional point specifies a new side, the vertices of which
+ include the point and the previous point. If the last point and the
+ first point do not coincide, they specify the last side of the polygon.
+
+
+
+
+ The EmfPlusFillRects record specifies filling the interiors of a series of rectangles
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether this is compressed.
+ If set, RectData contains an EmfPlusRect object (section 2.2.2.38). If clear, RectData
+ contains an EmfPlusRectF object (section 2.2.2.39) object
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that defines the brush, the content of which is determined by the S bit in the Flags field.
+
+
+
+
+ Gets or sets the rectangle data
+ An array of either an EmfPlusRect or EmfPlusRectF objects of Count length that defines the rectangle data.
+
+
+
+
+ The EmfPlusFillRegion record specifies filling the interior of a graphics region
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the object identifier.
+ The index of the EmfPlusRegion object (section 2.2.1.8) to fill, in the
+ EMF+ Object Table. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets a value indicating whether this instance is color.
+ If set, BrushId specifies a color as an EmfPlusARGB object (section 2.2.2.1).
+ If clear, BrushId contains the index of an EmfPlusBrush object (section 2.2.1.1) in the EMF+ Object Table.
+
+
+ true if this instance is color; otherwise, false.
+
+
+
+
+ Gets or sets the brush identifier
+ A 32-bit unsigned integer that defines the brush, the content of which is determined by the S bit in the Flags field.
+
+
+
+
+ The EmfPlusGetDC record specifies that subsequent EMF records encountered in the metafile SHOULD be processed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 16-bit unsigned integer that is not used. This field SHOULD be set to zero
+ and MUST be ignored upon receipt
+
+
+ The flags.
+
+ value
+
+
+
+ The EmfPlusHeader record specifies the start of EMF+ data in the metafile.
+ The EmfPlusHeader record MUST be embedded in an EMF EMR_COMMENT_EMFPLUS record,
+ which MUST be the record immediately following the EMF header in the metafile.
+ The EMR_COMMENT_EMFPLUS record is specified in [MS-EMF] section 2.3.3.2.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether [dual mode].
+ If set, this flag indicates that this metafile is "dual-mode", which means
+ that it contains two sets of records, each of which completely specifies
+ the graphics content. If clear, the graphics content is specified by EMF+
+ records, and possibly EMF records that are preceded by an EmfPlusGetDC record.
+ If this flag is set, EMF records alone SHOULD suffice to define the
+ graphics content. Note that whether the "dual-mode" flag is set or not, some
+ EMF records are always present, namely EMF control records and the EMF records
+ that contain EMF+ records. EMF control records are specified in [MS-EMF]
+ section 2.3.4.
+
+
+ true if [dual mode]; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether video display.
+ if set, this flag indicates that the metafile was recorded with a reference device
+ context for a video display. If clear, the metafile was recorded with a reference device
+ context for a printer.
+
+
+ true if [video display]; otherwise, false.
+
+
+
+
+ Gets or sets the EMF plus flags.
+ A 32-bit unsigned integer that contains information about how this metafile was recorded.
+ if 31-st bit of the field is set, this flag indicates that the metafile was recorded with
+ a reference device context for a video display. If clear, the metafile was recorded with
+ a reference device context for a printer.
+
+
+ The EMF plus flags.
+
+
+
+
+ Gets or sets the logical dpi x.
+ A 32-bit unsigned integer that specifies the horizontal resolution for which the metafile
+ was recorded, in units of pixels per inch.
+
+
+ The logical dpi x.
+
+
+
+
+ Gets or sets the logical dpi y.
+ A 32-bit unsigned integer that specifies the vertical resolution for which the metafile
+ was recorded, in units of lines per inch
+
+
+ The logical dpi y.
+
+
+
+
+ Gets or sets the version.
+ An EmfPlusGraphicsVersion object (section 2.2.2.19) that specifies the version of operating
+ system graphics that was used to create this metafile.
+
+
+ The version.
+
+
+
+
+ Gets a value indicating whether this instance is valid.
+
+
+ true if this instance is valid; otherwise, false.
+
+
+
+
+ The EmfPlusMultiplyWorldTransform record multiplies the current world space transform by a
+ specified transform matrix.
+
+
+
+
+ The Terminal Server Record Types specify graphics processing on a terminal server. The following
+ are EMF+ terminal server record types.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether [post multiplied matrix].
+ If set, the transform matrix should be post-multipled. If clear, it should be premultiplied.
+
+
+ true if [post multiplied matrix]; otherwise, false.
+
+
+
+
+ Gets or sets an EmfPlusTransformMatrix object (section 2.2.2.47) that defines the multiplication matrix.
+
+
+ The matrix data.
+
+
+
+
+ The EmfPlusObject record specifies an object for use in graphics operations. The object definition
+ can span multiple records, which is indicated by the value of the Flags field.
+
+
+ The EmfPlusObject record is generic; it is used for all types of objects. Values that are specific to
+ particular object types are contained in the ObjectData field. A conceptual model for managing
+ graphics objects is described in Managing Graphics Objects (section 3.1.2).
+
+
+
+
+ The Object Record Types define reusable graphics objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a value indicating whether this instance is continuable.
+ Indicates that the object definition continues on in the next EmfPlusObject
+ record. This flag is never set in the final record that defines the object.
+
+
+ true if this instance is compressed; otherwise, false.
+
+
+
+
+ Gets or sets the type of the object.
+
+
+ The type of the object.
+
+
+
+
+ Gets or sets the object identifier.
+ The index in the EMF+ Object Table to associate with the object
+ created by this record. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ Gets or sets the total size of the object.
+ If the record is continuable, when the continue bit is set, this field
+ will be present. Continuing objects have multiple EMF+ records starting with
+ EmfPlusContineudObjectRecord. Each EmfPlusContinuedObjectRecord will contain a
+ TotalObjectSize. Once TotalObjectSize number of bytes has been read, the next EMF+
+ record will not be treated as part of the continuing object.
+
+
+ The total size of the object.
+
+
+
+
+ Gets or sets an array of bytes that contains data for the type of object specified in
+ the Flags field. The content and format of the data can be different for each object type. See
+ the individual object definitions in section 2.2.1 for additional information.
+
+
+ The object data.
+
+
+
+
+ The EmfPlusOffsetClip record applies a translation transform on the current clipping region for the world space.
+ The new current clipping region is set to the result of the translation transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the horizontal offset for the translation.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the vertical offset for the translation.
+
+
+
+
+ The Property Record Types specify properties of the playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusResetClip record resets the current clipping region for the world space to infinity.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusResetWorldTransform record resets the current world space transform to the identify matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusRestore record restores the graphics state, identified by a specified index, from a stack of saved graphics states.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the level associated with a
+ graphics state. The level value was assigned to the graphics state by a previous EmfPlusSave record (section 2.3.7.5).
+
+
+ The index of the stack.
+
+
+
+
+ The EmfPlusRotateWorldTransform record performs a rotation on the current world space transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether [post multiplied matrix].
+ If set, the transform matrix should be post-multiplied. If clear, it should be premultiplied.
+
+
+ true if [post multiplied matrix]; otherwise, false.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the angle of rotation in degrees.
+ The operation is performed by constructing a new transform matrix from the following
+ diagram:
+ ---------------------------------
+ | sin(Angle) | cos(Angle) | 0 |
+ | cos(Angle) | sin(Angle) | 0 |
+ ---------------------------------
+ Figure 2: Rotation Transform Matrix
+ The current world space transform is multiplied by this matrix, and the result becomes the
+ new current world space transform. The Flags field determines the order of multiplication.
+
+
+ The angle.
+
+
+
+
+ The EmfPlusSave record saves the graphics state, identified by a specified index, on a stack of saved graphics states.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies a level to associate with the
+ graphics state. The level value can be used by a subsequent EmfPlusRestore record (section
+ 2.3.7.4) operation to retrieve the graphics state.
+
+
+ The index of the stack.
+
+
+
+
+ The EmfPlusScaleWorldTransform record performs a scaling on the current world space transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether [post multiplied matrix].
+ If set, the transform matrix should be post-multipled. If clear, it should be premultiplied.
+
+
+ true if [post multiplied matrix]; otherwise, false.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that defines the horizontal scale factor. The scaling
+ is performed by constructing a new transform matrix from the Sx and Sy field values, as
+ shown in the following table.
+ -----------------
+ | Sx | 0 | 0 |
+ | 0 | Sx | 0 |
+ -----------------
+ Figure 3: Scale Transform Matrix
+
+
+
+
+ Gets or sets a 32-bit floating-point value that defines the vertical scale factor.
+
+
+
+
+ The EmfPlusSerializableObject record defines an image effects parameter block that has been
+ serialized into a data buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 16-bit unsigned integer that is not used. This field SHOULD be set to zero
+ and MUST be ignored upon receipt.
+
+
+ The flags.
+
+
+
+
+ Gets or sets the GUID packet representation value ([MS-DTYP] section 2.3.4.2)
+ for the image effect. This MUST correspond to one of the ImageEffects identifiers (section 2.1.3.1).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size in bytes of the 32-bitaligned Buffer field.
+
+
+
+
+ Gets or sets an array of BufferSize bytes that contain the serialized image effects
+ parameter block that corresponds to the GUID in the ObjectGUID field. This MUST be one of
+ the Image Effects objects (section 2.2.3).
+
+
+
+
+ Gets or sets the image effect.
+
+
+ The image effect.
+
+
+
+
+ The EmfPlusSetAntiAliasMode record specifies the anti-aliasing mode for text output.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the smoothing mode.
+ (7 bits): The smoothing mode value, from the SmoothingMode enumeration (section 2.1.1.28)
+
+
+ The smoothing mode.
+
+
+
+
+ Gets or sets a value indicating whether [anti aliasing].
+ If set, anti-aliasing SHOULD be performed.
+ If clear, anti-aliasing SHOULD NOT be performed.
+
+
+ true if [anti aliasing]; otherwise, false.
+
+
+
+
+ The EmfPlusSetClipPath record combines the current clipping region with a graphics path.
+ The new current clipping region is set to the result of the CombineMode operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the CM (4 bits): Specifies the logical operation for combining two regions. See the
+ CombineMode enumeration (section 2.1.1.4) for the meanings of the values.
+
+
+ The cm.
+
+
+
+
+ Gets or sets the index of an EmfPlusPath object (section 2.2.1.6) in the EMF+
+ Object Table. The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ The EmfPlusSetClipRect record combines the current clipping region with a rectangle.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the CM (4 bits): Specifies the logical operation for combining two regions. See the
+ CombineMode enumeration (section 2.1.1.4) for the meanings of the values.
+
+
+ The cm.
+
+
+
+
+ Gets or sets an EmfPlusRectF object (section 2.2.2.39) that defines the rectangle to
+ use in the CombineMode operation.
+
+
+
+
+ The EmfPlusSetClipRegion record combines the current clipping region with another graphics region.
+ The new current clipping region is set to the result of performing the CombineMode operation on
+ the previous current clipping region and the specified EmfPlusRegion object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the CM (4 bits): Specifies the logical operation for combining two regions. See the
+ CombineMode enumeration (section 2.1.1.4) for the meanings of the values.
+
+
+ The cm.
+
+
+
+
+ Gets or sets the index of an EmfPlusRegion object (section 2.2.1.8) in the EMF+
+ Object Table.The value MUST be zero to 63, inclusive.
+
+
+ The object identifier.
+
+
+
+
+ The EmfPlusSetCompositingMode record specifies how source colors are combined with background colors.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the compositing mode value, from the CompositingMode
+ enumeration (section 2.1.1.5). Compositing can be expressed as the state of alpha
+ blending, which can either be on or off.
+
+
+ The compositing mode.
+
+
+
+
+ The EmfPlusSetCompositingQuality record specifies the desired level of quality for creating
+ composite images from multiple objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the compositing quality.
+
+
+ The compositing quality.
+
+
+
+
+ The EmfPlusSetInterpolationMode record specifies how image scaling, including stretching and shrinking, is performed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the interpolation mode value, from the InterpolationMode enumeration (section 2.1.1.16).
+
+
+ The interpolation mode.
+
+
+
+
+ The EmfPlusSetPageTransform record specifies scaling factors and units for converting page space
+ coordinates to device space coordinates.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets the unit of measure for page space coordinates, from the UnitType
+ enumeration (section 2.1.1.33). This value SHOULD NOT be UnitTypeDisplay or UnitTypeWorld.
+
+
+ The page unit.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the scale factor for converting
+ page space coordinates to device space coordinates.
+
+
+ The page scale.
+
+
+
+
+ The EmfPlusSetPixelOffsetMode record specifies how pixels are centered with respect to the
+ coordinates of the drawing surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the pixel offset mode value, from the PixelOffsetMode
+ enumeration (section 2.1.1.26).
+
+
+ The pixel offset mode.
+
+
+
+
+ The EmfPlusSetRenderingOrigin record specifies the rendering origin for graphics output.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the horizontal coordinate value of the rendering origin.
+
+
+ The x.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the vertical coordinate value of the rendering origin.
+
+
+ The y.
+
+
+
+
+ The EmfPlusSetTextContrast record specifies text contrast according to the gamma correction value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the gamma correction value X 1000, which will be applied to
+ subsequent text rendering operations. The allowable range is 1000 to 2200,
+ representing text gamma values of 1.0 to 2.2.
+
+
+ The text contrast value.
+
+ value
+
+
+
+ The EmfPlusSetTextRenderingHint record specifies the quality of text rendering, including the type of anti-aliasing.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the text rendering hint value, from the
+ TextRenderingHint enumeration (section 2.1.1.32), which specifies the quality to
+ use in subsequent text rendering.
+
+
+ The text rendering hint.
+
+
+
+
+ The EmfPlusSetTSClip record specifies clipping areas in the graphics device context for a terminal server.
+
+
+ The compression scheme for data in this record uses the following algorithm. Each point of each
+ rectangle is encoded in either a single byte or 2 bytes. If the point is encoded in a single byte, the
+ high bit (0x80) of the byte MUST be set, and the value is a signed number represented by the lower
+ 7 bits. If the high bit is not set, then the value is encoded in 2 bytes, with the high-order byte
+ encoded in the 7 lower bits of the first byte, and the low-order byte value encoded in the second byte.
+ Each point is encoded as the difference between the point in the current rect and the point in the
+ previous rect. The bottom point of the rect is encoded as the difference between the bottom
+ coordinate and the top coordinate on the current rect.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether this is compressed.
+ This bit specifies the format of the rectangle data in the rects field. If set, each
+ rectangle is defined in 4 bytes. If clear, each rectangle is defined in 8 bytes.
+
+
+ true if compressed; otherwise, false.
+
+
+
+
+ Gets the number rects.
+ This field specifies the number of rectangles that are defined in the rect field.
+
+
+ The number rects.
+
+
+
+
+ Gets or sets an array of NumRects rectangles that define clipping areas. The format of
+ this data is determined by the C bit in the Flags field.
+
+
+ The rects.
+
+
+
+
+ The EmfPlusSetTSGraphics record specifies the state of a graphics device context for a terminal server.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether [basic vga colors].
+ If set, the palette contains only the basic VGA colors.
+
+
+ true if [basic vga colors]; otherwise, false.
+
+
+
+
+ Gets a value indicating whether [have palette].
+ If set, this record contains an EmfPlusPalette object (section 2.2.2.28) in the
+ Palette field following the graphics state data.
+
+
+ true if [have palette]; otherwise, false.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the quality of line rendering,
+ including the type of line anti-aliasing. It MUST be defined in the SmoothingMode
+ enumeration (section 2.1.1.28).
+
+
+ The anti alias mode.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the quality of text
+ rendering, including the type of text anti-aliasing. It MUST be defined in the
+ TextRenderingHint enumeration (section 2.1.1.32).
+
+
+ The text render hint.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies how source colors are
+ combined with background colors. It MUST be a value in the CompositingMode
+ enumeration (section 2.1.1.5).
+
+
+ The compositing mode.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the degree of
+ smoothing to apply to lines, curves and the edges of filled areas to make them appear more
+ continuous or sharply defined. It MUST be a value in the CompositingQuality enumeration (section 2.1.1.6).
+
+
+ The compositing quality.
+
+
+
+
+ Gets or sets a 16-bit signed integer, which is the horizontal coordinate of the
+ origin for rendering halftoning and dithering matrixes.
+
+
+ The render origin x.
+
+
+
+
+ Gets or sets a 16-bit signed integer, which is the vertical coordinate of the origin
+ for rendering halftoning and dithering matrixes.
+
+
+ The render origin y.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the gamma correction value
+ used for rendering anti-aliased and ClearType text. This value MUST be in the range 0 to 12, inclusive.
+
+
+ The text contrast.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies how scaling, including stretching
+ and shrinking, is performed. It MUST be a value in the FilterType enumeration (section 2.1.1.11).
+
+
+ The type of the filter.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the overall quality of the image
+ and text-rendering process. It MUST be a value in the PixelOffsetMode enumeration (section 2.1.1.26).
+
+
+ The pixel offset.
+
+
+
+
+ Gets or sets an 192-bit EmfPlusTransformMatrix object (section 2.2.2.47) that
+ specifies the world space to device space transforms.
+
+
+ The world to device.
+
+
+
+
+ Gets or sets an optional EmfPlusPalette object.
+
+
+ The palette.
+
+
+
+
+ The EmfPlusSetWorldTransform record sets the world transform according to the values in a
+ specified transform matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets an EmfPlusTransformMatrix object (section 2.2.2.47) that defines the
+ new current world transform.
+
+
+ The matrix data.
+
+
+
+
+ The Transform Record Types specify properties and transforms on coordinate spaces.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EmfPlusTranslateWorldTransform record performs a translation on the current world space transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets a value indicating whether [post multiplied matrix].
+ If set, the transform matrix should be post-multiplied. If clear, it should be premultiplied.
+
+
+ true if [post multiplied matrix]; otherwise, false.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that defines the horizontal distance. The translation
+ is performed by constructing a new world transform matrix from the dx and dy fields
+
+
+ The dx.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that defines the vertical distance value.
+
+
+ The dy.
+
+
+
+
+ The namespace contains types [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions
+ 2.3 EMF+ Records
+
+
+
+
+ The Font Definition records include five record types, listed in the following table. Font definition
+ records specify partial fonts, complete fonts, and font properties.
+
+
+
+
+ The namespace contains types [MS-EMFSPOOL]: Enhanced Metafile Spool Format
+ 2.2 EMFSPOOL Records
+
+
+
+
+ The ArcDirection enumeration is used in setting the drawing direction for arc and rectangle output.
+
+
+
+
+ Figures drawn counterclockwise
+
+
+
+
+ Figures drawn clockwise.
+
+
+
+
+ The ArmStyle enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any style.
+
+
+
+
+ The No fit.
+
+
+
+
+ The Straight arms/horizontal.
+
+
+
+
+ The Straight arms/wedge
+
+
+
+
+ The Straight arms/vertical
+
+
+
+
+ The Straight arms/single-serif.
+
+
+
+
+ The Straight arms/double-serif.
+
+
+
+
+ The Non straight arms/horizontal.
+
+
+
+
+ The Non straight arms/wedge
+
+
+
+
+ The Non straight arms/vertical.
+
+
+
+
+ The Non straight arms/single-serif.
+
+
+
+
+ The Non straight arms/double-serif.
+
+
+
+
+ The BackgroundMode enumeration is used to specify the background mode to be used with text,
+ hatched brushes, and pen styles that are not solid.The background mode determines how to
+ combine the background with foreground text, hatched brushes, and pen styles that are not solid lines.
+
+
+
+
+ The transparent - Background remains untouched.
+
+
+
+
+ The opaque - Background is filled with the current background color before the text, hatched brush, or pen is drawn
+
+
+
+
+ The ColorAdjustment enumeration is used to specify how the output image should be prepared
+ when the stretch mode is HALFTONE.
+
+
+
+
+ Specifies that the negative of the original image SHOULD be displayed.
+
+
+
+
+ The Specifies that a logarithmic process SHOULD be applied to the final
+ density of the output colors. This will increase the color contrast when the luminance is low
+
+
+
+
+ The ColorMatchToTarget enumeration is used to determine whether a color profile has been embedded in the metafile.
+
+
+
+
+ Indicates that a color profile has not been embedded in the metafile.
+
+
+
+
+ Indicates that a color profile has been embedded in the metafile
+
+
+
+
+ The ColorSpace enumeration is used to specify when to turn color proofing on and off, and when to delete transforms.
+
+
+
+
+ Maps colors to the target device's color gamut. This enables color proofing.
+ All subsequent draw commands to the playback device context will render colors as they would appear on the target device.
+
+
+
+
+ Disables color proofing.
+
+
+
+
+ If color management is enabled for the target profile, disables it and deletes the concatenated transform.
+
+
+
+
+ The Contrast enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any contrast
+
+
+
+
+ The No fit.
+
+
+
+
+ None contrast.
+
+
+
+
+ Very low contrast.
+
+
+
+
+ Low contrast.
+
+
+
+
+ The Medium low.
+
+
+
+
+ The Medium.
+
+
+
+
+ The Medium high.
+
+
+
+
+ The High contrast.
+
+
+
+
+ The Very high.
+
+
+
+
+ The DIBColors enumeration defines how to interpret the values in the color table of a DIB.
+
+
+
+
+ The color table contains literal RGB values
+
+
+
+
+ The color table consists of an array of 16-bit indexes into the LogPalette object (section 2.2.17) that is currently defined in the playback device context.
+
+
+
+
+ No color table exists. The pixels in the DIB are indices into the current logical palette in the playback device context.
+
+
+
+
+ The EmrComment enumeration defines the types of data that a public comment record can
+ contain, as specified in section 2.3.3.4.
+
+
+
+
+ This comment record contains a specification of an image in WMF. See [MS-WMF] for more information
+
+
+
+
+ This comment record identifies the beginning of a group of drawing records. It identifies an object within an EMF metafile
+
+
+
+
+ This comment record identifies the end of a group of drawing records. For every EMR_COMMENT_BEGINGROUP
+ record, an EMR_COMMENT_ENDGROUP record MUST be included in the metafile, and they MAY be nested.
+
+
+
+
+ This comment record allows multiple definitions of an image to be included in the metafile.
+ Using this comment, for example, an application can include encapsulated PostScript text as well as an EMF definition of an image.
+
+
+
+
+ This comment record is reserved and MUST NOT be used in an EMF metafile
+
+
+
+
+ This comment record is reserved and MUST NOT be used in an EMF metafile
+
+
+
+
+ The ExtTextOutOptions enumeration specifies parameters that control various aspects of the
+ output of text by EMR_SMALLTEXTOUT(section 2.3.5.37) records and in EmrText objects.
+
+
+
+
+ This bit indicates that the current background color SHOULD be used to fill the rectangle
+
+
+
+
+ This bit indicates that the text SHOULD be clipped to the rectangle.
+
+
+
+
+ This bit indicates that the codes for characters in an output text string are actually
+ indexes of the character glyphs in a TrueType font. Glyph indexes are font-specific,
+ so to display the correct characters on playback, the font that is used MUST be
+ identical to the font used to generate the indexes.
+
+
+
+
+ This bit indicates that the text MUST be laid out in right-to-left reading order,
+ instead of the default left-to-right order. This SHOULD be applied only when the font
+ selected into the playback device context is either Hebrew or Arabic
+
+
+
+
+ This bit indicates that the record does not specify a bounding rectangle for the text output.
+
+
+
+
+ This bit indicates that the codes for characters in an output text string are 8 bits,
+ derived from the low bytes of 16-bit Unicode UTF16-LE character codes,
+ in which the high byte is assumed to be 0.
+
+
+
+
+ This bit indicates that to display numbers, digits appropriate to the locale SHOULD be used
+
+
+
+
+ This bit indicates that to display numbers, European digits SHOULD be used
+
+
+
+
+ This bit indicates that no special operating system processing for glyph placement should be
+ performed on right-to-left strings; that is, all glyph positioning SHOULD be taken care of by
+ drawing and state records in the metafile
+
+
+
+
+ This bit indicates that both horizontal and vertical character displacement values SHOULD be provided
+
+
+
+
+ This bit is reserved and SHOULD NOT be used
+
+
+
+
+ The FamilyType enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any type.
+
+
+
+
+ The No fit.
+
+
+
+
+ Text and display.
+
+
+
+
+ Script flag.
+
+
+
+
+ Decorative flag.
+
+
+
+
+ Pictorial flag.
+
+
+
+
+ The FloodFill enumeration defines values that specify how to determine the area for a flood fill operation.
+
+
+
+
+ The fill area is bounded by a specific color
+
+
+
+
+ The fill area is defined by a specific color. Filling continues outward in all directions
+ as long as the color is encountered. This style is useful for filling areas with multicolored boundaries
+
+
+
+
+ The FormatSignature enumeration defines values that are used to identify the format of embedded data in EMF records.
+
+
+
+
+ The value of this member is the sequence of ASCII characters "FME ",
+ which happens to be the reverse of the string "EMF", and it denotes EMF record data.
+ Note The space character in the string is significant and MUST be present.
+
+
+
+
+ The value of this member is the sequence of ASCII characters "FSPE", which happens
+ to be the reverse of the string "EPSF", and it denotes encapsulated PostScript (EPS) format data.
+
+
+
+
+ The GradientFill enumeration defines the modes for gradient fill operations.
+
+
+
+
+ A mode in which color interpolation is performed along a gradient from the left to the right edges of a rectangle
+
+
+
+
+ A mode in which color interpolation is performed along a gradient from the top to the bottom edges of a rectangle.
+
+
+
+
+ A mode in which color interpolation is performed between vertexes of a triangleS
+
+
+
+
+ The GraphicsMode enumeration is used to specify how to interpret shape data such as rectangle coordinates.
+
+
+
+
+ TrueType text MUST be written from left to right and right side up, even if the rest of the graphics
+ are rotated about the x-axis or y-axis because of the current world-to-device transformation in
+ the playback device context. Only the height of the text SHOULD be scaled. Arcs MUST be drawn using
+ the current arc direction in the playback device context, but they MUST NOT respect the current
+ world-to-device transformation, which might require a rotation along the x-axis or y-axis.
+ The world-to-device transformation SHOULD only be modified by changing the window and viewport
+ extents and origins, using the EMR_SETWINDOWEXTEX (section 2.3.11.30) and EMR_SETVIEWPORTEXTEX
+ (section 2.3.11.28) records, and the EMR_SETWINDOWORGEX (section 2.3.11.31) and EMR_SETVIEWPORTORGEX
+ (section 2.3.11.30) records, respectively. bChanging the transformation directly by using the
+ EMR_MODIFYWORLDTRANSFORM (section 2.3.12.1) or EMR_SETWORLDTRANSFORM (section 2.3.12.2) records MAY NOT be supported.
+ In GM_COMPATIBLE graphics mode, bottom and rightmost edges MUST be excluded when rectangles are drawn
+
+
+
+
+ TrueType text output MUST fully conform to the current world-to-device transformation in the playback device context.
+ Arcs MUST be drawn in the counterclockwise direction in world space; however, both arc control points
+ and the arcs themselves MUST fully respect the current world-to-device transformation in the playback device context.
+ The world-to-device transform MAY be modified directly by using the EMR_MODIFYWORLDTRANSFORM or
+ EMR_SETWORLDTRANSFORM records, or indirectly by changing the window and viewport extents and origins,
+ using the EMR_SETWINDOWEXTEX (section 2.3.11.30) and EMR_SETVIEWPORTEXTEX (section 2.3.11.28) records,
+ and the EMR_SETWINDOWORGEX (section 2.3.11.31) and EMR_SETVIEWPORTORGEX (section 2.3.11.30) records, respectively.
+ In GM_ADVANCED graphics mode, bottom and rightmost edges MUST be included when rectangles are drawn.
+
+
+
+
+ The HatchStyle enumeration is an extension to the WMF HatchStyle enumeration ([MS-WMF] section 2.1.1.12).
+
+
+
+
+ A horizontal hatch.
+
+
+
+
+ A vertical hatch.
+
+
+
+
+ A 45-degree downward, left-to-right hatch.
+
+
+
+
+ A 45-degree upward, left-to-right hatch.
+
+
+
+
+ A horizontal and vertical cross-hatch.
+
+
+
+
+ A 45-degree crosshatch.
+
+
+
+
+ The hatch is not a pattern, but is a solid color.
+
+
+
+
+ The hatch is not a pattern, but is a solid color.
+
+
+
+
+ The hatch is not a pattern, but is a solid color, defined by the current text (foreground) color
+
+
+
+
+ The hatch is not a pattern, but is a dithered color, defined by the current text (foreground) color.
+
+
+
+
+ The hatch is not a pattern, but is a solid color, defined by the current background color
+
+
+
+
+ The hatch is not a pattern, but is a dithered color, defined by the current background color.
+
+
+
+
+ The ICMMode enumeration defines values that specify when to turn on and off ICM.
+
+
+
+
+ Turns off Image Color Management (ICM) in the playback device context. Turns on old-style color correction of halftones
+
+
+
+
+ Turns on ICM in the playback device context. Turns off old-style color correction of halftones.
+
+
+
+
+ Queries the current state of color management in the playback device context.
+
+
+
+
+ Turns off ICM in the playback device context, and turns off old-style color correction of halftones
+
+
+
+
+ The Illuminant enumeration defines values that specify the illuminant value of an image, which
+ determines the standard light source under which the image is viewed so that the color can be adjusted appropriately.
+
+
+
+
+ Device's default. Standard used by output devices.
+
+
+
+
+ Tungsten lamp.
+
+
+
+
+ Noon sunlight.
+
+
+
+
+ Daylight illumination
+
+
+
+
+ Normal print
+
+
+
+
+ Bond paper print.
+
+
+
+
+ Standard daylight. Standard for CRTs and pictures.
+
+
+
+
+ Northern daylight.
+
+
+
+
+ Cool white lamp.
+
+
+
+
+ The Letterform enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any letter form
+
+
+
+
+ The No fit.
+
+
+
+
+ Normal / contact.
+
+
+
+
+ Normal / weighted.
+
+
+
+
+ Normal / boxed.
+
+
+
+
+ Normal / flattened
+
+
+
+
+ Normal / rounded
+
+
+
+
+ Normal / off center.
+
+
+
+
+ Normal / square
+
+
+
+
+ Oblique / contact
+
+
+
+
+ Oblique / weighted.
+
+
+
+
+ Oblique / boxed.
+
+
+
+
+ Oblique / flattened.
+
+
+
+
+ Oblique / rounded.
+
+
+
+
+ Oblique / off center
+
+
+
+
+ Oblique / square
+
+
+
+
+ The Weight.
+
+
+
+
+ The don't care
+
+
+
+
+ The thin weight.
+
+
+
+
+ The extralight weight.
+
+
+
+
+ The ultralight weight.
+
+
+
+
+ The light weight.
+
+
+
+
+ The normal weight.
+
+
+
+
+ The regular weight.
+
+
+
+
+ The medium weight.
+
+
+
+
+ The semibold weight.
+
+
+
+
+ The demibold weight.
+
+
+
+
+ The bold weight.
+
+
+
+
+ The extrabold weight.
+
+
+
+
+ The ultrabold weight.
+
+
+
+
+ The black weight.
+
+
+
+
+ The heavy weight.
+
+
+
+
+ The MapMode enumeration is used to define the unit of measure for transforming page
+ space units into device space units and for defining the orientation of the drawing axes.
+
+
+
+
+ Each logical unit is mapped to one device pixel. Positive x is to the right; positive y is down.
+
+
+
+
+ Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.
+
+
+
+
+ Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is up.
+
+
+
+
+ Each logical unit is mapped to 0.01 inch. Positive x is to the right; positive y is up
+
+
+
+
+ Each logical unit is mapped to 0.001 inch. Positive x is to the right; positive y is up.
+
+
+
+
+ Each logical unit is mapped to one-twentieth of a printer's point
+ (1/1440 inch, also called a "twip"). Positive x is to the right; positive y is up.
+
+
+
+
+ Logical units are mapped to arbitrary units with equally scaled axes; that is, one unit
+ along the x-axis is equal to one unit along the y-axis. The EMR_SETWINDOWEXTEX and
+ EMR_SETVIEWPORTEXTEX records SHOULD be used to specify the units and the orientation
+ of the axes.
+ Adjustments MUST be made as necessary to ensure that the x and y units remain the same size.
+ For example, when the window extent is set, the viewport MUST be adjusted to keep the units isotropic.
+
+
+
+
+ Logical units are mapped to arbitrary units with arbitrarily scaled axes.
+ The EMR_SETWINDOWEXTEX and EMR_SETVIEWPORTEXTEX records SHOULD be used to specify the units,
+ orientation, and scaling.
+
+
+
+
+ The MetafileVersion enumeration defines the interoperability version for EMF metafile.
+
+
+
+
+ Specifies EMF metafile interoperability
+
+
+
+
+ The MidLine enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any midline.
+
+
+
+
+ The No fit.
+
+
+
+
+ Standard / trimmed.
+
+
+
+
+ Standard / pointed.
+
+
+
+
+ Standard / serifed.
+
+
+
+
+ High / trimmed
+
+
+
+
+ High / pointed.
+
+
+
+
+ High / serifed.
+
+
+
+
+ Constant / trimmed.
+
+
+
+
+ Constant / pointed
+
+
+
+
+ Constant / serifed
+
+
+
+
+ Low / trimmed.
+
+
+
+
+ Low / pointed.
+
+
+
+
+ Low / serifed.
+
+
+
+
+ The ModifyWorldTransformMode enumeration defines modes for using specified transform data
+ to modify the world-space to page-space transform that is currently defined in the playback device context.
+
+
+
+
+ Reset the current transform using the identity matrix. In this mode, the specified transform data is ignored
+
+
+
+
+ Multiply the current transform. In this mode, the specified transform data is the left multiplicand, and
+ the transform that is currently defined in the playback device context is the right multiplicand
+
+
+
+
+ Multiply the current transform. In this mode, the specified transform data is the right multiplicand,
+ and the transform that is currently defined in the playback device context is the left multiplicand
+
+
+
+
+ Perform the function of an EMR_SETWORLDTRANSFORM record (section 2.3.12.2).
+
+
+
+
+ The PenStyle enumeration defines the attributes of pens that can be used in graphics operations.
+ A pen style is a combination of pen type, line style, line cap, and line join.
+
+
+
+
+ A pen type that specifies a line with a width of one logical unit and a style that is a solid color
+
+
+
+
+ A line cap that specifies round ends.
+
+
+
+
+ A line join that specifies round joins
+
+
+
+
+ A line style that is a solid color
+
+
+
+
+ A line style that is dashed
+
+
+
+
+ A line style that is dotted.
+
+
+
+
+ A line style that consists of alternating dashes and dots
+
+
+
+
+ A line style that consists of dashes and double dots.
+
+
+
+
+ A line style that is invisible.
+
+
+
+
+ A line style that is a solid color. When this style is specified in a drawing record
+ that takes a bounding rectangle, the dimensions of the figure are shrunk so that
+ it fits entirely in the bounding rectangle, taking into account the width of the pen.
+
+
+
+
+ A line style that is defined by a styling array, which specifies the lengths of dashes and gaps in the line
+
+
+
+
+ A line style in which every other pixel is set. This style is applicable only to a pen type of PS_COSMETIC
+
+
+
+
+ A line cap that specifies square ends.
+
+
+
+
+ A line cap that specifies flat ends.
+
+
+
+
+ A line join that specifies beveled joins.
+
+
+
+
+ A line join that specifies mitered joins when the lengths of the joins are within the current miter
+ length limit that is set in the playback device context.
+ If the lengths of the joins exceed the miter limit, beveled joins are specified
+
+
+
+
+ A pen type that specifies a line with a width that is measured in logical units
+ and a style that can contain any of the attributes of a brush.
+
+
+
+
+ The style mask
+
+
+
+
+ The end cap mask
+
+
+
+
+ The join mask
+
+
+
+
+ The type mask
+
+
+
+
+ The Point enumeration is used to specify how a point is to be used in a drawing call.
+
+
+
+
+ A PT_LINETO or PT_BEZIERTO type can be combined with this value by using the bitwise
+ operator OR to indicate that the corresponding point is the last point in a figure
+ and the figure is closed
+
+
+
+
+ Specifies that a line is to be drawn from the current position to this point,
+ which then becomes the new current position
+
+
+
+
+ Specifies that this point is a control point or ending point for a Bezier curve.
+
+
+
+
+ Specifies that this point starts a disjoint figure. This point becomes the new current position.
+
+
+
+
+ The PolygonFillMode enumeration defines values that specify how to calculate the region of a polygon that is to be filled.
+
+
+
+
+ Selects alternate mode (fills the area between odd-numbered and even-numbered polygon sides on each scan line).
+
+
+
+
+ Selects winding mode (fills any region with a nonzero winding value).
+
+
+
+
+ The Proportion enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any proportion.
+
+
+
+
+ The No fit.
+
+
+
+
+ Old style.
+
+
+
+
+ The modern
+
+
+
+
+ The even width
+
+
+
+
+ The expanded
+
+
+
+
+ The condensed
+
+
+
+
+ The very expanded
+
+
+
+
+ The very condensed
+
+
+
+
+ The mono spaced
+
+
+
+
+ The RecordType enumeration defines values that uniquely identify EMF records.
+ These values are provided in the Type field of each record.
+
+
+
+
+ This record defines the start of the metafile and specifies its characteristics; its contents,
+ including the dimensions of the embedded image; the number of records in the metafile; and the
+ resolution of the device on which the embedded image was created. These values make it possible for the metafile to be device-independent.
+
+
+
+
+ This record defines one or more Bezier curves. Cubic Bezier curves are defined using
+ specified endpoints and control points, and are stroked with the current pen.
+
+
+
+
+ This record defines a polygon consisting of two or more vertexes connected by straight
+ lines. The polygon is outlined by using the current pen and filled by using the current brush
+ and polygon fill mode. The polygon is closed automatically by drawing a line from the last vertex to the first.
+
+
+
+
+ This record defines a series of line segments by connecting the points in the specified
+ array.
+
+
+
+
+ This record defines one or more Bezier curves based upon the current position.
+
+
+
+
+ This record defines one or more straight lines based upon the current position.
+ A line is drawn from the current position to the first point specified by the points field
+ by using the current pen. For each additional line, drawing is performed from the ending
+ point of the previous line to the next point specified by points.
+
+
+
+
+ This record defines multiple series of connected line segments. The line segments are
+ drawn by using the current pen. The figures formed by the segments are not filled. T
+ he current position is neither used nor updated by this record.
+
+
+
+
+ This record defines a series of closed polygons. Each polygon is outlined by using the
+ current pen and filled by using the current brush and polygon fill mode. The polygons defined by this record can overlap.
+
+
+
+
+ This record defines the window extent.
+
+
+
+
+ This record defines the window origin.
+
+
+
+
+ This record defines the viewport extent.
+
+
+
+
+ This record defines the viewport origin.
+
+
+
+
+ This record defines the origin of the current brush.
+
+
+
+
+ This record indicates the end of the metafile.
+
+
+
+
+ This record defines the color of the pixel at the specified logical coordinates.
+
+
+
+
+ This record specifies parameters of the process of matching logical fonts to physical
+ fonts, which is performed by the font mapper.
+
+
+
+
+ This record defines the mapping mode of the playback device context. The mapping mode
+ defines the unit of measure used to transform page space units into device space units,
+ and also defines the orientation of the device's x-axis and y-axis.
+
+
+
+
+ This record defines the background mix mode of the playback device context. The background mix
+ mode is used with text, hatched brushes, and pen styles that are not solid lines.
+
+
+
+
+ This record defines polygon fill mode.
+
+
+
+
+ This record defines binary raster operation mode.
+
+
+
+
+ This record defines bitmap stretch mode.
+
+
+
+
+ This record defines text alignment.
+
+
+
+
+ This record defines the color adjustment values for the playback device context using the specified values.
+
+
+
+
+ This record defines the current text color.
+
+
+
+
+ This record defines the background color.
+
+
+
+
+ This record redefines the clipping region of the playback device context by the specified offsets.
+
+
+
+
+ This record defines coordinates of the new current position, in logical units.
+
+
+
+
+ This record intersects the current clipping region for the playback device context with the
+ current meta region and saves the combined region as the new meta region. The clipping region is reset to a null region.
+
+
+
+
+ This record defines a new clipping region that consists of the existing clipping region
+ minus the specified rectangle.
+
+
+
+
+ This record defines a new clipping region from the intersection of the current clipping
+ region and the specified rectangle.
+
+
+
+
+ This record redefines the viewport for the playback device context using the ratios
+ formed by the specified multiplicands and divisors.
+
+
+
+
+ This record redefines the window for the playback device context using the ratios formed
+ by the specified multiplicands and divisors.
+
+
+
+
+ This record saves the current state of the playback device context by copying data
+ describing selected objects and graphic modes—including the bitmap, brush, palette,
+ font, pen, region, drawing mode, and mapping mode—to a stack of saved device contexts.
+
+
+
+
+ This record restores the playback device context to the specified saved state.
+ The playback device context is restored by popping state information off a stack of
+ saved device contexts created by earlier EMR_SAVEDC (section 2.3.11) records.
+
+
+
+
+ This record defines a two-dimensional linear transformation between world space and
+ page space (for more information, see [MSDN-WRLDPGSPC]) for the playback device context.
+ This transformation can be used to scale, rotate, shear, or translate graphics output.
+
+
+
+
+ This record redefines the world transformation for the playback device context using the specified mode.
+
+
+
+
+ This record adds an object to the playback device context, identifying it by its
+ index in the EMF Object Table (section 3.1.1.1).
+
+
+
+
+ This record defines a logical pen that has the specified style, width, and color.
+ The pen can subsequently be selected into the playback device context and used to draw lines and curves.
+
+
+
+
+ This record defines a logical brush for figure filling in graphics operations.
+
+
+
+
+ This record deletes a graphics object, clearing its index in the EMF Object Table.
+ If the deleted object is selected in the playback device context, the default object
+ for that context property MUST be restored.
+
+
+
+
+ This record defines a line segment of an arc. The line segment is drawn from the
+ current position to the beginning of the arc. The arc is drawn along the perimeter
+ of a circle with the given radius and center. The length of the arc is defined by
+ the given start and sweep angles.
+
+
+
+
+ This record defines an ellipse. The center of the ellipse is the center of the
+ specified bounding rectangle. The ellipse is outlined by using the current pen and
+ is filled by using the current brush.
+
+
+
+
+ This record defines a rectangle. The rectangle is outlined by using the current
+ pen and filled by using the current brush.
+
+
+
+
+ This record defines a rectangle with rounded corners. The rectangle is outlined
+ by using the current pen and filled by using the current brush.
+
+
+
+
+ This record defines an elliptical arc.
+
+
+
+
+ This record defines a chord (a region bounded by the intersection of an ellipse
+ and a line segment, called a secant). The chord is outlined by using the current
+ pen and filled by using the current brush.
+
+
+
+
+ This record defines a pie-shaped wedge bounded by the intersection of an ellipse
+ and two radials. The pie is outlined by using the current pen and filled by using
+ the current brush.
+
+
+
+
+ This record adds a LogPalette (section 2.2.17) object to the playback device
+ context, identifying it by its index in the EMF Object Table.
+
+
+
+
+ This record defines a LogPalette object.
+
+
+
+
+ This record defines RGB (red-green-blue) color values in a range of entries
+ in a LogPalette object.
+
+
+
+
+ This record increases or decreases the size of a logical palette.
+
+
+
+
+ This record maps entries from the current logical palette to the system palette.
+
+
+
+
+ This record fills an area of the display surface with the current brush.
+
+
+
+
+ This record defines a line from the current position up to, but not including,
+ the specified point. It resets the current position to the specified point.
+
+
+
+
+ This record defines an elliptical arc. It resets the current position to the
+ end point of the arc.
+
+
+
+
+ This record defines a set of line segments and Bezier curves.
+
+
+
+
+ This record defines the drawing direction to be used for arc and rectangle
+ operations.
+
+
+
+
+ This record defines the limit for the length of miter joins for the playback
+ device context.
+
+
+
+
+ This record opens a path bracket in the playback device context.
+
+
+ After a path bracket is open, an application can begin processing records to define
+ the points that lie in the path. An application MUST close an open path bracket by
+ processing the EMR_ENDPATH record.
+ When an application processes the EMR_BEGINPATH record, all previous paths
+ MUST be discarded from the playback device context.
+
+
+
+
+ This record closes a path bracket and selects the path defined by the bracket
+ into the playback device context.
+
+
+
+
+ This record closes an open figure in a path.
+
+
+ Processing the EMR_CLOSEFIGURE record MUST close the figure by drawing a line
+ from the current position to the first point of the figure, and then it MUST connect
+ the lines by using the line join style. If a figure is closed by processing the
+ EMR_LINETO record instead of the EMR_CLOSEFIGURE record, end caps are
+ used to create the corner instead of a join. EMR_LINETO is specified in section
+ 2.3.5.13.
+ The EMR_CLOSEFIGURE record SHOULD only be used if there is an open path
+ bracket in the playback device context.
+ A figure in a path is open unless it is explicitly closed by processing this record.
+ Note: A figure can be open even if the current point and the starting point of the
+ figure are the same.
+ After processing the EMR_CLOSEFIGURE record, adding a line or curve to the path
+ MUST start a new figure.
+
+
+
+
+ This record closes any open figures in the current path and fills the path's interior
+ by using the current brush and polygon-filling mode.
+
+
+
+
+ This record closes any open figures in a path, strokes the outline of the path by
+ using the current pen, and fills its interior by using the current brush.
+
+
+
+
+ This record renders the specified path by using the current pen.
+
+
+
+
+ This record transforms any curve in the path that is selected into the playback device
+ context, turning each curve into a sequence of lines.
+
+
+
+
+ This record redefines the current path as the area that would be painted if the path
+ were stroked using the pen currently selected into the playback device context.
+
+
+
+
+ This record defines the current path as a clipping region for the playback device
+ context, combining the new region with any existing clipping region using the specified mode.
+
+
+
+
+ This record aborts a path bracket or discards the path from a closed path bracket.
+
+
+
+
+ This record specifies arbitrary private data.
+
+
+
+
+ This record fills the specified region by using the specified brush.
+
+
+
+
+ This record draws a border around the specified region using the specified brush.
+
+
+
+
+ This record inverts the colors in the specified region.
+
+
+
+
+ This record paints the specified region by using the brush currently selected into
+ the playback device context.
+
+
+
+
+ This record combines the specified region with the current clip region using the
+ specified mode.
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern, according to a specified raster operation.
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern, according to a specified raster
+ operation, stretching or compressing the output to fit the dimensions of the destination, if necessary.
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern and with the application of a
+ color mask bitmap, according to specified foreground and background raster operations.
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination
+ parallelogram, with the application of a color mask bitmap.
+
+
+
+
+ This record specifies a block transfer of pixels from specified scan lines of a source
+ bitmap to a destination rectangle.
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern, according to a specified raster operation,
+ stretching or compressing the output to fit the dimensions of the destination, if necessary.
+
+
+
+
+ This record defines a logical font that has the specified characteristics. The font
+ can subsequently be selected as the current font for the playback device context.
+
+
+
+
+ This record draws an ASCII text string using the current font and text colors.Note
+ EMR_EXTTEXTOUTA SHOULD be emulated with an EMR_EXTTEXTOUTW record (section 2.3.5.8).
+ This requires the ASCII text string in the EmrText object to be converted to Unicode UTF16-LE encoding.
+
+
+
+
+ This record draws a Unicode text string using the current font and text colors.
+
+
+
+
+ This record defines one or more Bezier curves. The curves are drawn using the current pen.
+
+
+
+
+ This record defines a polygon consisting of two or more vertexes connected by straight lines.
+ The polygon is outlined by using the current pen and filled by using the current brush and polygon
+ fill mode. The polygon is closed automatically by drawing a line from the last vertex to the first.
+
+
+
+
+ This record defines a series of line segments by connecting the points in the specified array.
+
+
+
+
+ This record defines one or more Bezier curves based on the current position.
+
+
+
+
+ This record defines one or more straight lines based upon the current position.
+ A line is drawn from the current position to the first point specified by the Points
+ field by using the current pen. For each additional line, drawing is performed from the
+ ending point of the previous line to the next point specified by Points.
+
+
+
+
+ This record defines multiple series of connected line segments.
+
+
+
+
+ This record defines a series of closed polygons. Each polygon is outlined by using
+ the current pen and filled by using the current brush and polygon fill mode. The polygons
+ specified by this record can overlap.
+
+
+
+
+ This record defines a set of line segments and Bezier curves.
+
+
+
+
+ This record defines a logical brush with the specified bitmap pattern. The bitmap can
+ be a device-independent bitmap (DIB) section bitmap or it can be a device-dependent bitmap.
+
+
+
+
+ This record defines a logical brush that has the pattern specified by the DIB.
+
+
+
+
+ This record defines a logical cosmetic or geometric pen that has the specified style,
+ width, and brush attributes.
+
+
+
+
+ This record draws one or more ASCII text strings using the current font and text colors.
+ Note EMR_POLYTEXTOUTA SHOULD be emulated with a series of EMR_EXTTEXTOUTW records, one per string
+
+
+
+
+ This record draws one or more Unicode text strings using the current font and text colors.
+ Note EMR_POLYTEXTOUTW SHOULD be emulated with a series of EMR_EXTTEXTOUTW records, one per string
+
+
+
+
+ This record specifies the mode of Image Color Management (ICM) for graphics operations.
+
+
+
+
+ This record creates a logical color space object from a color profile with a name consisting of ASCII characters
+
+
+
+
+ This record defines the current logical color space object for graphics operations.
+
+
+
+
+ This record deletes a logical color space object. Note An EMR_DELETEOBJECT record SHOULD be
+ used instead of EMR_DELETECOLORSPACE to delete a logical color space object
+
+
+
+
+ This record specifies an OpenGL function.
+
+
+
+
+ This record specifies an OpenGL function with a bounding rectangle for output.
+
+
+
+
+ This record specifies the pixel format to use for graphics operations
+
+
+
+
+ This record passes arbitrary information to the driver. The intent is that the information
+ will result in drawing being done.
+
+
+
+
+ This record passes arbitrary information to the driver. The intent is that the information
+ will not result in drawing being done.
+
+
+
+
+ This record outputs a string.
+
+
+
+
+ This record forces the font mapper to match fonts based on their UniversalFontId in
+ preference to their LogFont information.
+
+
+
+
+ This record passes arbitrary information to the given named driver.
+
+
+
+
+ This record specifies how to correct the entries of a logical palette object using Windows
+ Color System (WCS) 1.0 values
+
+
+
+
+ This record specifies a color profile in a file with a name consisting of ASCII characters,
+ for graphics output.
+
+
+
+
+ This record specifies a color profile in a file with a name consisting of Unicode characters,
+ for graphics output
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination rectangle,
+ including alpha transparency data, according to a specified blending operation.
+
+
+
+
+ This record specifies the order in which text and graphics are drawn
+
+
+
+
+ This record specifies a block transfer of pixels from a source bitmap to a destination rectangle,
+ treating a specified color as transparent, stretching or compressing the output to fit the dimensions of the destination, if necessary
+
+
+
+
+ This record specifies filling rectangles or triangles with gradients of color
+
+
+
+
+ This record sets the UniversalFontIds of linked fonts to use during character lookup.
+
+
+
+
+ This record specifies the amount of extra space to add to break characters for justification
+ purposes.
+
+
+
+
+ This record specifies whether to perform color matching with a color profile that is specified in a file with a name consisting of Unicode characters.
+
+
+
+
+ This record creates a logical color space object from a color profile with a name consisting of Unicode characters
+
+
+
+
+ The RegionMode enumeration defines values that are used with EMR_SELECTCLIPPATH and EMR_EXTSELECTCLIPRGN,
+ specifying the current path or a new region that is being combined with the current clip region.
+
+
+
+
+ The new clipping region includes the intersection (overlapping areas) of the current clipping region and the current path (or new region).
+
+
+
+
+ The new clipping region includes the union (combined areas) of the current clipping region and the current path (or new region).
+
+
+
+
+ The new clipping region includes the union of the current clipping region and the current path (or new region) but without the overlapping areas
+
+
+
+
+ The new clipping region includes the areas of the current clipping region with those of the current path (or new region) excluded.
+
+
+
+
+ The new clipping region is the current path (or the new region).
+
+
+
+
+ The SerifType enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces
+
+
+
+
+ The Any Style.
+
+
+
+
+ The No fit Style.
+
+
+
+
+ The Cove Style.
+
+
+
+
+ The Obtuse cove Style.
+
+
+
+
+ The Square cove Style.
+
+
+
+
+ The Obtuse square cove Style.
+
+
+
+
+ The Square Style.
+
+
+
+
+ The Thin Style.
+
+
+
+
+ The Bone Style.
+
+
+
+
+ The Exaggerated Style.
+
+
+
+
+ The Triangle Style.
+
+
+
+
+ The Normal sans Style.
+
+
+
+
+ The Obtuse sans Style.
+
+
+
+
+ The Perp sans Style.
+
+
+
+
+ The Flared Style.
+
+
+
+
+ The Rounded Style.
+
+
+
+
+ The SerifType enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any type.
+
+
+
+
+ The No fit Type.
+
+
+
+
+ The The cove Type.
+
+
+
+
+ The Obtuse cove Type.
+
+
+
+
+ The Obtuse cove Type.
+
+
+
+
+ The Obtuse square cove Type.
+
+
+
+
+ The The Square Type.
+
+
+
+
+ The The thin Type.
+
+
+
+
+ The The bone Type.
+
+
+
+
+ The The exaggerated Type.
+
+
+
+
+ The The triangle Type.
+
+
+
+
+ The Normal sans Type.
+
+
+
+
+ The Obtuse sans Type.
+
+
+
+
+ The Perp sans Type.
+
+
+
+
+ The The Flared Type.
+
+
+
+
+ The The Rounded Type.
+
+
+
+
+ The StockObject enumeration specifies the indexes of predefined logical graphics objects
+ that can be used in graphics operations.The specific structures of stock objects are
+ implementation-dependent; however, the properties of stock objects SHOULD be equivalent to
+ the properties of explicitly created objects of the same type.
+ These properties are specified where possible for the stock objects defined in this enumeration.
+
+
+
+
+ A white, solid-color brush that is equivalent to a logical brush
+ (LogBrushEx object, section 2.2.12) with the following properties:
+ BrushStyle: BS_SOLID (WMF BrushStyle enumeration, [MS-WMF] section 2.1.1.4)
+ Color: 0x00FFFFFF (WMF ColorRef object, [MS-WMF] section 2.2.2.8)
+
+
+
+
+ A light gray, solid-color brush that is equivalent to a logical brush with the following properties:
+ BrushStyle: BS_SOLID
+ Color: 0x00C0C0C0
+
+
+
+
+ A gray, solid-color brush that is equivalent to a logical brush with the following properties:
+ BrushStyle: BS_SOLID
+ Color: 0x00808080
+
+
+
+
+ A dark gray, solid color brush that is equivalent to a logical brush with the following properties:
+ BrushStyle: BS_SOLID
+ Color: 0x00404040
+
+
+
+
+ A black, solid color brush that is equivalent to a logical brush with the following properties:
+ BrushStyle: BS_SOLID
+ Color: 0x00000000
+
+
+
+
+ A null brush that is equivalent to a logical brush with the following properties:
+ BrushStyle: BS_NULL
+
+
+
+
+ A white, solid-color pen that is equivalent to a logical pen (LogPen object, section 2.2.19)
+ with the following properties:
+ PenStyle: PS_COSMETIC + PS_SOLID (PenStyle enumeration, section 2.1.25)
+ ColorRef: 0x00FFFFFF (WMF ColorRef object).
+
+
+
+
+ A black, solid-color pen that is equivalent to a logical pen with the following properties:
+ PenStyle: PS_COSMETIC + PS_SOLID
+ ColorRef: 0x00000000
+
+
+
+
+ A null pen that is equivalent to a logical pen with the following properties:
+ PenStyle: PS_NULL
+
+
+
+
+ A fixed-width, OEM character set font that is equivalent to a logical font
+ (LogFont object, section 2.2.13) with the following properties:
+ Charset: OEM_CHARSET (WMF CharacterSet enumeration, [MS-WMF] section 2.1.1.5)
+ PitchAndFamily: FF_DONTCARE (WMF FamilyFont enumeration, [MS-WMF] section 2.1.1.8)
+ + FIXED_PITCH (WMF PitchFont enumeration, [MS-WMF] section 2.1.1.24)
+
+
+
+
+ A fixed-width font that is equivalent to a logical font with the following properties:
+ Charset: ANSI_CHARSET
+ PitchAndFamily: FF_DONTCARE + FIXED_PITCH
+
+
+
+
+ A variable-width font that is equivalent to a logical font with the following properties:
+ Charset: ANSI_CHARSET
+ PitchAndFamily: FF_DONTCARE + VARIABLE_PITCH
+
+
+
+
+ A font that is guaranteed to be available in the operating system.
+ The actual font that is specified by this value is implementation-dependent
+
+
+
+
+ The default font that is provided by the graphics device driver for the current output device.
+ The actual font that is specified by this value is implementation-dependent
+
+
+
+
+ The default palette that is defined for the current output device.
+ The actual palette that is specified by this value is implementation-dependent
+
+
+
+
+ A fixed-width font that is guaranteed to be available in the operating system.
+ The actual font that is specified by this value is implementation-dependent
+
+
+
+
+ A fixed-width font that is guaranteed to be available in the operating system.
+ The actual font that is specified by this value is implementation-dependent
+
+
+
+
+ The solid-color brush that is currently selected in the playback device context
+
+
+
+
+ The solid-color pen that is currently selected in the playback device context
+
+
+
+
+ The StretchMode enumeration is used to specify how color data is added to or removed from bitmaps that are stretched or compressed.
+
+
+
+
+ Performs a Boolean AND operation using the color values for the eliminated and existing pixels.
+ If the bitmap is a monochrome bitmap, this mode preserves black pixels at the expense of white pixels
+
+
+
+
+ Performs a Boolean OR operation using the color values for the eliminated and existing pixels.
+ If the bitmap is a monochrome bitmap, this mode preserves white pixels at the expense of black pixels.
+
+
+
+
+ Deletes the pixels. This mode deletes all eliminated lines of pixels without trying to preserve their information.
+
+
+
+
+ Maps pixels from the source rectangle into blocks of pixels in the destination rectangle.
+ The average color over the destination block of pixels approximates the color of the source pixels.
+
+
+
+
+ The StrokeVariation enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any Stroke.
+
+
+
+
+ The No fit.
+
+
+
+
+ Gradual / diagonal
+
+
+
+
+ Gradual transitional
+
+
+
+
+ Gradual vertical
+
+
+
+
+ Gradual horizontal
+
+
+
+
+ Rapid vertical
+
+
+
+
+ Rapid horizontal
+
+
+
+
+ Instant vertical
+
+
+
+
+ The Weight enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any weight.
+
+
+
+
+ The No fit.
+
+
+
+
+ Very light weight.
+
+
+
+
+ The light weight.
+
+
+
+
+ The thin weight.
+
+
+
+
+ The book weight.
+
+
+
+
+ The medium weight.
+
+
+
+
+ The demi weight.
+
+
+
+
+ The bold weight.
+
+
+
+
+ The heavy weight.
+
+
+
+
+ The black weight.
+
+
+
+
+ The nord weight.
+
+
+
+
+ The XHeight enumeration defines values for one of the characteristics in the PANOSE system for classifying typefaces.
+
+
+
+
+ The Any height.
+
+
+
+
+ The No fit.
+
+
+
+
+ Constant/small
+
+
+
+
+ Constant/standard
+
+
+
+
+ Constant/large
+
+
+
+
+ Ducking/small
+
+
+
+
+ Ducking/standard
+
+
+
+
+ Ducking/large
+
+
+
+
+ The namespace contains types [MS-EMF]: Enhanced Metafile Format.
+ 2.1 EMF Enumerations
+
+
+
+
+ The namespace contains types [MS-EMF]
+
+
+
+
+ The base pen object
+
+
+
+
+ Base class for Emf objects
+
+
+
+
+ Gets or sets the pen style.
+
+
+ The pen style.
+
+
+
+
+ Gets or sets the 32-bit ARGB color reference.
+
+
+ The color reference.
+
+
+
+
+ The BitFIX28_4 object defines a numeric value in 28.4 bit FIX notation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The dword data.
+
+
+
+ Gets or sets the integer value value
+
+
+
+
+ Gets or sets the fraction value
+
+
+
+
+ Gets the resulting float value;
+
+
+
+
+ The ColorAdjustment object defines values for adjusting the colors in source bitmaps in bit-block transfers.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the size in bytes of this object. This MUST be 0x0018.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies how to prepare the output image. This field can be
+ set to NULL or to any combination of values in the ColorAdjustment enumeration (section 2.1.5).
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the type of standard light source under which the
+ image is viewed, from the Illuminant enumeration (section 2.1.19).
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the nth power gamma correction value for the red
+ primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000.
+ A value of 10,000 means gamma correction MUST NOT be performed.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the nth power gamma correction value for the green
+ primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000.
+ A value of 10,000 means gamma correction MUST NOT be performed.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the nth power gamma correction value for the
+ blue primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000.
+ A value of 10,000 means gamma correction MUST NOT be performed.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the black reference for the source colors.
+ Any colors that are darker than this are treated as black.
+ This value SHOULD be in the range from zero to 4,000
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the white reference for the source colors.
+ Any colors that are lighter than this are treated as white.
+ This value SHOULD be in the range from 6,000 to 10,000.
+
+
+
+
+ Gets or sets a 16-bit signed integer that specifies the amount of contrast to be applied to the source object.
+ This value SHOULD be in the range from –100 to 100. A value of zero means contrast adjustment MUST NOT be performed.
+
+
+
+
+ Gets or sets a 16-bit signed integer that specifies the amount of brightness to be applied to the source object.
+ This value SHOULD be in the range from –100 to 100.
+ A value of zero means brightness adjustment MUST NOT be performed.
+
+
+
+
+ Gets or sets a 16-bit signed integer that specifies the amount of colorfulness to be applied to the source object.
+ This value SHOULD be in the range from –100 to 100.
+ A value of zero means colorfulness adjustment MUST NOT be performed
+
+
+
+
+ Gets or sets 16-bit signed integer that specifies the amount of red or green tint adjustment to be applied
+ to the source object. This value SHOULD be in the range from –100 to 100.
+ Positive numbers adjust towards red and negative numbers adjust towards green.
+ A value of zero means tint adjustment MUST NOT be performed
+
+
+
+
+ The DesignVector (section 2.2.3) object defines the design vector, which specifies values for the font axes of a multiple master font.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that MUST be set to the value 0x08007664.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of elements in
+ the Values array. It MUST be in the range 0 to 16, inclusive
+
+
+
+
+ Gets or sets an optional array of 32-bit signed integers that specify the values
+ of the font axes of a multiple master, OpenType font. The maximum number of values in the array is 16.
+
+
+
+
+ The EpsData object is a container for EPS data
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the total size of this object, in bytes
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the PostScript language level. This
+ value MUST be 0x00000001
+
+
+
+
+ Gets or sets an array of three Point28_4 objects (section 2.2.23) that defines the
+ coordinates of the output parallelogram using 28.4 bit FIX notation
+
+
+ The upper-left corner of the parallelogram is the first point in this array, the upper-right
+ corner is the second point, and the lower-left corner is the third point. The lower-right corner
+ of the parallelogram is computed from the first three points (A, B, and C) by treating them as
+ vectors.
+
+
+
+
+ Gets or sets an array of bytes of PostScript data. The length of this array can
+ be computed from the SizeData field. This data MAY be used to render an image.
+
+
+
+
+ The EmrFormat object contains information that identifies the format of image data in an
+ EMR_COMMENT_MULTIFORMATS record(section 2.3.3.4.3).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the format of the image data.
+ This value MUST be in the FormatSignature enumeration (section 2.1.14).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the format version number.
+ If the Signature field specifies encapsulated PostScript (EPS),
+ this value MUST be 0x00000001; otherwise, this value MUST be ignored
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of the data in bytes
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the offset to the data from the
+ start of the identifier field in an EMR_COMMENT_PUBLIC record (section 2.3.3.4).
+ The offset MUST be 32-bit aligned.
+
+
+
+
+ The GradientRectangle object defines a rectangle using TriVertex objects (section 2.2.26) in an
+ EMR_GRADIENTFILL record (section 2.3.5.12).
+
+
+
+
+ Gets or sets an index into an array of TriVertex objects that specifies the upper-left
+ vertex of a rectangle. The index MUST be smaller than the size of the array, as defined by the
+ nVer field of the EMR_GRADIENTFILL record.
+
+
+
+
+ Gets or sets an index into an array of TriVertex objects that specifies the lower-right
+ vertex of a rectangle. The index MUST be smaller than the size of the array, as defined by the
+ nVer field of the EMR_GRADIENTFILL record.
+
+
+
+
+ The GradientTriangle object defines a triangle using TriVertex objects (section 2.2.26) in an
+ EMR_GRADIENTFILL record (section 2.3.5.12)
+
+
+
+
+ Gets or sets an index into an array of TriVertex objects that specifies a vertex of a
+ triangle. The index MUST be smaller than the size of the array, as defined by the nVer field of
+ the EMR_GRADIENTFILL record.
+
+
+
+
+ Gets or sets an index into an array of TriVertex objects that specifies a vertex of a
+ triangle. The index MUST be smaller than the size of the array, as defined by the nVer field of
+ the EMR_GRADIENTFILL record.
+
+
+
+
+ Gets or sets an index into an array of TriVertex objects that specifies a vertex of a
+ triangle. The index MUST be smaller than the size of the array, as defined by the nVer field of
+ the EMR_GRADIENTFILL record.
+
+
+
+
+ The HeaderExtension1 object defines the first extension to the EMF metafile header.
+ It adds support for a PixelFormatDescriptor object (section 2.2.22) and OpenGL
+ [OPENGL] records (section 2.3.9).
+
+
+
+
+ The Header object defines the EMF metafile header. It specifies properties of the device on which the image in the metafile was created.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the rectangular inclusive-inclusive
+ bounds in device units of the smallest rectangle that can be drawn around the image stored in
+ the metafile
+
+
+
+
+ Gets or sets a WMF RectL object that specifies the rectangular inclusive-inclusive dimensions, in .01 millimeter
+ units, of a rectangle that surrounds the image stored in the metafile
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the record signature. This MUST be ENHMETA_SIGNATURE,
+ from the FormatSignature enumeration (section 2.1.14).
+
+
+
+
+ Gets or sets Version (4 bytes): A 32-bit unsigned integer that specifies EMF metafile interoperability. This SHOULD be 0x00010000
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the size of the metafile, in bytes.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of records in the metafile
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the number of graphics objects that will be used during the processing of the metafile
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that MUST be 0x0000 and MUST be ignored
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of characters in the array
+ that contains the description of the metafile's contents. This is zero if there is no description string.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the offset from the beginning of this
+ record to the array that contains the description of the metafile's contents
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of entries in the metafile
+ palette. The palette is located in the EMR_EOF record
+
+
+
+
+ Gets or sets a WMF SizeL object ([MS-WMF] section 2.2.2.22) that specifies the size of the reference device, in pixels
+
+
+
+
+ Gets or sets a WMF SizeL object that specifies the size of the reference device, in millimeters
+
+
+
+
+ Gets a value indicating whether this is valid.
+
+
+ true if valid; otherwise, false.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of the PixelFormatDescriptor object.
+ This MUST be 0x00000000 if no pixel format is set
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the offset to the PixelFormatDescriptor object.
+ This MUST be 0x00000000 if no pixel format is set.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that indicates whether OpenGL commands are present in the metafile.
+ 0x00000000 OpenGL records are not present in the metafile.
+ 0x00000001 OpenGL records are present in the metafile.
+
+
+
+
+ The HeaderExtension2 object defines the second extension to the EMF metafile header. It adds the
+ ability to measure device surfaces in micrometers, which enhances the resolution and scalability of EMF metafiles.
+
+
+
+
+ Gets or sets the 32-bit horizontal size of the display device for which the metafile image was generated, in micrometers
+
+
+
+
+ Gets or sets the 32-bit vertical size of the display device for which the metafile image was generated, in micrometers.
+
+
+
+
+ The LogBrushEx object defines the style, color, and pattern of a device-independent brush.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the brush style. The value MUST
+ be an enumeration from WMF BrushStyle enumeration ([MS-WMF] section 2.1.1.4). The style
+ values that are supported in this structure are listed later in this section. The BS_NULL style
+ SHOULD be used to specify a brush that has no effect.
+
+
+
+
+ Gets or sets a 32-bit WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies a
+ color. The interpretation of this field depends on the value of BrushStyle, as explained in the
+ following table.
+
+
+ The 32-bit ARGB color
+
+
+
+
+ Gets or sets a 32-bit unsigned field that contains the brush hatch data. Its
+ interpretation depends on the value of BrushStyle,
+
+
+
+
+ The LogFont object specifies the basic attributes of a logical font.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the height, in logical units, of the font's
+ character cell or character. The character height value, also known as the em size, is the
+ character cell height value minus the internal leading value. The font mapper SHOULD
+ interpret the value specified in the Height field in the following manner.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the average width, in logical units, of
+ characters in the font. If the Width field value is zero, an appropriate value SHOULD be
+ calculated from other LogFont values to find a font that has the typographer's intended
+ aspect ratio
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the angle, in tenths of degrees,
+ between the escapement vector and the x-axis of the device. The escapement vector is
+ parallel to the baseline of a row of text.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the angle, in tenths of degrees,
+ between each character's baseline and the x-axis of the device.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the weight of the font in the range
+ zero through 1000. For example, 400 is normal and 700 is bold. If this value is zero, a default
+ weight can be used.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies an italic font if set to 0x01; otherwise,
+ it MUST be set to 0x00.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies an underlined font if set to 0x01;
+ otherwise, it MUST be set to 0x00.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies a strikeout font if set to 0x01;
+ otherwise, it MUST be set to 0x00.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the set of character glyphs. It MUST
+ be a value in the WMF CharacterSet enumeration ([MS-WMF] section 2.1.1.5). If the
+ character set is unknown, metafile processing SHOULD NOT attempt to translate or interpret
+ strings that are rendered with that font.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the output precision. The
+ output precision defines how closely the font is required to match the requested height, width,
+ character orientation, escapement, pitch, and font type. It MUST be a value from the WMF
+ OutPrecision enumeration
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the clipping precision. The
+ clipping precision defines how to clip characters that are partially outside the clipping region.
+ It can be one or more of the WMF ClipPrecision Flags
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the output quality. The output quality
+ defines how closely to attempt to match the logical-font attributes to those of an actual
+ physical font. It MUST be one of the values in the WMF FontQuality enumeration ([MS-WMF]
+ section 2.1.1.10).
+
+
+
+
+ Gets or sets a WMF PitchAndFamily object ([MS-WMF] section 2.2.2.14) that
+ specifies the pitch and family of the font. Font families describe the look of a font in a general
+ way. They are intended for specifying a font when the specified typeface is not available.
+
+
+
+
+ Gets or sets a Facename (64 bytes): A string of no more than 32 Unicode characters that specifies the
+ typeface name of the font. If the length of this string is less than 32 characters, a terminating
+ NULL MUST be present, after which the remainder of this field MUST be ignored.
+
+
+
+
+ The LogFontEx object specifies the extended attributes of a logical font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The EMF log font.
+
+
+
+ Gets or sets a string of 64 Unicode characters that contains the font's full name. If
+ the length of this string is less than 64 characters, a terminating NULL MUST be present, after
+ which the remainder of this field MUST be ignored.
+
+
+
+
+ Gets or sets a string of 32 Unicode characters that defines the font's style. If the length of
+ this string is less than 32 characters, a terminating NULL MUST be present, after which the
+ remainder of this field MUST be ignored.
+
+
+
+
+ Gets or sets a string of 32 Unicode characters that defines the character set of the font.
+ If the length of this string is less than 32 characters, a terminating NULL MUST be present,
+ after which the remainder of this field MUST be ignored.
+
+
+
+
+ The LogFontExDv object specifies the design vector for an extended logical font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The EMF log font ex.
+
+
+
+ Gets or sets a DesignVector object (section 2.2.3). This field MUST NOT be longer than 72 bytes.
+
+
+ The design vector.
+
+
+
+
+ The LogFontPanose object specifies the PANOSE characteristics of a logical font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The base log font.
+
+
+
+ Gets or sets a string of 64 Unicode characters that defines the font's full name. If
+ the length of this string is less than 64 characters, a terminating NULL MUST be present, after
+ which the remainder of this field MUST be ignored.
+
+
+
+
+ Gets or sets a string of 32 Unicode characters that defines the font's style. If the length of
+ this string is less than 32 characters, a terminating NULL MUST be present, after which the
+ remainder of this field MUST be ignored.
+
+
+
+
+ Gets or sets This field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the point size at which font
+ hinting is performed. If set to zero, font hinting is performed at the point size corresponding
+ to the Height field in the LogFont object in the LogFont field
+
+
+
+
+ Gets or sets This field MUST be ignored.
+
+
+
+
+ Gets or sets This field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that MUST be set to zero and MUST be ignored.
+
+
+
+
+ Gets or sets a Panose object (section 2.2.21) that specifies the PANOSE characteristics
+ of the logical font. If all fields of this object are zero, it MUST be ignored.
+
+
+
+
+ Gets or sets a field that exists only to ensure 32-bit alignment of this structure. It MUST be ignored
+
+
+
+
+ The LogPalette object specifies a logical_palette that contains device-independent color definitions.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the version number of the system.
+ This MUST be 0x0300.
+
+
+
+
+ Gets or sets an array of 32-bit ARGB colors.
+
+
+
+
+ The LogPen object defines the style, width, and color of a logical pen.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the PenStyle. The value MUST be
+ defined from the PenStyle enumeration table, specified in section 2.1.25.
+
+
+
+
+ Gets or sets a WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the width of
+ the pen by the value of its x field. The value of its y field MUST be ignored.
+
+
+
+
+ Gets or sets the width of the affect.
+
+
+ The width of the affect.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies the pen color value.
+
+
+ The 32-bit ARGB color
+
+
+
+
+ The LogPenEx object specifies the style, width, and color of an extended logical pen.
+
+
+
+
+ Gets or sets the pen style
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the width of the line drawn by the pen.
+ If the pen type in the PenStyle field is PS_GEOMETRIC, this value is the width in
+ logical units; otherwise, the width is specified in device units.
+ If the pen type in the PenStyle field is PS_COSMETIC, this value MUST be 0x00000001.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies a brush style for the pen from the
+ WMF BrushStyle enumeration ([MS-WMF] section 2.1.1.4).
+ If the pen type in the PenStyle field is PS_GEOMETRIC, this value MUST be either
+ BS_SOLID or BS_HATCHED. The value of this field can be BS_NULL, but only if the
+ line style specified in PenStyle is PS_NULL. The BS_NULL style SHOULD be used
+ to specify a brush that has no effect.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8). The interpretation of this
+ field depends on the BrushStyle value, as shown in the table later in this section.
+
+
+ The 32-bit ARGB color
+
+
+
+
+ Gets or sets the brush hatch pattern. The definition of this field depends on the
+ BrushStyle value, as shown in the table later in this section.
+
+
+
+
+ Gets the number of elements in the array specified in the StyleEntry field.
+ This value SHOULD be zero if PenStyle does not specify PS_USERSTYLE.
+
+
+
+
+ Gets or sets an optional array of 32-bit unsigned integers that defines the lengths of
+ dashes and gaps in the line drawn by this pen, when the value of PenStyle
+ is PS_USERSTYLE line style for the pen. The array contains a number of
+ entries specified by NumStyleEntries, but it is used as if it repeated indefinitely
+ The first entry in the array specifies the length of the first dash. The second
+ entry specifies the length of the first gap. Thereafter, lengths of dashes and gaps alternate.
+ If the pen type in the PenStyle field is PS_GEOMETRIC, the lengths are specified in
+ logical units; otherwise, the lengths are specified in device units.
+
+
+
+
+ Gets or sets the brush dib pattern.
+
+
+ The brush dib pattern.
+
+
+
+
+ The Panose object describes the PANOSE font-classification values for a TrueType font. These
+ characteristics are used to associate the font with other fonts of similar appearance but different names.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the family type. The value MUST
+ be in the FamilyType (section 2.1.12) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the serif style. The value MUST be
+ in the SerifType (section 2.1.30) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the weight of the font. The value
+ MUST be in the Weight (section 2.1.34) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the proportion of the font. The
+ value MUST be in the Proportion (section 2.1.28) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the contrast of the font. The value
+ MUST be in the Contrast (section 2.1.8) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the stroke variation for the
+ font. The value MUST be in the StrokeVariation (section 2.1.33) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the arm style of the font. The value
+ MUST be in the ArmStyle (section 2.1.3) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the letterform of the font. The
+ value MUST be in the Letterform (section 2.1.20) enumeration table
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the midline of the font. The value
+ MUST be in the MidLine (section 2.1.23) enumeration table.
+
+
+
+
+ Gets or sets an 8-bit unsigned integer that specifies the x height of the font. The value
+ MUST be in the XHeight (section 2.1.35) enumeration table.
+
+
+
+
+ The PixelFormatDescriptor object can be used in EMR_HEADER records (section 2.3.4.2) to specify the pixel format of the output surface for the playback device context.
+
+
+
+
+ Gets or sets a 16-bit integer that specifies the size, in bytes, of this data structure.
+
+
+
+
+ Gets or sets a 16-bit integer that MUST be set to 0x0001.
+
+
+
+
+ Gets or sets bit flags that specify properties of the pixel buffer that is used
+ for output to the drawing surface. These properties are not all mutually
+ exclusive; combinations of flags are allowed, except where noted otherwise.
+
+
+
+
+ Gets or sets the type of pixel data
+ PFD_TYPE_RGBA 0x00 The pixel format is RGBA.
+ PFD_TYPE_COLORINDEX 0x01 Each pixel is an index in a color table.
+
+
+
+
+ Gets or sets the number of bits per pixel for RGBA pixel types, excluding the alpha bitplanes. For color table pixels, it is the size of each color table index
+
+
+
+
+ Gets or sets Specifies the number of red bitplanes in each RGBA color buffer
+
+
+
+
+ Gets or sets Specifies the shift count in bits for red bitplanes in each RGBA color buffer.
+
+
+
+
+ Gets or sets Specifies the number of green bitplanes in each RGBA color buffer
+
+
+
+
+ Gets or sets Specifies the shift count for green bitplanes in each RGBA color buffer.
+
+
+
+
+ Gets or sets Specifies the number of blue bitplanes in each RGBA color buffer.
+
+
+
+
+ Gets or sets Specifies the shift count for blue bitplanes in each RGBA color buffer.
+
+
+
+
+ Gets or sets Specifies the number of alpha bitplanes in each RGBA color buffer
+
+
+
+
+ Gets or sets Specifies the shift count for alpha bitplanes in each RGBA color buffer
+
+
+
+
+ Gets or sets specifies the total number of bitplanes in the accumulation buffer.
+
+
+
+
+ Gets or sets specifies the number of red bitplanes in the accumulation buffer
+
+
+
+
+ Gets or sets specifies the number of green bitplanes in the accumulation
+
+
+
+
+ Gets or sets specifies the number of blue bitplanes in the accumulation buffer.
+
+
+
+
+ Gets or sets specifies the number of alpha bitplanes in the accumulation buffer
+
+
+
+
+ Gets or sets specifies the depth of the depth (z-axis) buffer.
+
+
+
+
+ Gets or sets specifies the depth of the stencil buffer.
+
+
+
+
+ Gets or sets specifies the number of auxiliary buffers. Auxiliary buffers are not supported
+
+
+
+
+ Gets or sets This field MAY be ignored
+
+
+
+
+ Gets or sets specifies the number of overlay and underlay planes. Bits 0 through 3 specify
+ up to 15 overlay planes and bits 4 through 7 specify up to 15 underlay planes
+
+
+
+
+ Gets or sets This field MAY be ignored.
+
+
+
+
+ Gets or sets specifies the transparent color or index of an underlay plane. When the pixel
+ type is RGBA, dwVisibleMask is a transparent RGB color value. When the pixel
+ type is color index, it is a transparent index value.
+
+
+
+
+ Gets or sets This field MAY be ignored
+
+
+
+
+ The Point28_4 object represents the location of a point on a device surface with coordinates in 28.4 bit FIX notation.
+
+
+
+
+ Gets or sets a BitFIX28_4 object (section 2.2.1) that represents the horizontal coordinate of the point.
+
+
+
+
+ Gets or sets a BitFIX28_4 object that represents the vertical coordinate of the point.
+
+
+
+
+ The RegionData object specifies data that defines a region, which is made of non-overlapping rectangles.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rectangle.
+
+
+
+ Gets or sets a 256-bit RegionDataHeader object that describes the following data.
+
+
+
+
+ Gets or sets an array of WMF RectL objects ([MS-WMF] section 2.2.2.19); the objects are
+ merged to create the region
+
+
+
+
+ The RegionDataHeader object describes the properties of a RegionData object.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of this object in bytes. This MUST be 0x00000020.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the region type. This SHOULD be
+ RDH_RECTANGLES (0x00000001).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of rectangles in this region.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of the buffer of rectangles in bytes.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19), which specifies
+ the bounds of the region.
+
+
+
+
+ The EmrText object contains values for text output.
+
+
+
+
+ Gets or sets a WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the coordinates of the
+ reference point used to position the string. The reference point is defined by the last
+ EMR_SETTEXTALIGN record (section 2.3.11.25). If no such record has been set,
+ the default alignment is TA_LEFT,TA_TOP.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of characters in the string
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to use the rectangle specified in the
+ Rectangle field. This field can be a combination of more than one ExtTextOutOptions
+ enumeration (section 2.1.11) values
+
+
+
+
+ Gets or sets an optional WMF RectL object ([MS-WMF] section 2.2.2.19) that defines a clipping
+ and/or opaquing rectangle in logical units. This rectangle is applied to the text
+ output performed by the containing record.
+
+
+
+
+ Gets or sets the character string buffer
+ UndefinedSpace1 (variable): An optional number of unused bytes.
+ The OutputString field is not required to follow immediately the preceding portion of this structure.
+ OutputString (variable): An array of characters that specify the string to output.
+ The location of this field is specified by the value of offString in bytes from the start of this record.
+ The number of characters is specified by the value of Chars.
+
+
+
+
+ Gets or sets the optional glyph index buffer.
+ If options has ETO_GLYPH_INDEX flag then the codes for characters in an output text string are actually indexes
+ of the character glyphs in a TrueType font (2.1.11 ExtTextOutOptions enumeration). Glyph indexes are font-specific,
+ so to display the correct characters on playback, the font that is used MUST be identical to the font used to
+ generate the indexes.
+
+
+
+
+ Gets or sets the optional character spacing buffer
+ UndefinedSpace2 (variable): An optional number of unused bytes. The OutputDx field is not required to
+ follow immediately the preceding portion of this structure.
+ OutputDx (variable): An array of 32-bit unsigned integers that specify the output spacing between
+ the origins of adjacent character cells in logical units. The location of this field is specified by
+ the value of offDx in bytes from the start of this record. If spacing is defined, this field contains
+ the same number of values as characters in the output string. If the Options field of the EmrText object
+ contains the ETO_PDY flag, then this buffer contains twice as many values as there are characters in
+ the output string, one horizontal and one vertical offset for each, in that order. If ETO_RTLREADING is specified,
+ characters are laid right to left instead of left to right. No other options affect the interpretation of this field.
+
+
+
+
+ The TriVertex object specifies color and position information for the definition of a rectangle or
+ triangle vertex.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the horizontal position, in logical units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the vertical position, in logical units.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the red color value for the point.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the green color value for the point.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the blue color value for the point.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the alpha transparency value for the point.
+
+
+
+
+ The UniversalFontId object defines a mechanism for identifying fonts in EMF metafiles.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that is the checksum of the font.
+ The checksum value has the following meanings.
+ 0x00000000 The object is a device font.
+ 0x00000001 The object is a Type 1 font that has been installed on the client machine and is
+ enumerated by the PostScript printer driver as a device font.
+ 0x00000002 The object is not a font but is a Type 1 rasterizer.
+ 3 ≤ value The object is a bitmap, vector, or TrueType font, or a Type 1 rasterized font that
+ was created by a Type 1 rasterizer.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that is an index associated with the font object. The
+ meaning of this field is determined by the type of font.
+
+
+
+
+ The namespace contains types [MS-EMF]: Enhanced Metafile Format.
+ 2.2 EMF Objects
+
+
+
+
+ This record aborts a path bracket or discards the path from a closed path bracket.
+
+
+
+
+
+ The path bracket record types specify and manipulate paths in path brackets.
+ Note: None of the path bracket records specify parameters.
+
+
+
+
+ Base class for EMF records
+ All EMF records MUST have a length that is a multiple of 4 bytes. This is depicted in the
+ generic structures of the preceding EMF record types by including AlignmentPadding fields
+ where appropriate at the ends of these structures. The contents of AlignmentPadding fields
+ MUST always be ignored. For brevity, these fields are not shown in every individual EMF
+ record definition.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Gets or sets the type.
+
+
+ The type.
+
+
+
+
+ Gets or sets the size of the record
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_ALPHABLEND record specifies a block transfer of pixels from a source bitmap to a
+ destination rectangle, including alpha transparency data, according to a specified blending operation.
+
+
+
+
+ The bitmap record types perform block transfers of bitmap images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the destination
+ rectangle. This value MUST be greater than zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the destination
+ rectangle. This value MUST be greater than zero.
+
+
+
+
+ Gets or sets a structure that specifies the blending operations for source and
+ destination bitmaps
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8 that specifies the
+ background color of the source bitmap.
+
+
+ The 32-bit ARGB color
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the source rectangle.
+ This value MUST be greater than zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the source
+ rectangle. This value MUST be greater than zero.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_ALPHABLEND record. Accordingly, fields in this
+ buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ The EMR_ANGLEARC record specifies a line segment of an arc. The line segment is drawn from the
+ current position to the beginning of the arc. The arc is drawn along the perimeter of a circle with the
+ given radius and center. The length of the arc is defined by the given start and sweep angles
+
+
+
+
+ The drawing record types perform graphics drawing.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the logical coordinates of the circle's center.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the circle's radius, in logical units.
+
+
+
+
+ Gets or sets a 32-bit float that specifies the arc's start angle, in degrees.
+
+
+
+
+ Gets or sets a 32-bit float that specifies the arc's sweep angle, in degrees.
+
+
+
+
+ The EMR_ARC record specifies an elliptical arc.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive bounding rectangle.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the coordinates, in logical units, of the ending point of the radial line defining the
+ starting point of the arc.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object that specifies the coordinates, in logical units, of
+ the ending point of the radial line defining the ending point of the arc.
+
+
+
+
+ The EMR_ARCTO record specifies an elliptical arc. It resets the current position to the end point of the arc.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the bounding rectangle.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the coordinates of the first radial ending point, in logical units.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object that specifies the coordinates of the second radial
+ ending point, in logical units.
+
+
+
+
+ This record opens a path bracket in the current playback device context.
+ After a path bracket is open, an application can begin processing records to define
+ the points that lie in the path.An application MUST close an open path bracket by
+ processing the EMR_ENDPATH record.
+ When an application processes the EMR_BEGINPATH record, all previous paths
+ MUST be discarded from the playback device context.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_BITBLT record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern, according to a specified raster operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the source and
+ destination rectangles.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the source and
+ destination rectangles.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the raster operation
+ code. This code defines how the color data of the source rectangle is to be combined with the
+ color data of the destination rectangle and optionally a brush pattern, to achieve the final color.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8 that specifies the
+ background color of the source bitmap.
+
+
+ The 32-bit ARGB color
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_BITBLT record. Accordingly, fields in this buffer
+ that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ A structure that specifies the blending operations for source and destination bitmaps.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The dword data.
+
+
+
+ Converts the string representation of a number to an integer.
+
+ The DWORD value of structure.
+
+
+
+ Gets the blend operation code.
+ The only source and destination
+ blend operation that has been defined is 0x00, which specifies that the source bitmap
+ MUST be combined with the destination bitmap based on the alpha transparency values
+ of the source pixels. See the following equations for details.
+
+
+
+
+ Gets the blend flags.
+ This value MUST be 0x00 and MUST be ignored.
+
+
+
+
+ Gets an 8-bit unsigned integer that specifies alpha transparency,
+ which determines the blend of the source and destination bitmaps. This value MUST be
+ used on the entire source bitmap. The minimum alpha transparency value, zero,
+ corresponds to completely transparent the maximum value, 0xFF, corresponds to
+ completely opaque. In effect, a value of 0xFF specifies that the per-pixel alpha values
+ determine the blend of the source and destination bitmaps. See the equations later in
+ this section for details.
+
+
+
+
+ Gets a structure that specifies how source and destination pixels are
+ interpreted with respect to alpha transparency.
+
+
+
+
+ A structure that specifies how source and destination pixels are
+ interpreted with respect to alpha transparency.
+
+
+
+
+ The pixels in the source bitmap do not specify alpha transparency. In this
+ case, the SrcConstantAlpha value determines the blend of the source
+ and destination bitmaps. Note that in the following equations
+ SrcConstantAlpha is divided by 255, which produces a value in the
+ range 0 to 1.
+
+
+
+
+ Indicates that the source bitmap is 32 bits-per-pixel and specifies an alpha
+ transparency value for each pixel.
+
+
+
+
+ The EMR_CHORD record specifies a chord, which is a region bounded by the intersection of an
+ ellipse and a line segment, called a secant. The chord is outlined by using the current pen and filled
+ by using the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive bounding rectangle.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the logical coordinates of the endpoint of the radial defining the beginning of the chord.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object that specifies the logical coordinates of the
+ endpoint of the radial defining the end of the chord.
+
+
+
+
+ The clipping record types specify and manage clipping regions.
+ Note The EMR_SETMETARGN record does not specify parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ This record closes an open figure in a path.
+ Processing the EMR_CLOSEFIGURE record MUST close the figure by drawing a line
+ from the current position to the first point of the figure, and then it MUST connect
+ the lines by using the line join style.If a figure is closed by processing the
+ EMR_LINETO record instead of the EMR_CLOSEFIGURE record, end caps are
+ used to create the corner instead of a join.EMR_LINETO is specified in section
+ 2.3.5.13.
+ The EMR_CLOSEFIGURE record SHOULD only be used if there is an open path
+ bracket in the playback device context.
+ A figure in a path is open unless it is explicitly closed by processing this record.
+
+
+ Note: A figure can be open even if the current point and the starting point of the
+ figure are the same.
+ After processing the EMR_CLOSEFIGURE record, adding a line or curve to the path
+ MUST start a new figure.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_COLORCORRECTPALETTE record specifies how to correct the entries of a logical palette
+ object using WCS 1.0 values.
+
+
+
+
+ The object manipulation record types manage and modify graphics objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies index of a logical palette object
+ (section 2.2.17) in the EMF Object Table (section 3.1.1.1).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the first entry to correct.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of palette entries to correct.
+
+
+
+
+ The EMR_COLORMATCHTOTargetW record specifies whether to perform color matching with a color
+ profile that is specified in a file with a name consisting of Unicode characters.
+
+
+ An EMR_COLORMATCHTOTargetW record can be used to control whether to apply the current
+ color transform in the playback device context. If the dwAction value is CS_ENABLE, color
+ mapping is enabled, and the current color transform SHOULD be applied to subsequent graphics
+ operations. If dwAction is set to CS_DISABLE, the color transform SHOULD NOT be
+ applied.
+ While color mapping to the target is enabled by a dwAction value of CS_ENABLE, changes to the
+ color space or color gamut mapping are not applied. However, those changes MUST take effect
+ when color mapping to the target is disabled.
+ The dwAction field SHOULD NOT be set to CS_DELETE_TRANSFORM unless color management
+ has already been enabled with an EMR_SETICMMODE record (section 2.3.11.14).
+
+
+
+
+ The state record types specify and manage graphics properties that define the state of the playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies a value from the ColorSpace
+ enumeration (section 2.1.7).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies a value from the
+ ColorMatchToTarget enumeration (section 2.1.6).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of bytes in the Unicode
+ UTF16-LE name of the desired color profile.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of the raw data of the target
+ color profile, if it is contained in the Data field.
+
+
+
+
+ Gets or sets an array of size (cbName + cbData) in bytes, which specifies the UTF16-LE
+ name and raw data of the desired color profile.
+
+
+
+
+ Gets the name
+
+
+
+
+ Gets the raw data
+
+
+
+
+ The EMR_COMMENT record contains arbitrary private data.
+ Note Fields that are not described in this section are specified in section 2.3.3.
+
+
+
+
+ The comment record types define formats for specifying arbitrary private data, embedding records
+ in other metafile formats, and adding new or special-purpose commands.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size, in bytes, of the
+ CommentIdentifier and CommentRecordParm fields in the RecordBuffer field that
+ follows. It MUST NOT include the size of itself or the size of the AlignmentPadding field, if
+ present
+
+
+
+
+ Gets or sets the comment identifier.
+
+
+ The comment identifier.
+
+
+
+
+ Valid comment identifier values.
+
+
+
+
+ The value 0x00000000 identifies this as an
+ EMR_COMMENT_EMFSPOOL record.
+
+
+
+
+ The value 0x2B464D45, which is the ASCII string "+FME",
+ identifies this as an EMR_COMMENT_EMFPLUS record.
+
+
+
+
+ The value 0x43494447, which is the ASCII string "CIDG", identifies
+ this as an EMR_COMMENT_PUBLIC record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets an optional array of bytes that specifies the private data. The first
+ DWORD of this data MUST NOT be one of the predefined comment identifier values specified
+ in section 2.3.3.
+ Private data is unknown to EMF; it is meaningful only to applications that know the format of the
+ data and how to use it. EMR_COMMENT private data records MAY be ignored.
+
+
+
+
+ Gets or sets the comment identifier.
+
+
+ The comment identifier.
+
+
+
+
+ The EMR_COMMENT_BEGINGROUP record specifies the beginning of a group of drawing records.
+
+
+
+
+ The EMR_COMMENT_PUBLIC record types specify extensions to EMF processing.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Gets or sets a 32-bit unsigned integer that identifies this comment record
+ as specifying public data. The value 0x43494447, which is the ASCII string "CIDG", identifies
+ this as an EMR_COMMENT_PUBLIC record.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that identifies the type of
+ public comment record. This SHOULD be one of the values listed in the preceding table, which
+ are specified in the EmrComment enumeration (section 2.1.10), unless additional public
+ comment record types have been implemented on the print server.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the
+ output rectangle in logical coordinates.
+
+
+
+
+ Gets or sets the number of Unicode characters in the optional description string that follows.
+
+
+
+
+ Gets or sets an optional, null-terminated Unicode string that describes this group of records.
+
+
+
+
+ The EMR_COMMENT_EMFPLUS record contains embedded EMF+ records.
+ Note Fields that are not described in this section are specified in section 2.3.3.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that identifies this comment record
+ as containing EMF+ records. The value 0x2B464D45, which is the ASCII string "+FME",
+ identifies this as an EMR_COMMENT_EMFPLUS record.
+
+
+
+
+ Gets or sets an array of bytes that contains one or more EMF+ records ([MS-EMFPLUS] section 2.3.1).
+
+
+
+
+ The EMR_COMMENT_EMFSPOOL record contains embedded EMFSPOOL records.
+ Note Fields that are not described in this section are specified in section 2.3.3.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that identifies this comment record
+ as containing EMFSPOOL records. The value 0x00000000 identifies this as an
+ EMR_COMMENT_EMFSPOOL record.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that identifies the type of
+ EMR_COMMENT_EMFSPOOL record.
+
+
+
+
+ Gets or sets a variable-length array of bytes that contains one or more
+ EMFSPOOL font definition records ([MS-EMFSPOOL] section 2.2.3.3).
+
+
+
+
+ Identifies the type of EMR_COMMENT_EMFSPOOL record
+
+
+
+
+ The ASCII string "TONF", which identifies this as a record that contains
+ embedded EMFSPOOL font definition data.
+
+
+
+
+ The EMR_COMMENT_ENDGROUP record specifies the end of a group of drawing records.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EMR_COMMENT_MULTIFORMATS record specifies an image in multiple graphics formats.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the
+ output rectangle, in logical coordinates.
+
+
+
+
+ Gets or sets a CountFormats length array of graphics formats, specified by
+ EmrFormat objects (section 2.2.4), in order of preference
+
+
+
+
+ Gets or sets a variable-length array of bytes of image data for all graphics formats
+ contained in this record.
+ The size of the data for each image is provided by the DataSize field in the corresponding
+ EmrFormat object. Thus, the total size of this field is the sum of DataSize values in all
+ EmrFormat objects.
+ The graphics format of the data for each image is specified by the Signature field in the
+ corresponding EmrFormat object.
+
+
+
+
+ The EMR_COMMENT_WINDOWS_METAFILE record specifies an image in an embedded WMF metafile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 16-bit unsigned integer that specifies the WMF metafile version in terms
+ of support for device-independent bitmaps (DIBs), from the WMF MetafileVersion
+ enumeration ([MS-WMF] section 2.1.1.19).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the checksum for this record.
+
+
+
+
+ Gets or sets a 32-bit value that MUST be 0x00000000 and MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size, in bytes, of the
+ WMF metafile in the WinMetafile field.
+
+
+
+
+ Gets or sets a buffer that contains the WMF metafile.
+
+
+
+
+ The control record types define the start and end of an EMF metafile and properties of the metafile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ The EMR_CREATEBRUSHINDIRECT record defines a logical brush for graphics operations.
+
+
+ The logical brush object defined by this record can be selected into the playback device context by
+ an EMR_SELECTOBJECT record (section 2.3.8.5), which specifies the logical brush to use in
+ subsequent graphics operations.
+
+
+
+
+ The object creation record types create graphics objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets A 32-bit unsigned integer that specifies the index of the logical brush object
+ in the EMF Object Table (section 3.1.1.1). This index MUST be saved so that this object can be
+ reused or modified.
+
+
+
+
+ Gets or sets A LogBrushEx object (section 2.2.12) that specifies the style, color, and
+ pattern of the logical brush. The BrushStyle field in this object MUST be BS_SOLID,
+ BS_HATCHED, or BS_NULL.
+
+
+
+
+ The EMR_CREATECOLORSPACE record creates a logical color space object from a color profile with a
+ name consisting of ASCII characters.
+
+
+ The logical color space object defined by this record can be selected into the playback device context
+ by an EMR_SETCOLORSPACE record (section 2.3.8.7), which defines the logical color space to use in
+ subsequent graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the logical color space
+ object in the EMF object table (section 3.1.1.1). This index MUST be saved so that this object
+ can be reused or modified.
+
+
+
+
+ Gets or sets a WMF LogColorSpace object ([MS-WMF] section 2.2.2.11), which can specify
+ the name of a color profile in ASCII characters.
+
+
+
+
+ The EMR_CREATECOLORSPACEW record creates a logical color space object from a color profile with
+ a name consisting of Unicode characters.
+
+
+ The logical color space object defined by this record can be selected into the playback device context
+ by an EMR_SETCOLORSPACE record (section 2.3.8.7), which defines the logical color space to use in
+ subsequent graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the logical color space
+ object in the EMF object table (section 3.1.1.1). This index MUST be saved so that this object
+ can be reused or modified.
+
+
+
+
+ Gets or sets a WMF LogColorSpaceW object ([MS-WMF] section 2.2.2.12) that can specify
+ the name of a color profile in Unicode UTF16-LE characters
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that provides information about the data in this record.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size, in bytes, of the Data field.
+
+
+
+
+ Gets or sets an optional array of bytes that specifies color profile data.
+
+
+
+
+ The EMR_CREATEDIBPATTERNBRUSHPT record defines a pattern brush for graphics operations. The
+ pattern is specified by a DIB.
+
+
+ The pattern brush object defined by this record can be selected into the playback device context by
+ an EMR_SELECTOBJECT record (section 2.3.8.5), which specifies the pattern brush to use in
+ subsequent graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the pattern brush
+ object in the EMF Object Table (section 3.1.1.1). This index MUST be saved so that this object
+ can be reused or modified.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the color
+ table in the DIB header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a buffer containing a packed DIB in the form of a WMF
+ DeviceIndependentBitmap object ([MS-WMF] section 2.2.2.9). It is not required to be
+ contiguous with the fixed portion of the EMR_CREATEDIBPATTERNBRUSHPT record.
+
+
+
+
+ The EMR_CREATEMONOBRUSH record defines a monochrome pattern brush for graphics operations.
+ The pattern is specified by a monochrome DIB.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the monochrome
+ pattern brush object in the EMF Object Table (section 3.1.1.1). This index MUST be saved so
+ that this object can be reused or modified.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the color
+ table in the DIB header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a buffer containing a packed DIB in the form of a WMF
+ DeviceIndependentBitmap object ([MS-WMF] section 2.2.2.9). It is not required to be
+ contiguous with the fixed portion of the EMR_CREATEDIBPATTERNBRUSHPT record.
+
+
+
+
+ The EMR_CREATEPALETTE record defines a logical palette for graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the logical palette object
+ in the EMF Object Table (section 3.1.1.1). This index MUST be saved so that this object can be
+ reused or modified.
+
+
+
+
+ Gets or sets a LogPalette object (section 2.2.17). The Version field of this object
+ MUST be set to 0x0300. If the NumberOfEntries value in this object is zero, processing of
+ this record MUST fail.
+
+
+
+
+ The EMR_CREATEPEN record defines a logical pen for graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the logical pen object in
+ the EMF Object Table (section 3.1.1.1). This index MUST be saved so that this object can be
+ reused or modified.
+
+
+
+
+ Gets or sets a LogPen object (section 2.2.19) that specifies the style, width, and color
+ of the logical pen.
+
+
+
+
+ The EMR_DELETECOLORSPACE record deletes a logical color space object.
+
+
+ An EMR_DELETEOBJECT record SHOULD be used instead of EMR_DELETECOLORSPACE to delete a
+ logical color space object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of a logical color space object
+ in the EMF Object Table (section 3.1.1.1).
+
+
+ This object is either a WMF LogColorSpace or LogColorSpaceW object ([MS-WMF] sections
+ 2.2.2.11 and 2.2.2.12, respectively).
+
+
+
+
+ The EMR_DELETEOBJECT record deletes a graphics object, which is specified by its index in the EMF Object Table(section 3.1.1.1).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies either the index of a graphics object
+ in the EMF Object Table or the index of a stock object from the StockObject enumeration.
+
+
+
+
+ The EMR_DRAWESCAPE record passes arbitrary information to a printer driver. The intent is that the
+ information will result in drawing being done.
+
+
+
+
+ The escape record types execute printer driver functions.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the printer driver escape to
+ execute. This MUST be one of the values in the WMF MetafileEscapes enumeration ([MSWMF] section 2.1.1.17).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer specifying the number of bytes to pass to the printer driver.
+
+
+
+
+ Gets or sets the data to pass to the printer driver. There MUST be cjIn bytes available.
+
+
+
+
+ The EMR_ELLIPSE record specifies an ellipse. The center of the ellipse is the center of the specified
+ bounding rectangle. The ellipse is outlined by using the current pen and is filled by using the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit (WMF) RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive bounding rectangle.
+
+
+
+
+ This record closes a path bracket and selects the path defined by the bracket into
+ the playback device context.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_EOF record indicates the end of the metafile and specifies a palette.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets an optional buffer that contains palette data, which is not
+ required to be contiguous with the fixed portion of the EMR_EOF
+ record. Accordingly, fields in this buffer that are labeled
+ "UndefinedSpace" are optional and MUST be ignored.
+ The size of this field MUST be a multiple of 4 bytes
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that MUST be the same as Size and MUST be the last
+ field of the record and hence the metafile. LogPaletteEntry objects, if they
+ exist, MUST precede this field.
+
+
+
+
+ The EMR_EXCLUDECLIPRECT record specifies a new clipping region that consists of the existing
+ clipping region minus the specified rectangle.
+ Note Fields that are not described in this section are specified in section 2.3.2.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the clipping
+ rectangle in logical units.
+
+
+
+
+ The EMR_EXTCREATEFONTINDIRECTW record defines a logical font for graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the logical font object
+ in the EMF Object Table (section 3.1.1.1). This index MUST be saved so that this object can be
+ reused or modified.
+
+
+
+
+ Gets or sets a LogFontExDv object (section 2.2.15), which specifies the logical font. A
+ LogFont object 2.2.13 MAY be present instead.[90]The process for determining the type of
+ object in this field is described below.
+
+
+
+
+ The EMR_EXTCREATEPEN record defines an extended logical pen for graphics operations. An
+ optional DIB can be specified to use as the line style.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies the index of the extended logical
+ pen object in the EMF Object Table (section 3.1.1.1).
+ This index MUST be saved so that this object can be reused or modified.
+
+
+
+
+ Gets or sets a LogPenEx object (section 2.2.20) that specifies an extended logical
+ pen with attributes including an optional line style array.
+
+
+
+
+ Gets or sets an optional buffer containing a packed DIB in the form of a WMF DeviceIndependentBitmap object
+ ([MS-WMF] section 2.2.2.9). It is not required to be contiguous with the fixed portion of the EMR_EXTCREATEPEN record
+
+
+
+
+ The EMR_EXTESCAPE record passes arbitrary information to a printer driver. The intent is that the
+ information will not result in drawing being done.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer specifying the number of bytes to pass to the printer driver.
+
+
+
+
+ Gets or sets the data to pass to the printer driver. There MUST be cjIn bytes available.
+
+
+
+
+ The EMR_EXTFLOODFILL record fills an area of the display surface with the current brush
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF PointL object ([MS-WMF] section 2.2.2.15), which specifies the
+ coordinates, in logical units, where filling begins.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8), which is used with the
+ FloodFillMode to determine the area to fill.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to use the Color value
+ to determine the area for the flood fill operation. The value MUST be in the FloodFill
+ enumeration (section 2.1.13).
+
+
+
+
+ The EMR_EXTSELECTCLIPRGN record combines the specified region with the current clip region
+ using the specified mode.
+ Note Fields that are not described in this section are specified in section 2.3.2.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of region data in bytes.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the way to use the region. The
+ value MUST be in the RegionMode (section 2.1.29) enumeration.
+
+
+
+
+ Gets or sets a RgnDataSize length array of bytes that specifies a RegionData object
+ in logical units. If RegionMode is RGN_COPY, this data can be omitted and the clip region
+ SHOULD be set to the default (NULL) clip region.
+
+
+
+
+ The EMR_EXTTEXTOUTA record draws an ASCII text string using the current font and text colors.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19). It is not used and
+ MUST be ignored on receipt.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the graphics mode from the
+ GraphicsMode enumeration (section 2.1.16).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the scale factor to apply along
+ the X axis to convert from page space units to .01mm units. This SHOULD be used only if the
+ graphics mode specified by iGraphicsMode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the scale factor to apply along
+ the Y axis to convert from page space units to .01mm units. This SHOULD be used only if the
+ graphics mode specified by iGraphicsMode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets an EmrText object (section 2.2.5) that specifies the output string in 8-bit
+ ASCII characters, text attributes, and spacing values.
+
+
+
+
+ The EMR_EXTTEXTOUTW record draws an ASCII text string using the current font and text colors.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19). It is not used and
+ MUST be ignored on receipt.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the graphics mode from the
+ GraphicsMode enumeration (section 2.1.16).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the scale factor to apply along
+ the X axis to convert from page space units to .01mm units. This SHOULD be used only if the
+ graphics mode specified by iGraphicsMode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the scale factor to apply along
+ the Y axis to convert from page space units to .01mm units. This SHOULD be used only if the
+ graphics mode specified by iGraphicsMode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets an EmrText object (section 2.2.5) that specifies the output string in 16-bit Unicode UTF16-LE characters, with text attributes and spacing values.
+
+
+
+
+ The EMR_FILLPATH record closes any open figures in the current path and fills the path's interior by
+ using the current brush and polygon-filling mode.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies bounding rectangle, in device units.
+
+
+
+
+ The EMR_FILLRGN record fills the specified region by using the specified brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of region data, in bytes.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the brush EMF Object Table index
+ to fill the region.
+
+
+
+
+ Gets or sets a RgnDataSize length array of bytes that contains a RegionData (section 2.2.24) object.
+
+
+
+
+ This record transforms any curves in the selected path into the playback device
+ context; each curve MUST be turned into a sequence of lines.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_FORCEUFIMAPPING record forces the font mapper to match fonts based on their
+ UniversalFontId in preference to their LogFont (section 2.2.13) information.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets the font id to use, specified as a UniversalFontId (section 2.2.27).
+
+
+
+
+ The EMR_FRAMERGN record draws a border around the specified region using the specified brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the bounding rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of region data, in bytes.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the brush EMF Object Table index.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the width of the vertical brush stroke, in logical units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the height of the horizontal brush
+ stroke, in logical units.
+
+
+
+
+ Gets or sets a RgnDataSize length array of bytes that specifies a RegionData object,
+ in logical units
+
+
+
+
+ The EMR_GLSBOUNDEDRECORD record specifies an OpenGL function with a bounding rectangle for output.
+
+
+
+
+ The OpenGL record types specify OpenGL functions.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines a bounding
+ rectangle, in device units, for output produced by executing the OpenGL function.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size, in bytes, of the Data field.
+ If this value is zero, no data is attached to this record.
+
+
+
+
+ Gets or sets an optional array of bytes of cbData length that specifies data for the OpenGL function.
+
+
+
+
+ The EMR_GLSRECORD record specifies an OpenGL function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size, in bytes, of the Data field.
+ If this value is zero, no data is attached to this record.
+
+
+
+
+ Gets or sets an optional array of bytes of cbData length that specifies data for the OpenGL function.
+
+
+
+
+ The EMR_GRADIENTFILL record specifies filling rectangles or triangles with gradients of color.
+
+
+ An EMR_GRADIENTFILL record that specifies that the three vertexes of a triangle SHOULD fill the
+ figure with smooth gradients of colors.[85]
+ An EMR_GRADIENTFILL record that specifies that the upper-left and lower-right vertexes of a
+ rectangle SHOULD fill the figure with smooth gradients of color. There are two gradient fill modes in
+ the GradientFill enumeration that can be used when drawing a rectangle. In
+ GRADIENT_FILL_RECT_H mode, the rectangle is filled from left to right. In
+ GRADIENT_FILL_RECT_V mode, the rectangle is filled from top to bottom.
+ Note An EMR_GRADIENTFILL record MUST ignore the Alpha fields in the TriVertex objects. An
+ EMR_ALPHABLEND record (section 2.3.1.1) that immediately follows the EMR_GRADIENTFILL record
+ can be used to apply an alpha transparency gradient to the filled area.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies a
+ bounding rectangle, in inclusive-inclusive device units.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of vertexes.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of rectangles or triangles to fill.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the gradient fill mode. The value
+ MUST be in the GradientFill enumeration (section 2.1.15).
+
+
+
+
+ Gets or sets objects that specify the vertexes of either rectangles or triangles and
+ the colors that correspond to them.
+
+
+
+
+ The EMR_INTERSECTCLIPRECT record specifies a new clipping region from the intersection of the
+ current clipping region and the specified rectangle.
+ Note Fields that are not described in this section are specified in section 2.3.2.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the rectangle in logical units.
+
+
+
+
+ The EMR_INVERTRGN record inverts the colors in the specified region.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of region data, in bytes.
+
+
+
+
+ Gets or sets a RgnDataSize length array of bytes that specifies a RegionData object, in logical units.
+
+
+
+
+ The EMR_LINETO record specifies a line from the current position up to, but not including, the
+ specified point.It resets the current position to the specified point.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15,
+ which specifies the coordinates of the line's ending point.
+
+
+
+
+ The EMR_MASKBLT record specifies a block transfer of pixels from a source bitmap to a destination
+ rectangle, optionally in combination with a brush pattern and with the application of a color mask
+ bitmap, according to specified foreground and background raster operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the destination rectangle.
+
+
+
+
+ Gets or sets a quaternary raster operation, which specifies ternary raster operations for
+ the foreground and background colors of a bitmap. These values define how the color data of
+ the source rectangle is to be combined with the color data of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8 that specifies the
+ background color of the source bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left corner of the mask bitmap.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left corner of the mask bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the mask bitmap header. This value MUST be in the DIBColors enumeration.
+
+
+
+
+ Gets or sets a buffer containing the source bitmaps, which are not
+ required to be contiguous with the fixed portion of the EMR_MASKBLT record or with each
+ other. Accordingly, fields in this buffer that are labeled "UndefinedSpace" are optional and
+ MUST be ignored.
+
+
+
+
+ Gets or sets a buffer containing the mask bitmaps, which are not
+ required to be contiguous with the fixed portion of the EMR_MASKBLT record or with each
+ other. Accordingly, fields in this buffer that are labeled "UndefinedSpace" are optional and
+ MUST be ignored.
+
+
+
+
+ The EMR_HEADER record types define the starting points of EMF metafiles
+ and specify properties of the device on which the image in the metafile
+ was created. The information in the header record makes it possible for
+ EMF metafiles to be independent of any specific output device.
+ The value of the Size field can be used to distinguish between the different
+ EMR_HEADER record types listed earlier in this section.
+ There are three possible headers:
+ The base header, which is the EmfMetafileHeader record.
+ The fixed-size part of this header is 88 bytes, and it contains a Header object.
+ The first extension header, which is the EmfMetafileHeaderExtension1 record.
+ The fixed-size part of this header is 100 bytes, and it contains a Header object
+ and a HeaderExtension1 object (section 2.2.10).
+ The second extension header, which is the EmfMetafileHeaderExtension2 record.
+ The fixed-size part of this header is 108 bytes, and it contains a Header object,
+ a HeaderExtension1 object, and a HeaderExtension2 object (section 2.2.11).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The header.
+
+
+
+ Gets or sets a Header object (section 2.2.9), which contains information about the content
+ and structure of the metafile
+
+
+
+
+ Gets or sets an optional array of bytes that contains the remainder of the EMF header record.
+ The size of this field MUST be a multiple of 4 bytes
+
+
+
+
+ Gets or sets the EMF description buffer
+ An optional array of bytes that contains the EMF description string, which is
+ not required to be contiguous with the fixed portion of the EmfMetafileHeader
+ record. Accordingly, the field in this buffer that is labeled "UndefinedSpace"
+ is optional and MUST be ignored.
+
+
+
+
+ Gets or sets the EMF description
+ An optional, null-terminated Unicode UTF16-LE string of arbitrary length and content.
+ Its location in the record and number of characters are specified by the offDescription
+ and nDescription fields, respectively, in EmfHeader. If the value of either field
+ is zero, no description string is present.
+
+
+
+
+ The EmfMetafileHeaderExtension1 record is the header record used in the first extension to EMF metafiles.
+ Following the EmfHeaderExtension1 field, the remaining fields are optional and can be present in any order.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The header.
+
+
+
+ Initializes a new instance of the class.
+
+ The header.
+
+
+
+ Gets or sets a HeaderExtension1 object, which specifies additional information about the image in the metafile.
+
+
+
+
+ Gets or sets an optional array of bytes that contains the EMF pixel format descriptor, which is not required to
+ be contiguous with the fixed portion of the EmfMetafileHeaderExtension1 record or with the EMF
+ description string. Accordingly, the field in this buffer that is labeled "UndefinedSpace" is
+ optional and MUST be ignored
+
+
+
+
+ The EmfMetafileHeaderExtension2 record is the header record used in the second extension to EMF
+ metafiles. Following the EmfHeaderExtension2 field, the remaining fields are optional and
+ can be present in any order.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The header.
+
+
+
+ Initializes a new instance of the class.
+
+ The header.
+
+
+
+ Gets or sets a HeaderExtension2 object, which specifies additional information about the image in the metafile
+
+
+
+
+ The EMR_MODIFYWORLDTRANSFORM record modifies the current world-space to page-space
+ transform in the playback device context.
+
+
+ For more information concerning transforms and coordinate spaces, see [MSDN-WRLDPGSPC]. See
+ section 2.3.12 for the specification of other transform record types.
+
+
+
+
+ The transform record types specify and modify world-space to page-space transforms.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+ The record type.
+
+
+
+ Gets or sets an XForm object (section 2.2.28), which defines a world-space to page space transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how the
+ transform specified in Xform is used. This value MUST be in the
+ ModifyWorldTransformMode enumeration (section 2.1.24).
+
+
+
+
+ The EMR_MOVETOEX record specifies coordinates of the new current position, in logical units.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15,
+ which specifies coordinates of the new current position in logical units.
+
+
+
+
+ The MR_NAMEDESCAPE record passes arbitrary information to a specified printer driver.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets A 32-bit unsigned integer that specifies the number of bytes in the
+ DriverName field. This value MUST be an even number.
+
+
+
+
+ Gets or sets A 32-bit unsigned integer specifying the number of bytes to pass to the printer driver.
+
+
+
+
+ Gets or sets A string of 16-bit Unicode characters that specifies the name of the
+ printer driver that will receive data. This value MUST be cjDriver bytes long, and it MUST be
+ terminated with a null character.
+
+
+
+
+ Gets or sets The data to pass to the printer driver. There MUST be cjIn bytes available.
+
+
+
+
+ The EMR_OFFSETCLIPRGN record moves the current clipping region in the playback device context
+ by the specified offsets.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the
+ horizontal and vertical offsets in logical units.
+
+
+
+
+ The EMR_PAINTRGN record paints the specified region by using the brush currently selected into the
+ playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of region data, in bytes.
+
+
+
+
+ Gets or sets a RgnDataSize length array of bytes that specifies a RegionData (section
+ 2.2.24) object, in logical units.
+
+
+
+
+ The EMR_PIE record specifies a pie-shaped wedge bounded by the intersection of an ellipse and two
+ radials. The pie is outlined by using the current pen and filled by using the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive bounding rectangle.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL objects, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the coordinates, in logical units, of the endpoint of the first radial.
+
+
+
+
+ Gets or sets a 64-bit PointL object that specifies the coordinates, in logical units, of the
+ endpoint of the second radial.
+
+
+
+
+ The EMR_PIXELFORMAT record specifies the pixel format to use for graphics operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a PixelFormatDescriptor object (section 2.2.22) that specifies pixel format data.
+
+
+
+
+ The EMR_PLGBLT record specifies a block transfer of pixels from a source bitmap to a destination
+ parallelogram, with the application of a color mask bitmap.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ bounding rectangle, in device units, for output to the destination.
+
+
+
+
+ Gets or sets an array of three WMF PointL objects ([MS-WMF] section 2.2.2.15) that
+ specifies three corners a parallelogram destination area for the block transfer.
+ The upper-left corner of the source rectangle is mapped to the first point in this array, the
+ upper-right corner to the second point, and the lower-left corner to the third point. The lower-right corner of the source rectangle is mapped to the implicit fourth point in the
+ parallelogram, which is computed from the first three points (A, B, and C) by treating them as
+ vectors.
+ D = B + C A
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies the
+ background color of the source bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left corner of the mask bitmap.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left corner of the mask bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the mask bitmap header. This value MUST be in the DIBColors enumeration.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which are not
+ required to be contiguous with the fixed portion of the EMR_PLGBLT record or with each other.
+ Accordingly, fields in this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ Gets or sets a buffer containing the mask bitmap, which are not
+ required to be contiguous with the fixed portion of the EMR_PLGBLT record or with each other.
+ Accordingly, fields in this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ The EMR_POLYBEZIER record specifies one or more Bezier curves.
+
+
+ Cubic Bezier curves are defined using the endpoints and control points specified by the aPoints
+ field. The first curve is drawn from the first point to the fourth point, using the second and third
+ points as control points. Each subsequent curve in the sequence needs exactly three more points:
+ the ending point of the previous curve is used as the starting point, the next two points in the
+ sequence are control points, and the third is the ending point.
+ The cubic Bezier curves SHOULD be drawn using the current pen
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specifies the endpoints and control points of the Bezier curves, in logical units.
+
+
+
+
+ The EMR_POLYBEZIER16 record specifies one or more Bezier curves. The curves are drawn using
+ the current pen.
+
+
+ Cubic Bezier curves are defined using the endpoints and control points specified by the aPoints
+ field. The first curve is drawn from the first point to the fourth point, using the second and third
+ points as control points. Each subsequent curve in the sequence needs exactly three more points:
+ the ending point of the previous curve is used as the starting point, the next two points in the
+ sequence are control points, and the third is the ending point.
+ The cubic Bezier curves SHOULD be drawn using the current pen
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYBEZIERTO record specifies one or more Bezier curves based upon the current position.
+
+
+ Cubic Bezier curves are defined using the endpoints and control points specified by the aPoints
+ field. The first curve is drawn from the first point to the fourth point, using the second and third
+ points as control points. Each subsequent curve in the sequence needs exactly three more points:
+ the ending point of the previous curve is used as the starting point, the next two points in the
+ sequence are control points, and the third is the ending point.
+ The cubic Bezier curves SHOULD be drawn using the current pen
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specifies the endpoints and control points of the Bezier curves in logical units.
+
+
+
+
+ The EMR_POLYBEZIERTO16 record specifies one or more Bezier curves based on the current position.
+
+
+ Cubic Bezier curves are defined using the endpoints and control points specified by the aPoints
+ field. The first curve is drawn from the first point to the fourth point, using the second and third
+ points as control points. Each subsequent curve in the sequence needs exactly three more points:
+ the ending point of the previous curve is used as the starting point, the next two points in the
+ sequence are control points, and the third is the ending point.
+ The cubic Bezier curves SHOULD be drawn using the current pen
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points
+
+
+
+
+ The EMR_POLYDRAW record specifies a set of line segments and Bezier curves.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects, specified in [MS-WMF]
+ section 2.2.2.15, which specifies the array of points, in logical units.
+
+
+
+
+ Gets or sets a Count length array of byte values that specifies how each point in the
+ Gets or sets aPoints array is used. This value MUST be in the Point (section 2.1.26) enumeration.
+
+
+
+
+ The EMR_POLYDRAW16 record specifies a set of line segments and Bezier curves.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ Gets or sets a Count length array of bytes that specifies the point types. This value
+ MUST be in the Point (section 2.1.26) enumeration.
+
+
+
+
+ The EMR_POLYGON record specifies a polygon consisting of two or more vertexes connected by
+ straight lines.
+
+
+ The polygon SHOULD be outlined using the current pen and filled using the current brush and
+ polygon fill mode. The polygon SHOULD be closed automatically by drawing a line from the last
+ vertex to the first
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specifies the vertexes of the polygon in logical units.
+
+
+
+
+ The EMR_POLYGON16 record specifies a polygon consisting of two or more vertexes connected by
+ straight lines. The polygon is outlined by using the current pen and filled by using the current brush
+ and polygon fill mode. The polygon is closed automatically by drawing a line from the last vertex to the first.
+
+
+ The polygon SHOULD be outlined using the current pen and filled using the current brush and
+ polygon fill mode. The polygon SHOULD be closed automatically by drawing a line from the last
+ vertex to the first
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYLINE record specifies a series of line segments by connecting the points in the
+ specified array.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specifies the point data, in logical units.
+
+
+
+
+ The EMR_POLYLINE16 record specifies a series of line segments by connecting the points in the
+ specified array.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYLINETO record specifies one or more straight lines based upon the current position.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specifies the point data, in logical units.
+
+
+
+
+ The EMR_POLYLINETO16 record specifies one or more straight lines based upon the current position.
+ A line is drawn from the current position to the first point specified by the aPoints field by using the
+ current pen. For each additional line, drawing is performed from the ending point of the previous
+ line to the next point specified by aPoints.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYPOLYGON record specifies a series of closed polygons.
+
+
+ Each polygon SHOULD be outlined using the current pen, and filled using the current brush and
+ polygon fill mode that are defined in the playback device context. The polygons defined by this
+ record can overlap.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the
+ bounding rectangle, in device units.
+
+
+
+
+ Gets or sets an array of WMF PointL objects ([MS-WMF] section 2.2.2.15) that
+ specifies the points for all polygons in logical units. The number of points is specified by the
+ Count field value.
+
+
+
+
+ The EMR_POLYPOLYGON16 record specifies a series of closed polygons. Each polygon is outlined
+ using the current pen, and filled using the current brush and polygon fill mode. The polygons drawn
+ by this record can overlap.
+
+
+ Each polygon SHOULD be outlined using the current pen, and filled using the current brush and
+ polygon fill mode that are defined in the playback device context. The polygons defined by this
+ record can overlap.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19,
+ which specifies the bounding rectangle, in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYPOLYLINE record specifies multiple series of connected line segments.
+
+
+ The line segments SHOULD be drawn using the current pen. The figures formed by the segments
+ SHOULD NOT filled. The current position SHOULD neither be used nor updated by this record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle in device units.
+
+
+
+
+ Gets or sets a Count-length array of WMF PointL objects ([MS-WMF] section 2.2.2.15)
+ that specify the point data, in logical units.
+
+
+
+
+ The EMR_POLYPOLYLINE16 record specifies multiple series of connected line segments.
+
+
+ The line segments SHOULD be drawn using the current pen. The figures formed by the segments
+ SHOULD NOT filled. The current position SHOULD neither be used nor updated by this record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle in device units.
+
+
+
+
+ Gets or sets a Count length array of WMF PointS objects, specified in [MS-WMF]
+ section 2.2.2.16, which specifies the array of points.
+
+
+
+
+ The EMR_POLYTEXTOUTA record draws one or more ASCII text strings using the current font and text colors.
+
+
+ The font and text colors used for output are specified by properties in the current state of the
+ playback device context.
+ EMR_POLYTEXTOUTA SHOULD be emulated with a series of EMR_EXTTEXTOUTW records (section
+ 2.3.5.7), one per string. This requires the ASCII text string in each EmrText object to be converted
+ to Unicode UTF16-LE encoding.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19), which specifies the
+ bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the current graphics mode,
+ from the GraphicsMode enumeration (section 2.1.16).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the X scale from page units to
+ .01mm units if graphics mode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the Y scale from page units to
+ .01mm units if graphics mode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets an array of EmrText objects (section 2.2.5) that specify the output
+ strings in 8-bit ASCII characters, with text attributes, and spacing values. The number of
+ EmrText objects is specified by cStrings.
+
+
+
+
+ The EMR_POLYTEXTOUTW record draws one or more Unicode text strings using the current font and text colors.
+
+
+ The font and text colors used for output are specified by properties in the current state of the
+ playback device context.
+ EMR_POLYTEXTOUTW SHOULD be emulated with a series of EMR_EXTTEXTOUTW records (section
+ 2.3.5.7), one per string.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19), which specifies the
+ bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the current graphics mode,
+ from the GraphicsMode enumeration (section 2.1.16).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the X scale from page units to
+ .01mm units if graphics mode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies the Y scale from page units to
+ .01mm units if graphics mode is GM_COMPATIBLE.
+
+
+
+
+ Gets or sets an array of EmrText objects (section 2.2.5) that specify the output
+ strings in 16-bit Unicode UTF16-LE characters, with text attributes and spacing values. The
+ number of EmrText objects is specified by cStrings.
+
+
+
+
+ This record maps palette entries from the current
+ LogPalette object (section 2.2.17) to the system_palette.
+ This EMF record specifies no parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EMR_RECTANGLE record draws a rectangle. The rectangle is outlined by using the current pen
+ and filled by using the current brush.
+
+
+
+ The current position is neither used nor updated by Rectangle.
+ If a PS_NULL pen is used, the dimensions of the rectangle are 1 pixel less in height and 1 pixel less
+ in width.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive rectangle to draw.
+
+
+
+
+ The EMR_RESIZEPALETTE record increases or decreases the size of an existing LogPalette object (section 2.2.17).
+
+
+ The new size of the LogPalette object MUST be reflected in the NumberOfEntries field in that structure.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the palette object in the
+ EMF Object Table (section 3.1.1.1).
+
+
+
+
+ The EMR_RESTOREDC record restores the playback device context to the specified state. The
+ playback device context is restored by popping state information off a stack that was created by
+ prior EMR_SAVEDC records (section 2.3.11).
+
+
+ The stack can contain state information for multiple instances of the playback device context. When
+ a state is restored, all state instances that were saved more recently MUST be discarded.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the saved state to restore relative to
+ the current state. This value MUST be negative; –1 represents the state that was most
+ recently saved on the stack, –2 the one before that, etc.
+
+
+
+
+ A quaternary raster operation, which specifies ternary raster operations for
+ the foreground and background colors of a bitmap. These values define how the color data of
+ the source rectangle is to be combined with the color data of the destination rectangle.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The dword data.
+
+
+
+ Gets the background ROP3.
+ The unsigned, most-significant 8 bits of a 24-bit ternary
+ raster operation value from the WMF Ternary Raster Operation enumeration ([MS-WMF] section 2.1.1.31). This code defines how to combine the background color data of
+ the source and destination bitmaps and brush pattern.
+
+
+ The background ROP3.
+
+
+
+
+ Gets the foreground ROP3.
+ The unsigned, most-significant 8 bits of a 24-bit ternary
+ raster operation value from the WMF Ternary Raster Operation enumeration. This
+ code defines how to combine the foreground color data of the source and destination
+ bitmaps and brush pattern.
+
+
+ The foreground ROP3.
+
+
+
+
+ The EMR_ROUNDRECT record specifies a rectangle with rounded corners. The rectangle is outlined
+ by using the current pen and filled by using the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object, specified in [MS-WMF] section 2.2.2.19, which
+ specifies the inclusive-inclusive rectangle to draw.
+
+
+
+
+ Gets or sets a 64-bit WMF SizeL object, specified in [MS-WMF] section 2.2.2.22, which
+ specifies the width and height, in logical coordinates, of the ellipse used to draw the rounded corners.
+
+
+
+
+ Saves the current state of playback device context on a
+ stack of states saved by preceding EMR_SAVEDC
+ records, if any. The state consists of graphics properties
+ and objects, including the currently selected bitmap,
+ brush, palette, font, pen, and region. An
+ EMR_RESTOREDC record is used to restore the state.
+ This EMF record specifies no parameters.
+
+
+ The stack can contain state information for multiple instances of the playback device context. When
+ a state is restored, all state instances that were saved more recently MUST be discarded.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_SCALEVIEWPORTEXTEX record respecifies the viewport for a device context by using the
+ ratios formed by the specified multiplicands and divisors.
+
+
+ The extent cannot be changed if the device context is using a fixed scale mapping mode.
+ Only MM_ISOTROPIC and MM_ANISOTROPIC are not fixed scale. The viewport extents
+ are modified as follows.
+ xNewWE = (xOldWE * xNum) / xDenom
+ yNewWE = (yOldWE * yNum) / yDenom
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the horizontal multiplicand. Cannot be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the horizontal divisor. Cannot be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the vertical multiplicand. Cannot be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the vertical divisor. Cannot be zero.
+
+
+
+
+ The EMR_SCALEWINDOWEXTEX record respecifies the window for a playback device context by
+ using the ratios formed by the specified multiplicands and divisors.
+
+
+ The extent cannot be changed if the device context is using a fixed scale mapping mode. Only
+ MM_ISOTROPIC and MM_ANISOTROPIC are not fixed scale. The window extents are
+ modified as follows.
+ xNewWE = (xOldWE * xNum) / xDenom
+ yNewWE = (yOldWE * yNum) / yDenom
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the horizontal multiplicand. MUST NOT be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the horizontal divisor. MUST NOT be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the vertical multiplicand. MUST NOT be zero.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the vertical divisor. MUST NOT be zero.
+
+
+
+
+ The EMR_SELECTCLIPPATH record specifies the current path as a clipping region for a playback
+ device context, combining the new region with any existing clipping region using the specified mode.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the way to use the path. The
+ value MUST be in the RegionMode enumeration (section 2.1.29).
+
+
+
+
+ The EMR_SELECTOBJECT record adds a graphics object to the current metafile playback device
+ context. The object is specified either by its index in the EMF Object Table(section 3.1.1.1) or by its
+ value from the StockObject enumeration(section 2.1.31).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets 32-bit unsigned integer that specifies either the index of a graphics object
+ in the EMF Object Table or the index of a stock object from the enumeration.
+
+
+
+
+ The EMR_SELECTPALETTE record specifies a logical palette for the playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies either the index of a LogPalette object
+ (section 2.2.17) in the EMF Object Table or the value DEFAULT_PALETTE, which is the index
+ of a stock object palette from the StockObject enumeration (section 2.1.31).
+
+
+ This value MUST NOT be zero or the index of any other stock object.
+
+
+
+
+ The EMR_SETARCDIRECTION record specifies the drawing direction to be used for arc and rectangle output.
+
+
+ The EMR_SETARCDIRECTION record affects the direction in which the following records draw:
+ - EMR_ARC (section 2.3.5.2)
+ - EMR_ARCTO (section 2.3.5.3)
+ - EMR_CHORD (section 2.3.5.4)
+ - EMR_ELLIPSE (section 2.3.5.5)
+ - EMR_PIE (section 2.3.5.15)
+ - EMR_RECTANGLE (section 2.3.5.34)
+ - EMR_ROUNDRECT (section 2.3.5.35)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the arc direction. The value
+ MUST be in the ArcDirection enumeration (section 2.1.2).
+ The default direction is counterclockwise.
+
+
+
+
+ The EMR_SETBKCOLOR record specifies the background color.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit WMF ColorRef object, specified in [MS-WMF] section 2.2.2.8, which
+ specifies the background color value.
+
+
+
+
+ The EMR_SETBKMODE record specifies the background mix mode of the playback device context.
+ The background mix mode is used with text, hatched brushes, and pen styles that are not solid lines.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the background mode
+ and MUST be in the BackgroundMode (section 2.1.4) enumeration.
+
+
+
+
+ The EMR_SETBRUSHORGEX record specifies the origin of the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object, specified in [MS-WMF] section 2.2.2.15, which
+ specifies the brush's horizontal and vertical origin in device units.
+
+
+
+
+ The EMR_SETCOLORADJUSTMENT record specifies color adjustment properties in the playback
+ device context.
+
+
+ Color adjustment values are used to adjust the input color of the source bitmap for graphics
+ operations performed by EMR_STRETCHBLT and EMR_STRETCHDIBITS records when
+ STRETCH_HALFTONE mode is set from the StretchMode enumeration (section 2.1.32).
+ The ColorAdjustment object specified by this record MUST be used in graphics operations that
+ require a ColorAdjustment object, until a different ColorAdjustment object is specified by another
+ EMR_SETCOLORADJUSTMENT record, or until the object is removed by a EMR_DELETEOBJECT
+ record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a ColorAdjustment object (section 2.2.2) that specifies color
+ adjustment values.
+
+
+
+
+ The EMR_SETCOLORSPACE record defines the current logical color space object for graphics operations.
+
+
+ The logical color space object defined by this record MUST be used in drawing operations that are
+ specified by subsequent EMF records, until either a different logical color space object is specified by
+ another EMR_SETCOLORSPACE record, or the object is removed by a EMR_DELETECOLORSPACE
+ record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of a logical color space object
+ in the EMF Object Table (section 3.1.1.1).
+
+
+ This object is either a WMF LogColorSpace or LogColorSpaceW object ([MS-WMF] sections
+ 2.2.2.11 and 2.2.2.12, respectively).
+
+
+
+
+ The EMR_SETDIBITSTODEVICE record specifies a block transfer of pixels from specified scan lines of
+ a source bitmap to a destination rectangle.
+
+
+ This record supports source images in JPEG and PNG format. The Compression field in the source
+ bitmap header specifies the image format.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the x-coordinate in pixels of the lower-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the y-coordinate in pixels of the lower-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the width in pixels of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the height in pixels of the source rectangle
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the first scan line in the array.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of scan lines.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_SETDIBITSTODEVICE record. Accordingly, fields
+ in this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ The EMR_SETICMMODE record specifies the mode of Image Color Management (ICM) for graphics operations.
+
+
+ When ICM mode is enabled, colors specified in EMF records SHOULD be color matched, whereas the
+ default color profile in the playback device context SHOULD be used when a bit-block transfer is
+ performed. If the default color profile is not desired, ICM mode SHOULD be turned off before
+ performing the bit-block transfer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies whether to enable or disable ICM,
+ from the ICMMode enumeration (section 2.1.18). This value is part of the state of the
+ playback device context.
+
+
+
+
+ The EMR_SETICMPROFILEA record specifies a color profile in a file with a name consisting of ASCII
+ characters, for graphics output.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that contains color profile flags.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of bytes in the ASCII
+ name of the desired color profile.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of the color profile data, if it
+ is contained in the Data field.
+
+
+
+
+ Gets or sets an array of size (cbName + cbData) in bytes, which specifies the ASCII
+ name and raw data of the desired color profile.
+
+
+
+
+ Gets the name
+
+
+
+
+ Gets the raw data
+
+
+
+
+ The EMR_SETICMPROFILEW record specifies a color profile in a file with a name consisting of
+ Unicode characters, for graphics output.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that contains color profile flags.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of bytes in the Unicode
+ UTF16-LE name of the desired color profile.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the size of color profile data, if attached.
+
+
+
+
+ Gets or sets an array of size (cbName + cbData) in bytes, which specifies the UTF16-LE
+ name and raw data of the desired color profile.
+
+
+
+
+ Gets the name
+
+
+
+
+ Gets the raw data
+
+
+
+
+ The EMR_SETLAYOUT record specifies the order in which text and graphics are drawn.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the layout mode
+
+
+
+
+ A 32-bit unsigned integer that specifies the layout mode
+
+
+
+
+ Sets the default horizontal layout to be left-to-right.
+ This is the default mode for English and European
+ locales.
+
+
+
+
+ Sets the default horizontal layout to be right-to-left.
+ This mode is required for some languages, including
+ Arabic and Hebrew.
+
+
+
+
+ Disables mirroring of bitmaps that are drawn by
+ Bitmap Record Types (section 2.3.1), when the layout
+ mode is right-to-left.
+
+
+
+
+ The EMR_SETLINKEDUFIS record sets the UniversalFontIds (section 2.2.27) of the linked fonts to
+ use during character lookup.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets an array of uNumLinkedUFI elements of type UniversalFontId, which specifies
+ the identifiers of the linked fonts.
+
+
+
+
+ The EMR_SETMAPMODE record specifies the mapping mode of the playback device context.
+ The mapping mode specifies the unit of measure used to transform page space units
+ into device space units, and also specifies the orientation of the device's x-axis and y-axis.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Gets or sets the map mode.
+
+
+ The map mode.
+
+
+
+
+ The EMR_SETMAPPERFLAGS record specifies parameters of the process of matching logical fonts to
+ physical fonts, which is performed by the font mapper.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies parameters of the font matching process.
+
+
+ 0x00000001 The font mapper SHOULD select only fonts that match the aspect ratio of the output
+ device, as it is currently defined in the playback device context.
+
+
+
+
+ Inter sets the current meta region with the current clipping region
+ to form a new meta region for the playback device context. The
+ current clipping region SHOULD be reset to null.
+ This EMF record specifies no parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ The EMR_SETMITERLIMIT record specifies the limit for the length of miter joins for the playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the new miter length limit.
+
+
+
+
+ The EMR_SETPALETTEENTRIES record defines RGB color values in a range of entries for an existing
+ LogPalette (section 2.2.17) object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the palette EMF Object Table index.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the index of the first entry to set.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of entries.
+
+
+
+
+ Gets or sets an array of LogPaletteEntry (section 2.2.18) objects, of
+ NumberOfEntries length, which specifies the palette entry data. The Values members do
+ not contain any values.
+
+
+
+
+ The EMR_SETPIXELV record defines the color of the pixel at the specified logical coordinates.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the
+ logical coordinates for the pixel.
+
+
+
+
+ Gets or sets a 32-bit WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies the pixel color.
+
+
+
+
+ The EMR_SETPOLYFILLMODE record defines polygon fill mode.
+
+
+ In general, the modes differ only in cases where a complex, overlapping polygon MUST be filled; for
+ example, a five-sided polygon that forms a five-pointed star with a pentagon in the center. In such
+ cases, ALTERNATE mode SHOULD fill every other enclosed region within the polygon (the points of
+ the star), but WINDING mode SHOULD fill all regions (the points of the star and the pentagon).
+ When the fill mode is ALTERNATE, the area between odd-numbered and even-numbered polygon
+ sides on each scan line SHOULD be filled. That is, the area between the first and second side
+ SHOULD be filled, and between the third and fourth side, and so on.
+ When the fill mode is WINDING, any region that has a nonzero winding value SHOULD be filled.
+ The winding value is the number of times a pen used to draw the polygon would go around the
+ region. The direction of each edge of the polygon is significant.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the polygon fill mode and
+ MUST be in the PolygonFillMode (section 2.1.27) enumeration.
+
+
+
+
+ The EMR_SETROP2 record defines a binary raster operation mode.
+
+
+ Binary raster operation mix modes define how to combine source and destination colors when
+ drawing with the current pen. The mix modes are binary raster operation codes, representing all
+ possible Boolean functions of two variables, using the binary operations AND, OR, and XOR
+ (exclusive OR), and the unary operation NOT. The mix mode is for raster devices only; it is not
+ available for vector devices.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the raster operation mode and
+ MUST be in the WMF Binary Raster Op enumeration ([MS-WMF] section 2.1.1.2).
+
+
+
+
+ The EMR_SETSTRETCHBLTMODE record specifies bitmap stretch mode.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the stretch mode and MAY be
+ in the StretchMode enumeration.
+
+
+
+
+ The EMR_SETTEXTALIGN record specifies text alignment.
+
+
+ The EMR_SMALLTEXTOUT, EMR_EXTTEXTOUTA, and EMR_EXTTEXTOUTW records use text
+ alignment values to position a string of text on the output medium. The values specify the
+ relationship between a reference point and a rectangle that bounds the text. The reference point is
+ either the current position or a point passed to a text output record.
+ The rectangle that bounds the text is formed by the character cells in the text string.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies text alignment by
+ using a mask of text alignment flags. These are either
+ ([MS-WMF] section 2.1.2.3) for text with a horizontal baseline, or
+ ([MS-WMF] section 2.1.2.4) for text with a vertical
+ baseline. Only one value can be chosen from those that affect horizontal and vertical
+ alignment.
+
+
+
+
+ The EMR_SETTEXTCOLOR record defines the current text color.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies the text color value.
+
+
+
+
+ The EMR_SETTEXTJUSTIFICATION record specifies the amount of extra space to add to break
+ characters for text justification.
+
+
+ Instead of using an EMR_SETTEXTJUSTIFICATION record, an implementation SHOULD use an
+ EMR_EXTTEXTOUTW record (section 2.3.5.8) to perform this function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the total amount of extra space,
+ in logical units, to add.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the number of break characters.
+
+
+
+
+ The EMR_SETVIEWPORTEXTEX record defines the viewport extent.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF SizeL object ([MS-WMF] section 2.2.2.22) that specifies the
+ horizontal and vertical extents in device units.
+
+
+
+
+ The EMR_SETVIEWPORTORGEX record defines the viewport origin.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the
+ window horizontal and vertical origin in device units.
+
+
+
+
+ The EMR_SETWINDOWEXTEX record defines the window extent.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF SizeL object ([MS-WMF] section 2.2.2.22) that specifies the
+ horizontal and vertical extents in logical units.
+
+
+
+
+ The EMR_SETWINDOWORGEX record defines the window origin.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 64-bit WMF PointL object ([MS-WMF] section 2.2.2.15) that specifies the
+ window horizontal and vertical origin in logical units.
+
+
+
+
+ The EMR_SETWORLDTRANSFORM record specifies a transform for the current world-space to page space transform in the playback device context.
+
+
+ For more information concerning transforms and coordinate spaces, see [MSDN-WRLDPGSPC]. See
+ section 2.3.12 for the specification of other transform record types.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The EMR_SMALLTEXTOUT record outputs a string.
+
+
+ If ETO_SMALL_CHARS is set in the fuOptions field, TextString contains 8-bit codes for
+ characters, derived from the low bytes of 16-bit Unicode UTF16-LE character codes, in which the
+ high byte is assumed to be 0.
+ If ETO_NO_RECT is set in the fuOptions field, the Bounds field is not included in the record.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a 32-bit signed integer specifying the x-coordinate of where to place the string.
+
+
+
+
+ Gets or sets a 32-bit signed integer specifying the y-coordinate of where to place the string.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer specifying the number of 16-bit characters in the
+ string. The string is NOT null-terminated.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer specifying the text output options to use. These
+ options are specified by one or a combination of values from the ExtTextOutOptions
+ enumeration (section 2.1.11).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer specifying the graphics mode, from the
+ GraphicsMode enumeration (section 2.1.16).
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies how much to scale the text in the x-direction.
+
+
+
+
+ Gets or sets a 32-bit floating-point value that specifies how much to scale the text in the y-direction.
+
+
+
+
+ Gets or sets an optional, 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that
+ specifies the bounding rectangle in device units.
+
+
+
+
+ Gets or sets a variable-length string that contains the text string to draw, in either
+ 8-bit or 16-bit character codes, according to the value of the fuOptions field.
+
+
+
+
+ The EMR_STRETCHBLT record specifies a block transfer of pixels from a source bitmap to a
+ destination rectangle, optionally in combination with a brush pattern, according to a specified raster
+ operation, stretching or compressing the output to fit the dimensions of the destination, if necessary.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the raster operation
+ code. This code defines how the color data of the source rectangle is to be combined with the
+ color data of the destination rectangle and optionally a brush pattern, to achieve the final color
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8 that specifies the
+ background color of the source bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the source rectangle.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_STRETCHBLT record. Accordingly, fields in this
+ buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ Gets or sets the source rect.
+
+
+ The source rect.
+
+
+
+
+ Gets or sets the dest rect.
+
+
+ The dest rect.
+
+
+
+
+ The EMR_STRETCHDIBITS record specifies a block transfer of pixels from a source bitmap to a
+ destination rectangle, optionally in combination with a brush pattern, according to a specified raster
+ operation, stretching or compressing the output to fit the dimensions of the destination, if necessary.
+
+
+ This record supports source images in JPEG and PNG formats. The Compression field in the source
+ bitmap header specifies the image format.
+ If the signs of the source and destination height and width fields differ, this record specifies a
+ mirror-image copy of the source bitmap to the destination. That is, if cxSrc and cxDest have
+ different signs, a mirror image of the source bitmap along the x-axis is specified. If cySrc and
+ cyDest have different signs, a mirror image of the source bitmap along the y-axis is specified.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the x-coordinate in pixels of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the y-coordinate in pixels of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the width in pixels of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the height in pixels of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9).
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies a raster operation
+ code. These codes define how the color data of the source rectangle is to be combined with
+ the color data of the destination rectangle and optionally a brush pattern, to achieve the final color.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the destination rectangle.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_STRETCHDIBITS record. Accordingly, fields in
+ this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ The EMR_STROKEANDFILLPATH record closes any open figures in a path, strokes the outline of the
+ path by using the current pen, and fills its interior by using the current brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies
+ the bounding rectangle, in device units.
+
+
+
+
+ EMR_STROKEPATH class
+
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a 128-bit WMF RectL object ([MS-WMF] section 2.2.2.19) that specifies the bounding rectangle in device units
+
+
+
+
+ The EMR_TRANSPARENTBLT record specifies a block transfer of pixels from a source bitmap to a
+ destination rectangle, treating a specified color as transparent, stretching or compressing the output
+ to fit the dimensions of the destination, if necessary
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+ Gets or sets a WMF RectL object ([MS-WMF] section 2.2.2.19) that defines the
+ destination bounding rectangle in device units.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the destination rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the destination rectangle.
+
+
+
+
+ Gets or sets a WMF ColorRef object ([MS-WMF] section 2.2.2.8) that specifies
+ the color in the source bitmap to be treated as transparent.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical x-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical y-coordinate of the upper-left
+ corner of the source rectangle.
+
+
+
+
+ Gets or sets an XForm object (section 2.2.28) that specifies a world-space to page-space transform to apply to the source bitmap.
+
+
+
+
+ Gets or sets a WMF ColorRef object that specifies the background color of the source bitmap.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies how to interpret values in the
+ color table in the source bitmap header. This value MUST be in the DIBColors enumeration (section 2.1.9)
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical width of the source rectangle.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the logical height of the source rectangle.
+
+
+
+
+ Gets or sets a buffer containing the source bitmap, which is not required to be
+ contiguous with the fixed portion of the EMR_TRANSPARENTBLT record. Accordingly, fields in
+ this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.
+
+
+
+
+ Objects that specify the vertexes of either rectangles or triangles and
+ the colors that correspond to them.
+
+
+
+
+ Gets or sets an array of nVer TriVertex objects (section 2.2.26). Each
+ object specifies the position and color of a vertex of either a rectangle or a triangle,
+ depending on the value of the ulMode field.
+
+
+
+
+ Gets or sets an array of nTri GradientRectangle objects (section 2.2.7) or
+ GradientTriangle objects (section 2.2.8), depending on the value of the ulMode field.
+ Each object specifies indexes into the array of TriVertex objects in the VertexObjects field.
+
+
+
+
+ Gets or sets an optional variable-length array of nTri times four bytes
+ that MUST be present if the value of the ulMode field indicates GradientRectangle
+ objects (section 2.2.7). If the value of the ulMode field indicates GradientTriangle
+ objects (section 2.2.8), no VertexPadding is present. This field MUST be ignored.
+
+
+
+
+ This record redefines the current path as the area that would be painted if the path
+ were drawn using the pen currently selected into the playback device context.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The namespace contains types [MS-EMF]: Enhanced Metafile Format.
+ 2.3 EMF Records
+
+
+
+
+ Base class for Meta object classes
+
+
+
+
+ Returns the list of font which used inside metafile.
+
+ The font list
+
+
+
+ Returns the list of fonts which used inside metafile but not found.
+
+ The font list
+
+
+
+ Crop image with shifts.
+
+ The left shift.
+ The right shift.
+ The top shift.
+ The bottom shift.
+
+
+
+ Crops the specified rectangle.
+
+ The rectangle.
+
+
+
+ Resizes the canvas.
+
+ The new rectangle.
+
+
+
+ Gets the can not save message.
+
+ The image options.
+
+ The can not save message.
+
+
+ The can not save message.
+
+
+
+
+ Gets or sets the records.
+
+
+ The records.
+
+
+
+
+ The list of meta objects for EMF, EMF+ and WMF classes
+
+
+
+
+ Initializes a new instance of the class.
+
+ The list - container of objects.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The Escape PostScript data record.
+
+
+
+
+
+ The escape record base.
+
+
+
+
+ The base wmf object.
+
+
+
+
+ Gets or sets the byte count.
+
+
+ A 16-bit unsigned integer that specifies the size, in bytes, of the record data that follows.
+ This value MUST be 34 plus the value of the EnhancedMetafileDataSize field.
+
+
+
+
+ Gets or sets the data.
+
+
+ The data.
+
+
+
+
+ Gets a value indicating whether this is checked.
+
+
+ true if checked; otherwise, false.
+
+
+
+
+ Gets or sets the post script part.
+
+
+ The post script part.
+
+
+
+
+ The namespace contains types [MS-WMF]: Windows Metafile Format
+ 2.1 WMF Constants
+
+
+
+
+ The Enumeration specifies the bitmap
+ stretching mode, which defines how the system combines rows or columns
+ of a bitmap with existing pixels.
+
+
+
+
+ Performs a Boolean AND operation by using the color values for the
+ eliminated and existing pixels. If the bitmap is a monochrome
+ bitmap, this mode preserves black pixels at the expense of white
+ pixels
+
+
+
+
+ Performs a Boolean OR operation by using the color values for the
+ eliminated and existing pixels. If the bitmap is a monochrome
+ bitmap, this mode preserves white pixels at the expense of black
+ pixels
+
+
+
+
+ Deletes the pixels. This mode deletes all eliminated lines of pixels
+ without trying to preserve their information.
+
+
+
+
+ Maps pixels from the source rectangle into blocks of pixels in the
+ destination rectangle. The average color over the destination block
+ of pixels approximates the color of the source pixels.
+
+
+
+
+ The BinaryRasterOperation Enumeration section lists the binary raster-operation codes. Raster operation codes
+ define how metafile processing combines the bits from the selected pen with the
+ bits in the destination bitmap.
+
+
+ Each raster-operation code represents a Boolean operation in which the values of the pixels in the
+ selected pen and the destination bitmap are combined. Following are the two operands used in
+ these operations.
+ Operand Meaning
+ P Selected pen
+ D Destination bitmap
+ a Bitwise AND
+ n Bitwise NOT (inverse)
+ o Bitwise OR
+ x Bitwise exclusive OR (XOR)
+
+
+
+
+ 0, Pixel is always 0.
+
+
+
+
+ DPon, Pixel is the inverse of the MERGEPEN color
+
+
+
+
+ DPna, Pixel is a combination of the screen color and the inverse of the pen color.
+
+
+
+
+ Pn, Pixel is the inverse of the pen color.
+
+
+
+
+ PDna, Pixel is a combination of the colors common to both the pen and the
+ inverse of the screen.
+
+
+
+
+ Dn, Pixel is the inverse of the screen color.
+
+
+
+
+ DPx, Pixel is a combination of the colors in the pen or in the screen, but not in both.
+
+
+
+
+ DPan, Pixel is the inverse of the MASKPEN color.
+
+
+
+
+ DPa, Pixel is a combination of the colors common to both the pen and the screen.
+
+
+
+
+ DPxn, Pixel is the inverse of the XORPEN color.
+
+
+
+
+ D, Pixel remains unchanged.
+
+
+
+
+ DPno, Pixel is a combination of the colors common to both the screen and
+ the inverse of the pen.
+
+
+
+
+ P, Pixel is the pen color.
+
+
+
+
+ PDno, Pixel is a combination of the pen color and the inverse of the
+ screen color.
+
+
+
+
+ DPo, Pixel is a combination of the pen color and the screen color.
+
+
+
+
+ 1, Pixel is always 1
+
+
+
+
+ The BrushStyle Enumeration specifies the different possible brush types
+ that can be used in graphics operations. For more information, see the
+ specification of the Brush Object (section 2.2.1.1).
+
+
+
+
+ A brush that paints a single, constant color, either solid or dithered.
+
+
+
+
+ A brush that does nothing. Using a NULL brush in a graphics operation
+ MUST have the same effect as using no brush at all
+
+
+
+
+ A brush that paints a predefined simple pattern, or "hatch", onto a solid background
+
+
+
+
+ A brush that paints a pattern defined by a bitmap, which MAY be a Bitmap16 Object
+ or a DeviceIndependentBitmap (DIB) Object.
+
+
+
+
+ Not supported.
+
+
+
+
+ A pattern brush specified by a DIB.
+
+
+
+
+ A pattern brush specified by a DIB.
+
+
+
+
+ Not supported.
+
+
+
+
+ Not supported.
+
+
+
+
+ Not supported.
+
+
+
+
+ The gradient
+ Not suppoted in wmf, support in odg.
+
+
+
+
+ The CharacterSet Enumeration defines the possible sets of character glyphs that are defined in
+ fonts for graphics output.
+
+
+
+
+ Specifies the English character set.
+
+
+
+
+ Specifies a character set based on the current system locale; for
+ example, when the system locale is United States English, the default character set is
+ ANSI_CHARSET.
+
+
+
+
+ Specifies a character set of symbols.
+
+
+
+
+ Specifies the Apple Macintosh character set.
+
+
+
+
+ Specifies the Japanese character set.
+
+
+
+
+ Also spelled "Hangeul". Specifies the Hangul Korean character set.
+
+
+
+
+ Also spelled "Johap". Specifies the Johab Korean character set.
+
+
+
+
+ Specifies the "simplified" Chinese character set for People's Republic of China.
+
+
+
+
+ Specifies the "traditional" Chinese character set, used mostly in
+ Taiwan and in the Hong Kong and Macao Special Administrative Regions.
+
+
+
+
+ Specifies the Greek character set.
+
+
+
+
+ Specifies the Turkish character set.
+
+
+
+
+ Specifies the Vietnamese character set.
+
+
+
+
+ Specifies the Vietnamese character set.
+
+
+
+
+ Specifies the Arabic character set
+
+
+
+
+ Specifies the Baltic (Northeastern European) character set
+
+
+
+
+ Specifies the Russian Cyrillic character set.
+
+
+
+
+ Specifies the Thai character set.
+
+
+
+
+ Specifies a Eastern European character set.
+
+
+
+
+ Specifies a mapping to one of the OEM code pages, according to the current
+ system locale setting.
+
+
+
+
+ ClipPrecision Flags specify clipping precision, which defines how to clip characters that are
+ partially outside a clipping region. These flags can be combined to specify multiple options.
+
+
+
+
+ Specifies that default clipping MUST be used.
+
+
+
+
+ This value SHOULD NOT be used.
+
+
+
+
+ This value MAY be returned when enumerating rasterized, TrueType and
+ vector fonts.
+ [33] (Windows NT 3.1, Windows NT 3.5, Windows NT 3.51, Windows NT 4.0,
+ Windows 2000, and Windows XP: This value is always returned when enumerating fonts.)
+
+
+
+
+ This value is used to control font rotation, as follows:
+ - If set, the rotation for all fonts SHOULD be determined by the orientation
+ of the coordinate system; that is, whether the orientation is left-handed
+ or right-handed.
+ - If clear, device fonts SHOULD rotate counterclockwise, but the rotation of
+ other fonts SHOULD be determined by the orientation of the coordinate
+ system.
+
+
+
+
+ This value SHOULD NOT [34] be used.
+ [34] This value is ignored in the following Windows versions:
+ - Windows Vista
+ - Windows Server 2008
+ - Windows 7
+ - Windows Server 2008 R2
+ - Windows 8
+ - Windows Server 2012
+ - Windows 8.1
+ - Windows Server 2012 R2
+
+
+
+
+ This value specifies that font association SHOULD [35] be turned off.
+ [35] This value is not supported.in Windows 95, Windows 98, and Windows Millennium Edition.
+ Font association is turned off in Windows 2000, Windows XP, and Windows Server 2003.
+ This value is ignored in these Windows versions:
+ - Windows Vista
+ - Windows Server 2008
+ - Windows 7
+ - Windows Server 2008 R2
+ - Windows 8
+ - Windows Server 2012
+ - Windows 8.1
+ - Windows Server 2012 R2
+
+
+
+
+ This value specifies that font embedding MUST be used to render document
+ content; embedded fonts are read-only.
+
+
+
+
+ The ColorUsage Enumeration specifies whether a color table exists in a device-independent
+ bitmap(DIB) and how to interpret its values.
+
+
+
+
+ The color table contains RGB values specified by RGBQuad Objects (section 2.2.2.20).
+
+
+
+
+ The color table contains 16-bit indices into the current logical palette in the playback device context.
+
+
+
+
+ No color table exists. The pixels in the DIB are indices into the current
+ logical palette in the playback device context.
+
+
+
+
+ The Compression Enumeration specifies the type of compression for a bitmap image
+
+
+
+
+ The bitmap is in uncompressed red green blue (RGB) format that is not compressed and does not use color masks.
+
+
+
+
+ An RGB format that uses run-length encoding (RLE) compression for bitmaps with 8 bits per pixel.
+ The compression uses a 2-byte format consisting of a count byte followed by a byte containing a color index.
+
+
+
+
+ An RGB format that uses RLE compression for bitmaps with 4 bits per pixel.
+ The compression uses a 2-byte format consisting of a count byte followed by two word-length color indexes
+
+
+
+
+ The bitmap is not compressed and the color table consists of three DWORD color masks that
+ specify the red, green, and blue components, respectively, of each pixel.
+ This is valid when used with 16 and 32-bits per pixel bitmaps.
+
+
+
+
+ The image is a JPEG image, as specified in [JFIF]. This value SHOULD only be used in certain bitmap
+ operations, such as JPEG pass-through. The application MUST query for the pass-through support,
+ since not all devices support JPEG pass-through. Using non-RGB bitmaps MAY limit the portability
+ of the metafile to other devices. For instance, display device contexts generally do not support this pass-through
+
+
+
+
+ The image is a PNG image, as specified in [RFC2083]. This value SHOULD only be used certain bitmap operations,
+ such as JPEG/PNG pass-through. The application MUST query for the pass-through support, because not all devices
+ support JPEG/PNG pass-through. Using non-RGB bitmaps MAY limit the portability of the metafile to other devices.
+ For instance, display device contexts generally do not support this pass-through.
+
+
+
+
+ The image is an uncompressed CMYK format.
+
+
+
+
+ A CMYK format that uses RLE compression for bitmaps with 8 bits per pixel.
+ The compression uses a 2-byte format consisting of a count byte followed by a byte containing a color index.
+
+
+
+
+ A CMYK format that uses RLE compression for bitmaps with 4 bits per pixel.
+ The compression uses a 2-byte format consisting of a count byte followed by two word-length color indexes.
+
+
+
+
+ The FamilyFont enumeration specifies the font family. Font families describe the look of a font in
+ a general way. They are intended for specifying fonts when the exact typeface desired is not available.
+
+
+
+
+ The default font is specified, which is implementation-dependent.
+
+
+
+
+ Fonts with variable stroke widths, which are proportional to the actual widths of
+ the glyphs, and which have serifs. "MS Serif" is an example.
+
+
+
+
+ Fonts with variable stroke widths, which are proportional to the actual widths of the
+ glyphs, and which do not have serifs. "MS Sans Serif" is an example.
+
+
+
+
+ Fonts with constant stroke width, with or without serifs. Fixed-width fonts are
+ usually modern. "Pica", "Elite", and "Courier New" are examples.
+
+
+
+
+ Fonts designed to look like handwriting. "Script" and "Cursive" are examples.
+
+
+
+
+ Novelty fonts. "Old English" is an example.
+
+
+
+
+ The FloodFill Enumeration specifies the type of fill operation to be
+ performed.
+
+
+
+
+ The fill area is bounded by the color specified by the Color member.
+ This style is identical to the filling performed by the
+ META_FLOODFILL record.
+
+
+
+
+ The fill area is bounded by the color that is specified by the Color
+ member. Filling continues outward in all directions as long as the
+ color is encountered. This style is useful for filling areas with
+ multicolored boundaries.
+
+
+
+
+ The FontQuality Enumeration specifies how closely the attributes of the logical font should match
+ those of the physical font when rendering text.
+
+
+
+
+ Specifies that the character quality of the font does not matter, so
+ DRAFT can be used.
+
+
+
+
+ Specifies that the character quality of the font is less important than the
+ matching of logical attribuetes. For rasterized fonts, scaling SHOULD be enabled, which
+ means that more font sizes are available.
+
+
+
+
+ Specifies that the character quality of the font is more important than the
+ matching of logical attributes. For rasterized fonts, scaling SHOULD be disabled, and the font
+ closest in size SHOULD be chosen.
+
+
+
+
+ Specifies that anti-aliasing SHOULD NOT be used when
+ rendering text
+
+
+
+
+ Specifies that anti-aliasing SHOULD be used when rendering text, if
+ the font supports it.
+
+
+
+
+ Specifies that ClearType anti-aliasing SHOULD be used when
+ rendering text, if the font supports it.
+
+
+
+
+ The GamutMappingIntent Enumeration specifies the relationship between logical and physical colors.
+
+
+
+
+ Specifies that the white point SHOULD be maintained.
+ Typically used when logical colors MUST be matched to their nearest physical color in the
+ destination color gamut.
+ Intent: Match
+ ICC name: Absolute Colorimetric
+
+
+
+
+ Specifies that saturation SHOULD be maintained. Typically used for
+ business charts and other situations in which dithering is not required.
+ Intent: Graphic
+ ICC name: Saturation
+
+
+
+
+ Specifies that a colorimetric match SHOULD be maintained. Typically
+ used for graphic designs and named colors.
+ Intent: Proof
+ ICC name: Relative Colorimetric
+
+
+
+
+ Specifies that contrast SHOULD be maintained. Typically used for
+ photographs and natural images.
+ Intent: Picture
+ ICC name: Perceptual
+
+
+
+
+ The HatchStyle Enumeration specifies the hatch pattern.
+
+
+
+
+ A horizontal hatch
+
+
+
+
+ A vertical hatch.
+
+
+
+
+ A 45-degree downward, left-to-right hatch.
+
+
+
+
+ A 45-degree upward, left-to-right hatch.
+
+
+
+
+ A horizontal and vertical cross-hatch.
+
+
+
+
+ The A 45-degree crosshatch.
+
+
+
+
+ The LogicalColorSpace Enumeration specifies the type of color space.
+
+
+
+
+ Color values are calibrated red green blue (RGB) values.
+
+
+
+
+ The value is an encoding of the ASCII characters "sRGB", and it indicates that the
+ color values are sRGB values.
+
+
+
+
+ The value is an encoding of the ASCII characters "Win ",
+ including the trailing space, and it indicates that the color values are Windows default color space values.
+
+
+
+
+ The map modes
+
+
+
+
+ The text
+ Each logical unit is mapped to one device pixel. Positive x is to the right; positive y is down
+
+
+
+
+ The lometric
+ Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.
+
+
+
+
+ The himetric
+ Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is up.
+
+
+
+
+ The loenglish
+ Each logical unit is mapped to 0.01 inch. Positive x is to the right; positive y is up.
+
+
+
+
+ The hienglish
+ Each logical unit is mapped to 0.001 inch. Positive x is to the right; positive y is up.
+
+
+
+
+ The twips
+ Each logical unit is mapped to one twentieth (1/20) of a point. In printing, a point is 1/72 of an inch; therefore,
+ 1/20 of a point is 1/1440 of an inch. This unit is also known as a "twip".
+
+
+
+
+ The isotropic
+ Logical units are mapped to arbitrary device units with equally scaled axes; that is, one unit along the x-axis is
+ equal to one unit along the y-axis.
+ The META_SETWINDOWEXT and META_SETVIEWPORTEXT records specify the units and the orientation of the axes.
+
+
+
+
+ The anisotropic
+ Logical units are mapped to arbitrary units with arbitrarily scaled axes.
+
+
+
+
+ The MetafileEscapes Enumeration specifies printer driver functionality that might not be
+ directly accessible through WMF records defined in the RecordType Enumeration (section 2.1.1.1).
+
+
+
+
+ Notifies the printer driver that the application has finished writing to a page.
+
+
+
+
+ Stops processing the current document.
+
+
+
+
+ Notifies the printer driver that the application has finished writing to a band.
+
+
+
+
+ Sets color table values.
+
+
+
+
+ Gets color table values.
+
+
+
+
+ Causes all pending output to be flushed to the output device.
+
+
+
+
+ Indicates that the printer driver SHOULD print text only, and no graphics.
+
+
+
+
+ Queries a printer driver to determine whether a specific escape function
+ is supported on the output device it drives.
+
+
+
+
+ Sets the application-defined function that allows a print job to be canceled
+ during printing.
+
+
+
+
+ Notifies the printer driver that a new print job is starting.
+
+
+
+
+ Notifies the printer driver that the current print job is ending.
+
+
+
+
+ Retrieves the physical page size currently selected on an output device.
+
+
+
+
+ Retrieves the offset from the upper-left corner of the physical page
+ where the actual printing or drawing begins.
+
+
+
+
+ Retrieves the scaling factors for the x-axis and the y-axis of a printer.
+
+
+
+
+ Used to embed an enhanced metafile format (EMF)
+ metafile within a WMF metafile.
+
+
+
+
+ Sets the width of a pen in pixels.
+
+
+
+
+ Sets the number of copies.
+
+
+
+
+ Sets the source, such as a particular paper tray or bin on a printer, for
+ output forms.
+
+
+
+
+ This record passes through arbitrary data.
+
+
+
+
+ Gets information concerning graphics technology that is supported on a
+ device.
+
+
+
+
+ Specifies the line-drawing mode to use in output to a device.
+
+
+
+
+ Specifies the line-joining mode to use in output to a device.
+
+
+
+
+ Sets the limit for the length of miter joins to use in output to a device.
+
+
+
+
+ Retrieves or specifies settings concerning banding on a device, such as the
+ number of bands.
+
+
+
+
+ Draws a rectangle with a defined pattern.
+
+
+
+
+ Retrieves the physical pen size currently defined on a device.
+
+
+
+
+ Retrieves the physical brush size currently defined on a device.
+
+
+
+
+ Enables or disables double-sided (duplex) printing on a device.
+
+
+
+
+ Retrieves or specifies the source of output forms on a device.
+
+
+
+
+ Retrieves or specifies the paper orientation on a device.
+
+
+
+
+ Retrieves information concerning the sources of different forms on an
+ output device.
+
+
+
+
+ Specifies the scaling of device-independent bitmaps (DIBs).
+
+
+
+
+ Indicates the start and end of an encapsulated PostScript (EPS) section.
+
+
+
+
+ Queries a printer driver for paper dimensions and other forms data.
+
+
+
+
+ Retrieves or specifies paper dimensions and other forms data on an
+ output device.
+
+
+
+
+ Sends arbitrary PostScript data to an output device.
+
+
+
+
+ Notifies an output device to ignore PostScript data.
+
+
+
+
+ Gets the device units currently configured on an output device.
+
+
+
+
+ Gets extended text metrics currently configured on an output
+ device.
+
+
+
+
+ Gets the font kern table currently defined on an output device.
+
+
+
+
+ Draws text using the currently selected font, background color, and text color.
+
+
+
+
+ Gets the font face name currently configured on a device.
+
+
+
+
+ Sets the font face name on a device.
+
+
+
+
+ Queries a printer driver about the support for metafiles on an output
+ device.
+
+
+
+
+ Queries the printer driver about its support for DIBs on an output device.
+
+
+
+
+ Opens a path.
+
+
+
+
+ Defines a clip region that is bounded by a path. The input MUST be a 16-bit
+ quantity that defines the action to take.
+
+
+
+
+ Ends a path.
+
+
+
+
+ The same as STARTDOC specified with a NULL document and output
+ filename, data in raw mode, and a type of zero.
+
+
+
+
+ Instructs the printer driver to download sets of PostScript procedures.
+
+
+
+
+ The same as ENDDOC. See OPEN_CHANNEL.
+
+
+
+
+ Sends arbitrary data directly to a printer driver, which is
+ expected to process this data only when in PostScript mode. .
+
+
+
+
+ Sends arbitrary data directly to the printer driver.
+
+
+
+
+ Sets the printer driver to either PostScript or GDI mode.
+
+
+
+
+ Inserts a block of raw data into a PostScript stream. The input
+ MUST be a 32-bit quantity specifying the number of bytes to inject, a 16-bit quantity
+ specifying the injection point, and a 16-bit quantity specifying the page number, followed by
+ the bytes to inject.
+
+
+
+
+ Checks whether the printer supports a JPEG image.
+
+
+
+
+ Checks whether the printer supports a PNG image.
+
+
+
+
+ Gets information on a specified feature setting for a PostScript
+ printer driver.
+
+
+
+
+ Enables applications to write documents to a file or to a printer in XML Paper
+ Specification (XPS) format.
+
+
+
+
+ Enables applications to include private procedures and other arbitrary
+ data in documents.
+
+
+
+
+ The MetafileVersion Enumeration defines values that specify support for device-independent
+ bitmaps (DIBs) in metafiles.
+
+
+
+
+ DIBs are not supported.
+
+
+
+
+ DIBs are supported.
+
+
+
+
+ The MixMode Enumeration specifies the background mix mode for text, hatched brushes,
+ and other nonsolid pen styles.
+
+
+
+
+ The background remains untouched.
+
+
+
+
+ The background is filled with the
+ background color that is currently defined in the playback device context before the text, hatched brush, or pen is
+ drawn.
+
+
+
+
+ The OutPrecision enumeration defines values for output precision, which is the requirement for
+ the font mapper to match specific font parameters, including height, width, character orientation,
+ escapement, pitch, and font type.
+
+
+
+
+ A value that specifies default behavior.
+
+
+
+
+ A value that is returned when rasterized fonts are enumerated.
+
+
+
+
+ A value that is returned when TrueType and other outline fonts, and
+ vector fonts are enumerated.
+
+
+
+
+ A value that specifies the choice of a TrueType font when the system
+ contains multiple fonts with the same name.
+
+
+
+
+ A value that specifies the choice of a device font when the system
+ contains multiple fonts with the same name.
+
+
+
+
+ A value that specifies the choice of a rasterized font when the system
+ contains multiple fonts with the same name.
+
+
+
+
+ A value that specifies the requirement for only TrueType fonts. If
+ there are no TrueType fonts installed in the system, default behavior is specified.
+
+
+
+
+ A value that specifies the requirement for TrueType and other outline fonts.
+
+
+
+
+ A value that specifies a preference for TrueType and other
+ outline fonts.
+
+
+
+
+ A value that specifies a requirement for only PostScript fonts. If there
+ are no PostScript fonts installed in the system, default behavior is specified.
+
+
+
+
+ The 16-bit PenStyle Enumeration is used to specify different types of pens that can be used in graphics operations.
+
+
+
+
+ The cosmetic
+
+
+
+
+ The line end caps are round.
+
+
+
+
+ Line joins are round.
+
+
+
+
+ The pen is solid.
+
+
+
+
+ The pen is dashed.
+
+
+
+
+ The pen is dotted.
+
+
+
+
+ The pen has alternating dashes and dots.
+
+
+
+
+ The pen has dashes and double dots.
+
+
+
+
+ The pen is invisible.
+
+
+
+
+ The pen is solid. When this pen is used in any drawing record that takes a bounding rectangle, the dimensions of
+ the figure are shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen.
+
+
+
+
+ The pen uses a styling array supplied by the user.
+
+
+
+
+ The pen sets every other pixel (this style is applicable only for cosmetic pens).
+
+
+
+
+ Line end caps are square.
+
+
+
+
+ Line end caps are flat.
+
+
+
+
+ Line joins are beveled.
+
+
+
+
+ Line joins are mitered when they are within the current
+ limit set by the SETMITERLIMIT META_ESCAPE record. A join is beveled when it would exceed the limit.
+
+
+
+
+ The PitchFont enumeration defines values that are used for specifying characteristics of a font.
+ The values are used to indicate whether the characters in a font have a fixed or variable width, or pitch.
+
+
+
+
+ The default pitch, which is implementation-dependent.
+
+
+
+
+ A fixed pitch, which means that all the characters in the font occupy the same
+ width when output in a string.
+
+
+
+
+ A variable pitch, which means that the characters in the font occupy widths
+ that are proportional to the actual widths of the glyphs when output in a string. For example,
+ the "i" and space characters usually have much smaller widths than a "W" or "O" character.
+
+
+
+
+ The PolyFillMode Enumeration specifies the method used for filling a
+ polygon.
+
+
+
+
+ Selects alternate mode (fills the area between odd-numbered and even-numbered polygon sides on each scan line).
+
+
+
+
+ Selects winding mode (fills any region with a nonzero winding value)
+
+
+
+
+ The PostScriptCap Enumeration defines line-ending types for use with a PostScript printer driver.
+
+
+
+
+ Specifies that the line-ending style has not been set, and that a default style
+ MAY [24] be used.
+
+
+
+
+ Specifies that the line ends at the last point. The end is squared off.
+
+
+
+
+ Specifies a circular cap. The center of the circle is the last point in the
+ line. The diameter of the circle is the same as the line width; that is, the thickness of the line.
+
+
+
+
+ Specifies a square cap. The center of the square is the last point in the
+ line. The height and width of the square are the same as the line width; that is, the thickness
+ of the line.
+
+
+
+
+ The PostScriptClipping Enumeration defines functions that can be applied to the clipping path
+ used for PostScript output.
+
+
+
+
+ Saves the current PostScript clipping path.
+
+
+
+
+ Restores the PostScript clipping path to the last clipping path that was saved
+ by a previous CLIP_SAVE function applied by a CLIP_TO_PATH record (section 2.3.6.6).
+
+
+
+
+ Intersects the current PostScript clipping path with the current clipping path
+ and saves the result as the new PostScript clipping path.
+
+
+
+
+ wmf Record type
+
+
+
+
+ The EOF record type
+
+
+
+
+ The realizepalette
+
+
+
+
+ The setpalentries
+
+
+
+
+ The setbkmode
+
+
+
+
+ The setmapmode
+
+
+
+
+ The setrop2
+
+
+
+
+ The setrelabs
+
+
+
+
+ The setpolyfillmode
+
+
+
+
+ The setstretchbltmode
+
+
+
+
+ The settextcharextra
+
+
+
+
+ The restoredc
+
+
+
+
+ The resizepalette
+
+
+
+
+ The dibcreatepatternbrush
+
+
+
+
+ The setlayout
+
+
+
+
+ The setbkcolor
+
+
+
+
+ The settextcolor
+
+
+
+
+ The offsetviewportorg
+
+
+
+
+ The lineto
+
+
+
+
+ The moveto
+
+
+
+
+ The offsetcliprgn
+
+
+
+
+ The fillregion
+
+
+
+
+ The setmapperflags
+
+
+
+
+ The selectpalette
+
+
+
+
+ The polygon
+
+
+
+
+ The polyline
+
+
+
+
+ The settextjustification
+
+
+
+
+ The setwindoworg
+
+
+
+
+ The setwindowext
+
+
+
+
+ The setviewportorg
+
+
+
+
+ The setviewportext
+
+
+
+
+ The offsetwindoworg
+
+
+
+
+ The scalewindowext
+
+
+
+
+ The scaleviewportext
+
+
+
+
+ The excludecliprect
+
+
+
+
+ The intersectcliprect
+
+
+
+
+ The ellipse
+
+
+
+
+ The floodfill
+
+
+
+
+ The frameregion
+
+
+
+
+ The animatepalette
+
+
+
+
+ The textout
+
+
+
+
+ The polypolygon
+
+
+
+
+ The extfloodfill
+
+
+
+
+ The rectangle
+
+
+
+
+ The setpixel
+
+
+
+
+ The roundrect
+
+
+
+
+ The patblt
+
+
+
+
+ The savedc
+
+
+
+
+ The pie record type
+
+
+
+
+ The stretchblt
+
+
+
+
+ The escape
+
+
+
+
+ The invertregion
+
+
+
+
+ The paintregion
+
+
+
+
+ The selectclipregion
+
+
+
+
+ The selectobject
+
+
+
+
+ The settextalign
+
+
+
+
+ The arc record type
+
+
+
+
+ The chord record type
+
+
+
+
+ The bitblt
+
+
+
+
+ The exttextout
+
+
+
+
+ The setdibtodev
+
+
+
+
+ The dibbitblt
+
+
+
+
+ The dibstretchblt
+
+
+
+
+ The stretchdib
+
+
+
+
+ The deleteobject
+
+
+
+
+ The createpalette
+
+
+
+
+ The createpatternbrush
+
+
+
+
+ The createpenindirect
+
+
+
+
+ The createfontindirect
+
+
+
+
+ The createbrushindirect
+
+
+
+
+ The createregion
+
+
+
+
+ The record type none.
+
+
+
+
+ Enumeration specifies ternary raster operation codes, which define
+ how to combine the bits in a source bitmap with the bits in a destination bitmap.
+
+
+
+
+ Fills the destination rectangle using the color associated with index 0 in the physical palette. (This color is
+ black for the default physical palette.)
+
+
+ Reverse Polish =
+ Common = 0
+
+
+
+
+ Reverse Polish =
+ Common = DPSoon
+
+
+
+
+ Reverse Polish =
+ Common = DPSona
+
+
+
+
+ Reverse Polish =
+ Common = PSon
+
+
+
+
+ Reverse Polish =
+ Common = SDPona
+
+
+
+
+ Reverse Polish =
+ Common = DPon
+
+
+
+
+ Reverse Polish =
+ Common = PDSxnon
+
+
+
+
+ Reverse Polish =
+ Common = PDSaon
+
+
+
+
+ Reverse Polish =
+ Common = SDPnaa
+
+
+
+
+ Reverse Polish =
+ Common = PDSxon
+
+
+
+
+ Reverse Polish =
+ Common = DPna
+
+
+
+
+ Reverse Polish =
+ Common = PSDnaon
+
+
+
+
+ Reverse Polish =
+ Common = SPna
+
+
+
+
+ Reverse Polish =
+ Common = PDSnaon
+
+
+
+
+ Reverse Polish =
+ Common = PDSonon
+
+
+
+
+ Reverse Polish =
+ Common = Pn
+
+
+
+
+ Reverse Polish =
+ Common = PDSona
+
+
+
+
+ Combines the colors of the source and destination rectangles by using the Boolean OR operator and then inverts the
+ resultant color.
+
+
+ Reverse Polish =
+ Common = DSon
+
+
+
+
+ Reverse Polish =
+ Common = SDPxnon
+
+
+
+
+ Reverse Polish =
+ Common = SDPaon
+
+
+
+
+ Reverse Polish =
+ Common = DPSxnon
+
+
+
+
+ Reverse Polish =
+ Common = DPSaon
+
+
+
+
+ Reverse Polish =
+ Common = PSDPSanaxx
+
+
+
+
+ Reverse Polish =
+ Common = SSPxDSxaxn
+
+
+
+
+ Reverse Polish =
+ Common = SPxPDxa
+
+
+
+
+ Reverse Polish =
+ Common = SDPSanaxn
+
+
+
+
+ Reverse Polish =
+ Common = PDSPaox
+
+
+
+
+ Reverse Polish =
+ Common = SDPSxaxn
+
+
+
+
+ Reverse Polish =
+ Common = PSDPaox
+
+
+
+
+ Reverse Polish =
+ Common = DSPDxaxn
+
+
+
+
+ Reverse Polish =
+ Common = PDSox
+
+
+
+
+ Reverse Polish =
+ Common = PDSoan
+
+
+
+
+ Reverse Polish =
+ Common = DPSnaa
+
+
+
+
+ Reverse Polish =
+ Common = SDPxon
+
+
+
+
+ Reverse Polish =
+ Common = DSna
+
+
+
+
+ Reverse Polish =
+ Common = SPDnaon
+
+
+
+
+ Reverse Polish =
+ Common = SPxDSxa
+
+
+
+
+ Reverse Polish =
+ Common = PDSPanaxn
+
+
+
+
+ Reverse Polish =
+ Common = SDPSaox
+
+
+
+
+ Reverse Polish =
+ Common = SDPSxnox
+
+
+
+
+ Reverse Polish =
+ Common = DPSxa
+
+
+
+
+ Reverse Polish =
+ Common = PSDPSaoxxn
+
+
+
+
+ Reverse Polish =
+ Common = DPSana
+
+
+
+
+ Reverse Polish =
+ Common = SSPxPDxaxn
+
+
+
+
+ Reverse Polish =
+ Common = SPDSoax
+
+
+
+
+ Reverse Polish =
+ Common = PSDnox
+
+
+
+
+ Reverse Polish =
+ Common = PSDPxox
+
+
+
+
+ Reverse Polish =
+ Common = PSDnoan
+
+
+
+
+ Reverse Polish =
+ Common = PSna
+
+
+
+
+ Reverse Polish =
+ Common = SDPnaon
+
+
+
+
+ Reverse Polish =
+ Common = SDPSoox
+
+
+
+
+ Copies the inverted source rectangle to the destination.
+
+
+ Reverse Polish =
+ Common = Sn
+
+
+
+
+ Reverse Polish =
+ Common = SPDSaox
+
+
+
+
+ Reverse Polish =
+ Common = SPDSxnox
+
+
+
+
+ Reverse Polish =
+ Common = SDPox
+
+
+
+
+ Reverse Polish =
+ Common = SDPoan
+
+
+
+
+ Reverse Polish =
+ Common = PSDPoax
+
+
+
+
+ Reverse Polish =
+ Common = SPDnox
+
+
+
+
+ Reverse Polish =
+ Common = SPDSxox
+
+
+
+
+ Reverse Polish =
+ Common = SPDnoan
+
+
+
+
+ Reverse Polish =
+ Common = PSx
+
+
+
+
+ Reverse Polish =
+ Common = SPDSonox
+
+
+
+
+ Reverse Polish =
+ Common = SPDSnaox
+
+
+
+
+ Reverse Polish =
+ Common = PSan
+
+
+
+
+ Reverse Polish =
+ Common = PSDnaa
+
+
+
+
+ Reverse Polish =
+ Common = DPSxon
+
+
+
+
+ Reverse Polish =
+ Common = SDxPDxa
+
+
+
+
+ Reverse Polish =
+ Common = SPDSanaxn
+
+
+
+
+ Combines the inverted colors of the destination rectangle with the colors of the source rectangle by using the
+ Boolean AND operator.
+
+
+ Reverse Polish =
+ Common = SDna
+
+
+
+
+ Reverse Polish =
+ Common = DPSnaon
+
+
+
+
+ Reverse Polish =
+ Common = DSPDaox
+
+
+
+
+ Reverse Polish =
+ Common = PSDPxaxn
+
+
+
+
+ Reverse Polish =
+ Common = SDPxa
+
+
+
+
+ Reverse Polish =
+ Common = PDSPDaoxxn
+
+
+
+
+ Reverse Polish =
+ Common = DPSDoax
+
+
+
+
+ Reverse Polish =
+ Common = PDSnox
+
+
+
+
+ Reverse Polish =
+ Common = SDPana
+
+
+
+
+ Reverse Polish =
+ Common = SSPxDSxoxn
+
+
+
+
+ Reverse Polish =
+ Common = PDSPxox
+
+
+
+
+ Reverse Polish =
+ Common = PDSnoan
+
+
+
+
+ Reverse Polish =
+ Common = PDna
+
+
+
+
+ Reverse Polish =
+ Common = DSPnaon
+
+
+
+
+ Reverse Polish =
+ Common = DPSDaox
+
+
+
+
+ Reverse Polish =
+ Common = SPDSxaxn
+
+
+
+
+ Reverse Polish =
+ Common = DPSonon
+
+
+
+
+ Inverts the destination rectangle.
+
+
+ Reverse Polish =
+ Common = Dn
+
+
+
+
+ Reverse Polish =
+ Common = DPSox
+
+
+
+
+ Reverse Polish =
+ Common = DPSoan
+
+
+
+
+ Reverse Polish =
+ Common = PDSPoax
+
+
+
+
+ Common = DPSnox
+
+
+
+
+ Combines the colors of the brush currently selected in hdcDest, with the colors of the destination rectangle by
+ using the Boolean XOR operator.
+
+
+ Common = DPx
+
+
+
+
+ Common = DPSDonox
+
+
+
+
+ Common = DPSDxox
+
+
+
+
+ Common = DPSnoan
+
+
+
+
+ Common = DPSDnaox
+
+
+
+
+ Common = DPan
+
+
+
+
+ Common = PDSxa
+
+
+
+
+ Common = DSPDSaoxxn
+
+
+
+
+ Common = DSPDoax
+
+
+
+
+ Common = SDPnox
+
+
+
+
+ Common = SDPSoax
+
+
+
+
+ Common = DSPnox
+
+
+
+
+ Combines the colors of the source and destination rectangles by using the Boolean XOR operator.
+
+
+ Common = DSx
+
+
+
+
+ Common = SDPSonox
+
+
+
+
+ Common = DSPDSonoxxn
+
+
+
+
+ Common = PDSxxn
+
+
+
+
+ Common = DPSax
+
+
+
+
+ Common = PSDPSoaxxn
+
+
+
+
+ Common = SDPax
+
+
+
+
+ Common = PDSPDoaxxn
+
+
+
+
+ Common = SDPSnoax
+
+
+
+
+ Common = PDXnan
+
+
+
+
+ Common = PDSana
+
+
+
+
+ Common = SSDxPDxaxn
+
+
+
+
+ Common = SDPSxox
+
+
+
+
+ Common = SDPnoan
+
+
+
+
+ Common = DSPDxox
+
+
+
+
+ Common = DSPnoan
+
+
+
+
+ Common = SDPSnaox
+
+
+
+
+ Common = DSan
+
+
+
+
+ Common = PDSax
+
+
+
+
+ Common = DSPDSoaxxn
+
+
+
+
+ Common = DPSDnoax
+
+
+
+
+ Common = SDPxnan
+
+
+
+
+ Common = SPDSnoax
+
+
+
+
+ Common = DPSxnan
+
+
+
+
+ Common = SPxDSxo
+
+
+
+
+ Common = DPSaan
+
+
+
+
+ Common = DPSaa
+
+
+
+
+ Common = SPxDSxon
+
+
+
+
+ Common = DPSxna
+
+
+
+
+ Common = SPDSnoaxn
+
+
+
+
+ Common = SDPxna
+
+
+
+
+ Common = PDSPnoaxn
+
+
+
+
+ Common = DSPDSoaxx
+
+
+
+
+ Common = PDSaxn
+
+
+
+
+ Combines the colors of the source and destination rectangles by using the Boolean AND operator.
+
+
+ Common = DSa
+
+
+
+
+ Common = SDPSnaoxn
+
+
+
+
+ Common = DSPnoa
+
+
+
+
+ Common = DSPDxoxn
+
+
+
+
+ Common = SDPnoa
+
+
+
+
+ Common = SDPSxoxn
+
+
+
+
+ Common = SSDxPDxax
+
+
+
+
+ Common = PDSanan
+
+
+
+
+ Common = PDSxna
+
+
+
+
+ Common = SDPSnoaxn
+
+
+
+
+ Common = DPSDPoaxx
+
+
+
+
+ Common = SPDaxn
+
+
+
+
+ Common = PSDPSoaxx
+
+
+
+
+ Common = DPSaxn
+
+
+
+
+ Common = DPSxx
+
+
+
+
+ Common = PSDPSonoxx
+
+
+
+
+ Common = SDPSonoxn
+
+
+
+
+ Common = DSxn
+
+
+
+
+ Common = DPSnax
+
+
+
+
+ Common = SDPSoaxn
+
+
+
+
+ Common = SPDnax
+
+
+
+
+ Common = DSPDoaxn
+
+
+
+
+ Common = DSPDSaoxx
+
+
+
+
+ Common = PDSxan
+
+
+
+
+ Common = DPa
+
+
+
+
+ Common = PDSPnaoxn
+
+
+
+
+ Common = DPSnoa
+
+
+
+
+ Common = DPSDxoxn
+
+
+
+
+ Common = PDSPonoxn
+
+
+
+
+ Common = PDxn
+
+
+
+
+ Common = DSPnax
+
+
+
+
+ Common = PDSPoaxn
+
+
+
+
+ Common = DPSoa
+
+
+
+
+ Common = DPSoxn
+
+
+
+
+ Common = D
+
+
+
+
+ Common = DPSono
+
+
+
+
+ Common = SPDSxax
+
+
+
+
+ Common = DPSDaoxn
+
+
+
+
+ Common = DSPnao
+
+
+
+
+ Common = DPno
+
+
+
+
+ Common = PDSnoa
+
+
+
+
+ Common = 00B10665
+
+
+
+
+ Common = SSPxDSxox
+
+
+
+
+ Common = SDPanan
+
+
+
+
+ Common = PSDnax
+
+
+
+
+ Common = DPSDoaxn
+
+
+
+
+ Common = DPSDPaoxx
+
+
+
+
+ Common = SDPxan
+
+
+
+
+ Common = PSDPxax
+
+
+
+
+ Common = DSPDaoxn
+
+
+
+
+ Common = DPSnao
+
+
+
+
+ Merges the colors of the inverted source rectangle with the colors of the destination rectangle by using the
+ Boolean OR operator.
+
+
+ Common = DSno
+
+
+
+
+ Common = SPDSanax
+
+
+
+
+ Common = SDxPDxan
+
+
+
+
+ Common = DPSxo
+
+
+
+
+ Common = DPSano
+
+
+
+
+ Merges the colors of the source rectangle with the brush currently selected in hdcDest, by using the Boolean AND
+ operator.
+
+
+ Common = PSa
+
+
+
+
+ Common = SPDSnaoxn
+
+
+
+
+ Common = SPDSonoxn
+
+
+
+
+ Common = PSxn
+
+
+
+
+ Common = SPDnoa
+
+
+
+
+ Common = SPDSxoxn
+
+
+
+
+ Common = SDPnax
+
+
+
+
+ Common = PSDPoaxn
+
+
+
+
+ Common = SDPoa
+
+
+
+
+ Common = SPDoxn
+
+
+
+
+ Common = DPSDxax
+
+
+
+
+ Common = SPDSaoxn
+
+
+
+
+ Copies the source rectangle directly to the destination rectangle.
+
+
+ Common = S
+
+
+
+
+ Common = SDPono
+
+
+
+
+ Common = SDPnao
+
+
+
+
+ Common = SPno
+
+
+
+
+ Common = PSDnoa
+
+
+
+
+ Common = PSDPxoxn
+
+
+
+
+ Common = PDSnax
+
+
+
+
+ Common = SPDSoaxn
+
+
+
+
+ Common = SSPxPDxax
+
+
+
+
+ Common = DPSanan
+
+
+
+
+ Common = PSDPSaoxx
+
+
+
+
+ Common = DPSxan
+
+
+
+
+ Common = PDSPxax
+
+
+
+
+ Common = SDPSaoxn
+
+
+
+
+ Common = DPSDanax
+
+
+
+
+ Common = SPxDSxan
+
+
+
+
+ Common = SPDnao
+
+
+
+
+ Common = SDno
+
+
+
+
+ Common = SDPxo
+
+
+
+
+ Common = SDPano
+
+
+
+
+ Common = PDSoa
+
+
+
+
+ Common = PDSoxn
+
+
+
+
+ Common = DSPDxax
+
+
+
+
+ Common = PSDPaoxn
+
+
+
+
+ Common = SDPSxax
+
+
+
+
+ Common = PDSPaoxn
+
+
+
+
+ Common = SDPSanax
+
+
+
+
+ Common = SPxPDxan
+
+
+
+
+ Common = SSPxDSxax
+
+
+
+
+ Common = DSPDSanaxxn
+
+
+
+
+ Common = DPSao
+
+
+
+
+ Common = DPSxno
+
+
+
+
+ Common = SDPao
+
+
+
+
+ Common = SDPxno
+
+
+
+
+ Combines the colors of the source and destination rectangles by using the Boolean OR operator.
+
+
+ Common = DSo
+
+
+
+
+ Common = SDPnoo
+
+
+
+
+ Copies the brush currently selected in hdcDest, into the destination bitmap.
+
+
+ Common = P
+
+
+
+
+ Common = PDSono
+
+
+
+
+ Common = PDSnao
+
+
+
+
+ Common = PSno
+
+
+
+
+ Common = PSDnao
+
+
+
+
+ Common = PDno
+
+
+
+
+ Common = PDSxo
+
+
+
+
+ Common = PDSano
+
+
+
+
+ Common = PDSao
+
+
+
+
+ Common = PDSxno
+
+
+
+
+ Common = DPo
+
+
+
+
+ Combines the colors of the brush currently selected in hdcDest, with the colors of the inverted source rectangle by
+ using the Boolean OR operator. The result of this operation is combined with the colors of the destination
+ rectangle by using the Boolean OR operator.
+
+
+ Common = DPSnoo
+
+
+
+
+ Common = PSo
+
+
+
+
+ Common = PSDnoo
+
+
+
+
+ Common = DPSoo
+
+
+
+
+ Fills the destination rectangle using the color associated with index 1 in the physical palette. (This color is
+ white for the default physical palette.)
+
+
+ Common = 1
+
+
+
+
+ Each ternary raster operation code represents a Boolean operation in which the values of the pixels
+ in the source, the selected brush, and the destination are combined. Following are the three
+ operands used in these operations.
+
+
+
+
+ Destination bitmap
+
+
+
+
+ Selected brush (also called pattern)
+
+
+
+
+ Source bitmap
+
+
+
+
+ Bitwise AND
+
+
+
+
+ Bitwise NOT (inverse)
+
+
+
+
+ Bitwise OR
+
+
+
+
+ Bitwise exclusive OR (XOR)
+
+
+
+
+ TextAlignmentMode Flags specify the relationship between a reference point and a bounding
+ rectangle, for text alignment. These flags can be combined to specify multiple options, with the
+ restriction that only one flag can be chosen that alters the drawing position in the playback device
+ context.
+ Horizontal text alignment is performed when the font has a horizontal default baseline.
+
+
+ TextAlignmentMode flags specify three different components of text alignment:
+ - The horizontal position of the reference point is determined by TA_RIGHT and TA_CENTER; if
+ those bits are clear, the alignment MUST be TA_LEFT.
+ - The vertical position of the reference point is determined by TA_BOTTOM and TA_BASELINE; if
+ those bits are clear, the alignment MUST be TA_TOP.
+ - Whether to update the output position in the playback device context after text output is
+ determined by TA_UPDATECP; if that bit is clear, the position MUST NOT be updated.
+ This is the reason for defining three different zero values in the enumeration; they represent the
+ default states of the three components of text alignment.
+
+
+
+
+ The drawing position in the playback device context MUST NOT be updated after each
+ text output call. The reference point MUST be passed to the text output function.
+
+
+
+
+ The reference point MUST be on the left edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the top edge of the bounding rectangle.
+
+
+
+
+ The drawing position in the playback device context MUST be updated after each text
+ output call. It MUST be used as the reference point.
+
+
+
+
+ The reference point MUST be on the right edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be aligned horizontally with the center of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the bottom edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the baseline of the text.
+
+
+
+
+ The text MUST be laid out in right-to-left reading order, instead of the default left-to right order. This SHOULD
+ be applied only when the font that is defined in the playback
+ device context is either Hebrew or Arabic.
+
+
+
+
+ Represents Horisontal text algin sets (Left | Right | Center)
+
+
+
+
+ Represents Vertical text algin sets (Top | Bottom | Baseline)
+
+
+
+
+ VerticalTextAlignmentMode Flags specify the relationship between a reference point and a
+ bounding rectangle, for text alignment. These flags can be combined to specify multiple options,
+ with the restriction that only one flag can be chosen that alters the drawing position in the playback
+ device context.
+ Vertical text alignment is performed when the font has a vertical default baseline, such as Kanji.
+
+
+
+
+ The reference point MUST be on the top edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the right edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the bottom edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be aligned vertically with the center of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the left edge of the bounding rectangle.
+
+
+
+
+ The reference point MUST be on the baseline of the text.
+
+
+
+
+ The contains escape types [MS-WMF]: Windows
+
+
+
+
+ The Escape Enhanced Meta file record.
+
+
+
+
+ Gets or sets the comment identifier.
+
+
+ A 32-bit unsigned integer that defines this record as a WMF Comment record.
+ This value MUST be 0x43464D57.
+
+
+
+
+ Gets or sets the type of the comment.
+
+
+ A 32-bit unsigned integer that identifies the type of comment in this record.
+ This value MUST be 0x00000001.
+
+
+
+
+ Gets or sets the version.
+
+
+ A 32-bit unsigned integer that specifies EMF metafile interoperability.
+ This SHOULD be 0x00010000
+
+
+
+
+ Gets or sets the checksum.
+
+
+ A 16-bit unsigned integer used to validate the correctness of the embedded EMF stream.
+ This value MUST be the one's-complement of the result of applying an XOR operation to all WORDs in the EMF stream.
+
+
+
+
+ Gets or sets the flags.
+
+
+ This 32-bit unsigned integer is unused and MUST be set to zero.
+
+
+
+
+ Gets or sets the comment record count.
+
+
+ A 32-bit unsigned integer that specifies the total number of consecutive META_ESCAPE_ENHANCED_METAFILE records that contain the embedded EMF metafile.
+
+
+
+
+ Gets or sets the size of the current record.
+
+
+ A 32-bit unsigned integer that specifies the size, in bytes, of the EnhancedMetafileData field.
+ This value MUST be less than or equal to 8,192.
+
+
+
+
+ Gets or sets the remaining bytes.
+
+
+ A 32-bit unsigned integer that specifies the number of bytes in the EMF stream that remain to be processed after this record.
+ Those additional EMF bytes MUST follow in the EnhancedMetafileData fields of subsequent META_ESCAPE_ENHANDED_METAFILE escape records.
+
+
+
+
+ Gets or sets the size of the enhanced metafile data.
+
+
+ A 32-bit unsigned integer that specifies the total size of the EMF stream embedded in this sequence of META_ESCAPE_ENHANCED_METAFILE records.
+
+
+
+
+ Gets or sets the enhanced metafile data.
+
+
+ A segment of an EMF file.
+ The bytes in consecutive META_ESCAPE_ENHANCED_METAFILE records MUST be concatenated to represent the entire embedded EMF file.
+
+
+
+
+ The contains types [MS-WMF]: Windows
+ Metafile Format 2.2 WMF Objects
+
+
+
+
+ The contains types [MS-WMF]: Windows
+ Metafile Format 2.2 WMF Objects
+
+
+
+
+ The META_ANIMATEPALETTE record redefines entries in the logical palette
+ that is defined in the playback device context with the specified
+ Palette object (section 2.2.1.3).
+
+
+
+
+ Gets or sets the log palette.
+
+
+ The logical palette.
+
+
+
+
+ Gets or sets the start.
+
+
+ The start.
+
+
+
+
+ The META_ARC record draws an elliptical arc.
+
+
+
+
+ The META_RECTANGLE record paints a rectangle. The rectangle is outlined
+ by using the pen and filled by using the brush that are defined in the
+ playback device context.
+
+
+
+
+ Gets or sets the rectangle.
+
+
+ The rectangle.
+
+
+
+
+ Gets or sets the end arc.
+
+
+ Coordinates of the ending point of the radial line defining the
+ ending
+
+
+
+
+ Gets or sets the start arc.
+
+
+ Coordinates, in logical units, of the ending point of the radial
+ line defining the starting point of the arc
+
+
+
+
+ The META_BITBLT record specifies the transfer of a block of pixels
+ according to a raster operation. The destination of the transfer is the
+ current output region in the playback device context.
+
+
+
+
+ The META_STRETCHBLT record specifies the transfer of a block of pixels
+ according to a raster operation, with possible expansion or contraction.
+
+
+
+
+ Gets or sets the raster operation.
+
+
+ The source pixels, the current brush in the playback device context,
+ and the destination pixels are to be combined to form the new image.
+ This code MUST be one of the values in the Ternary Raster Operation
+ Enumeration
+
+
+
+
+ Gets or sets the height of the source.
+
+
+ The height, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the width of the source.
+
+
+ The width, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the source position.
+
+
+ The source position.
+
+
+
+
+ Gets or sets the height of the dest.
+
+
+ The height, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the width of the dest.
+
+
+ The width, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the DST position.
+
+
+ The DST position.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.This field MUST be ignored.
+
+
+
+
+ Gets or sets the bitmap.
+
+
+ The bitmap.
+
+
+
+
+ The Bitmap16 Object specifies information about the dimensions and color
+ format of a bitmap.
+
+
+
+
+ Gets or sets the type.
+
+
+ The bitmap type.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width of the bitmap in pixels
+
+
+
+
+ Gets or sets the height.
+
+
+ The height of the bitmap in scan lines.
+
+
+
+
+ Gets or sets the width bytes.
+
+
+ The number of bytes per scan line.
+
+
+
+
+ Gets or sets the planes.
+
+
+ The value of this field MUST be 0x01.
+
+
+
+
+ Gets or sets the bits pixel.
+
+
+ The number of adjacent color bits on each plane.
+
+
+
+
+ Gets or sets the bits.
+
+
+ The bitmap pixel data. The length of this field in bytes can be
+ computed as follows.
+
+
+
+
+ The base bitmap header class.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the size of this
+ object, in bytes.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that defines the number of
+ for the target device. This value MUST be
+ 0x0001.
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that defines the format of
+ each pixel, and the maximum number of colors in the DIB. This value
+ MUST be in the Enumeration (section 2.1.1.3).
+
+
+
+
+ The BitmapCoreHeader Object contains information about the dimensions
+ and color format of a device-independent bitmap(DIB).
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that defines the
+ of the DIB, in pixels
+
+
+
+
+ Gets or sets a 16-bit unsigned integer that defines the
+ of the DIB, in pixels
+
+
+
+
+ The BitmapInfoHeader Object contains information about the dimensions and color format of a device-independent
+ bitmap (DIB).
+
+
+
+
+ The structure size
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the width of the DIB, in pixels. This value MUST be positive.
+ This field SHOULD specify the width of the decompressed image file, if the Compression value specifies JPEG or PNG
+ format.
+
+
+
+
+ Gets or sets 32-bit signed integer that defines the height of the DIB, in pixels. This value MUST NOT be zero.
+ If this value is positive, the DIB is a bottom-up bitmap, and its origin is the lower-left corner.
+ If this value is negative, the DIB is a top-down bitmap, and its origin is the upper-left corner. Top-down bitmaps
+ do not support compression.
+ This field SHOULD specify the height of the decompressed image file, if the Compression value specifies JPEG or PNG
+ format.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the compression mode of the DIB. This value MUST be in the
+ Compression Enumeration (section 2.1.1.7).
+ This value MUST NOT specify a compressed format if the DIB is a top-down bitmap, as indicated by the Height value.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the size, in bytes, of the image.
+ If the Compression value is BI_RGB, this value SHOULD be zero and MUST be ignored.
+ If the Compression value is BI_JPEG or BI_PNG, this value MUST specify the size of the JPEG or PNG image buffer,
+ respectively.
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the horizontal resolution, in pixels-per-meter, of the target
+ device for the DIB
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the vertical resolution, in pixels-per-meter, of the target
+ device for the DIB
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the number of indexes in the color table used by the DIB, as
+ follows:
+ If this value is zero, the DIB uses the maximum number of colors that correspond to the BitCount value.
+ If this value is nonzero and the BitCount value is less than 16, this value specifies the number of colors used by
+ the DIB.
+ If this value is nonzero and the BitCount value is 16 or greater, this value specifies the size of the color table
+ used to optimize performance of the system palette.
+ Note If this value is nonzero and greater than the maximum possible size of the color table based on the BitCount
+ value, the maximum color table size SHOULD be assumed.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the number of color indexes that are required for displaying
+ the DIB.
+ If this value is zero, all color indexes are required
+
+
+
+
+ The META_CHORD record draws a chord, which is defined by a region
+ bounded by the intersection of an ellipse with a line segment. The chord
+ is outlined using the pen and filled using the brush that are defined in
+ the playback device context.
+
+
+
+
+ Gets or sets the radial2.
+
+
+ The coordinates, in logical coordinates, of the endpoint of the
+ second radial.
+
+
+
+
+ Gets or sets the radial1.
+
+
+ The coordinates, in logical coordinates, of the endpoint of the
+ first radial.
+
+
+
+
+ The CIEXYZ Object defines information about the CIEXYZ chromaticity
+ object.
+
+
+
+
+ Gets or sets a 32-bit 2.30 fixed point type that defines the x
+ chromaticity value.
+
+
+
+
+ Gets or sets a 32-bit 2.30 fixed point type that defines the y
+ chromaticity value.
+
+
+
+
+ Gets or sets a 32-bit 2.30 fixed point type that defines the z
+ chromaticity value.
+
+
+
+
+ The CIEXYZTriple Object defines information about the CIEXYZTriple color
+ object.
+
+
+
+
+ Gets or sets a 96-bit CIEXYZ Object that defines the red
+ chromaticity values.
+
+
+
+
+ Gets or sets a 96-bit CIEXYZ Object that defines the green
+ chromaticity values.
+
+
+
+
+ Gets or sets a 96-bit CIEXYZ Object that defines the blue
+ chromaticity values.
+
+
+
+
+ The Create brush in direct
+
+
+
+
+ The WMF Graphics Objects specify parameters for graphics output.
+
+
+
+
+ Gets or sets the index.
+
+
+ The index.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the log brush.
+
+
+ The log brush.
+
+
+
+
+ The Create font
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the log font.
+
+
+ The log font.
+
+
+
+
+ Gets or sets the extended bytes.
+
+
+ The extended bytes.
+
+
+
+
+ The META_CREATEPALETTE record creates a Palette Object (section 2.2.1.3).
+
+
+
+
+ The palette start tag
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the log palette.
+
+
+ The logical palette.
+
+
+
+
+ The META_CREATEPATTERNBRUSH record creates a brush object with a pattern
+ specified by a bitmap.
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the bitmap.
+
+
+ The bitmap that specifies the pattern for the brush.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved. This field MUST be ignored.
+
+
+
+
+ Gets or sets the pattern.
+
+
+ A variable-length array of bytes that defines the bitmap pixel data
+ that composes the brush pattern. The length of this field, in bytes,
+ can be computed from bitmap parameters as follows.
+
+
+
+
+ The create pen in direct
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the log pen.
+
+
+ The log pen.
+
+
+
+
+ The META_CREATEREGION record creates a Region Object (section 2.2.1.5).
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the region.
+
+
+ Region Object data that defines the region to create.
+
+
+
+
+ The Delete object
+
+
+
+
+ Initializes a new instance of the class.
+
+ The deleted object.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the index of the object.
+
+
+ The index of the object.
+
+
+
+
+ The DeviceIndependentBitmap Object defines an image in
+ device-independent bitmap (DIB) format
+
+
+
+
+ Gets or sets either a BitmapCoreHeader Object (section 2.2.2.2) or a
+ BitmapInfoHeader Object (section 2.2.2.3) that specifies information
+ about the image
+
+
+
+
+ Gets or sets an optional array of either RGBQuad Objects (section
+ 2.2.2.20) or 16-bit unsigned integers that define a color table. The
+ size and contents of this field SHOULD be determined from the
+ metafile record or object that contains this DeviceIndependentBitmap
+ and from information in the DIBHeaderInfo field. See ColorUsage
+ Enumeration (section 2.1.1.6) and BitCount Enumeration (section
+ 2.1.1.3) for additional details
+
+
+
+
+ Gets or sets an array of bytes that define the image. The size and
+ format of this data is determined by information in the
+ DIBHeaderInfo field.
+
+
+
+
+ Gets or sets the cached raster image.
+
+
+ The cached image.
+
+
+
+
+ The META_DIBBITBLT record specifies the transfer of a block of pixels in
+ device-independent format according to a raster operation.
+
+
+
+
+ Gets or sets the raster operation.
+
+
+ The source pixels, the current brush in the playback device context,
+ and the destination pixels are to be combined to form the new image.
+ This code MUST be one of the values in the Ternary Raster Operation
+ Enumeration (section 2.1.1.31).
+
+
+
+
+ Gets or sets the source position.
+
+
+ The coordinates, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the height.
+
+
+ The height, in logical units, of the source and destination
+ rectangles.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width, in logical units, of the source and destination
+ rectangles.
+
+
+
+
+ Gets or sets the DST position.
+
+
+ The coordinates, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ Gets or sets the source.
+
+
+ A variable-sized DeviceIndependentBitmap Object (section 2.2.2.9)
+ that defines image content. This object MUST be specified, even if
+ the raster operation does not require a source.
+
+
+
+
+ The META_DIBCREATEPATTERNBRUSH record creates a Brush Object (section
+ 2.2.1.1) with a pattern specified by a DeviceIndependentBitmap (DIB)
+ Object (section 2.2.2.9).
+
+
+
+
+ Gets or sets the style.
+
+
+ The legal values for this field are defined as follows: if the value
+ is not BS_PATTERN, BS_DIBPATTERNPT MUST be assumed. These values are
+ specified in the BrushStyle Enumeration (section 2.1.1.4).
+
+
+
+
+ Gets or sets the color usage.
+
+
+ The Colors field of a DIB Object contains explicit RGB values, or
+ indexes into a palette.
+
+
+
+
+ Gets or sets the source bitmap.
+
+
+ Variable-bit DIB Object data that defines the pattern to use in the
+ brush.
+
+
+
+
+ The META_DIBSTRETCHBLT record specifies the transfer of a block of
+ pixels in device-independent format according to a raster operation,
+ with possible expansion or contraction.
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the raster operation.
+
+
+ The current brush in the playback device context, and the
+ destination pixels are to be combined to form the new image. This
+ code MUST be one of the values in the Ternary Raster Operation
+ Enumeration (section 2.1.1.31).
+
+
+
+
+ Gets or sets the height of the source.
+
+
+ The height, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the width of the source.
+
+
+ The width, in logical units, of the source rectangle
+
+
+
+
+ Gets or sets the y source.
+
+
+ The y-coordinate, in logical units, of the upper-left corner of the
+ source rectangle.
+
+
+
+
+ Gets or sets the x source.
+
+
+ The x-coordinate, in logical units, of the upper-left corner of the
+ source rectangle.
+
+
+
+
+ Gets or sets the height of the dest.
+
+
+ The height, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the width of the dest.
+
+
+ The width, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the y dest.
+
+
+ The y-coordinate, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the x dest.
+
+
+ The x-coordinate, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the source bitmap.
+
+
+ The source bitmap.
+
+
+
+
+ The META_ELLIPSE record draws an ellipse. The center of the ellipse is
+ the center of the specified bounding rectangle. The ellipse is outlined
+ by using the pen and is filled by using the brush; these are defined in
+ the playback device context.
+
+
+
+
+ The Eof object.
+
+
+
+
+ The wmf escape object.
+
+
+
+
+ Gets or sets the type of the escape.
+
+
+ The type of the escape.
+
+
+
+
+ Gets or sets the escape record.
+
+
+ The escape record.
+
+
+
+
+ The META_EXCLUDECLIPRECT record sets the clipping region in the playback
+ device context to the existing clipping region minus the specified
+ rectangle.
+
+
+
+
+ The META_EXTFLOODFILL record fills an area with the brush that is
+ defined in the playback device context.
+
+
+
+
+ The META_FLOODFILL record fills an area of the output surface with the
+ brush that is defined in the playback device context.
+
+
+
+
+ Gets or sets the color reference.
+
+
+ The
+
+ Object that defines the color value.
+
+
+
+
+ Gets or sets the y start.
+
+
+ The y-coordinate, in logical units, of the point where filling is to
+ start.
+
+
+
+
+ Gets or sets the x start.
+
+
+ The x-coordinate, in logical units, of the point where filling is to
+ start.
+
+
+
+
+ Gets or sets the mode.
+
+
+ The fill operation to be performed.
+
+
+
+
+ Wmf ext text out
+
+
+
+
+ The Point object.
+
+
+
+
+ Gets or sets the point.
+
+
+ The point.
+
+
+
+
+ Gets or sets the length of the string.
+
+
+ The length of the string.
+
+
+
+
+ Gets or sets the fw opts.
+
+
+ The options. This member can be a combination of one or more values.
+
+
+
+
+ Gets or sets the rectangle.
+
+
+ The rectangle.
+
+
+
+
+ Gets or sets the text.
+
+
+ The text.
+
+
+
+
+ Gets or sets the dx.
+
+
+ The dx. Indicate the distance between origins of adjacent character
+ cells. For example, Dx[i] logical units separate the origins of
+ character cell i and character cell i + 1. If this field is present,
+ there MUST be the same number of values as there are characters in
+ the string.
+
+
+
+
+ Gets or sets the extended byte.
+
+
+ The extended byte.
+
+
+
+
+ The META_FILLREGION record fills a region using a specified brush.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The region.
+ The brush.
+
+
+
+ Gets or sets the index of the region.
+
+
+ Index into the WMF Object Table to get the region to be filled.
+
+
+
+
+ Gets or sets the index of the brush.
+
+
+ Index into the WMF Object Table to get the brush to use for filling
+ the region.
+
+
+
+
+ The wmf frame region object.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The region.
+ The brush.
+
+
+
+ Gets or sets the index of the region.
+
+
+ Index into the WMF Object Table to get the region to be filled.
+
+
+
+
+ Gets or sets the index of the brush.
+
+
+ Index into the WMF Object Table to get the brush to use for filling
+ the region.
+
+
+
+
+ Gets or sets the height.
+
+
+ The height, in logical units, of the region frame.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width, in logical units, of the region frame.
+
+
+
+
+ The META_INTERSECTCLIPRECT record sets the clipping region in the
+ playback device context to the intersection of the existing clipping
+ region and the specified rectangle.
+
+
+
+
+ Gets or sets the rectangle.
+
+
+ The rectangle.
+
+
+
+
+ The META_INVERTREGION record draws a region in which the colors are
+ inverted.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The region.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the index of the region.
+
+
+ The index of the region.
+
+
+
+
+ The META_LINETO record draws a line from the drawing position that is
+ defined in the playback device context up to, but not including, the
+ specified point.
+
+
+
+
+ The LogColorSpace object specifies a logical color space for the
+ playback device context, which can be the name of a color profile in
+ ASCII characters.
+
+
+ The Endpoints, GammaRed, GammaGreen, and GammaBlue fields are used to
+ specify a logical color space. The Endpoints field is a CIEXYZTriple
+ object that contains the x, y, and z values of the RGB endpoint of the
+ color space. The relation between tri-stimulus values X,Y,Z and
+ chromaticity values x,y,z is expressed as follows. x = X/(X+Y+Z) y =
+ Y/(X+Y+Z) z = Z/(X+Y+Z) The GammaRed, GammaGreen, and GammaBlue fields
+ contain values in "8.8 fixed point" format, which is a technique for
+ representing non-integer numbers. Each value consists of a zeroextended
+ 8-bit magnitude followed by an 8-bit fraction, with the combined 16 bits
+ left-shifted by 8 bits. Thus, in 32-bits, the real value N.F is
+ 00000000nnnnnnnnffffffff00000000, where "nnnnnnnn" and "ffffffff" are
+ binary representations of N and F, respectively. For example, for the
+ real number 10.5, nnnnnnnn would be 00001010 (binary 10) and ffffffff
+ would be 00000101 (binary 5), and the complete 32-bit binary value would
+ be 00000000000010100000010100000000, which is the hexadecimal value
+ 0x0A50.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the
+ of color space objects; it MUST be set to
+ the value 0x50534F43, which is the ASCII encoding of the string
+ "PSOC".
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines a
+ number; it MUST be0x00000400.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the
+ of this object, in bytes.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the color space
+ type. It MUST be defined in the LogicalColorSpace enumeration
+ (section 2.1.1.14). If this value is LCS_sRGB or
+ LCS_WINDOWS_COLOR_SPACE, the sRGB color space MUST be used.
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the gamut mapping
+ intent. It MUST be defined in the GamutMappingIntent enumeration
+ (section 2.1.1.11).
+
+
+
+
+ Gets or sets a CIEXYZTriple object (section 2.2.2.7) that defines
+ the CIE chromaticity x, y, and z coordinates of the three colors
+ that correspond to the RGB for the logical
+ color space associated with the bitmap. If the
+ field does not specify
+ LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for red. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for green. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for blue. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets an optional, ASCII charactger string that specifies the
+ name of a file that contains a color profile. If a file name is
+ specified, and the field is set to
+ LCS_CALIBRATED_RGB, the other fields of this structure SHOULD be
+ ignored.
+
+
+
+
+ The LogColorSpaceW object specifies a logical color space, which can be
+ defined by a color profile file with a name consisting of Unicode 16-bit
+ characters.
+
+
+ See the object (section 2.2.2.11) for
+ additional details concerning the interpretation of field values of this
+ object.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that specifies the
+ of color space objects; it MUST be set to
+ the value 0x50534F43, which is the ASCII encoding of the string
+ "PSOC".
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines a
+ number; it MUST be0x00000400.
+
+
+
+
+ Gets or sets a 32-bit unsigned integer that defines the
+ of this object, in bytes.
+
+
+
+
+ Gets or sets a 32-bit signed integer that specifies the color space
+ type. It MUST be defined in the LogicalColorSpace enumeration
+ (section 2.1.1.14). If this value is LCS_sRGB or
+ LCS_WINDOWS_COLOR_SPACE, the sRGB color space MUST be used.
+
+
+
+
+ Gets or sets a 32-bit signed integer that defines the gamut mapping
+ intent. It MUST be defined in the GamutMappingIntent enumeration
+ (section 2.1.1.11).
+
+
+
+
+ Gets or sets a CIEXYZTriple object (section 2.2.2.7) that defines
+ the CIE chromaticity x, y, and z coordinates of the three colors
+ that correspond to the RGB for the logical
+ color space associated with the bitmap. If the
+ field does not specify
+ LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for red. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for green. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets a 32-bit fixed point value that defines the toned
+ response curve for blue. If the field
+ does not specify LCS_CALIBRATED_RGB, this field MUST be ignored.
+
+
+
+
+ Gets or sets an optional, null-terminated Unicode UTF16-LE character
+ string, which specifies the name of a file that contains a color
+ profile. If a file name is specified, and the
+ field is set to LCS_CALIBRATED_RGB, the
+ other fields of this structure SHOULD be ignored.
+
+
+
+
+ The META_MOVETO record sets the output position in the playback device
+ context to a specified point.
+
+
+
+
+ The META_OFFSETCLIPRGN record moves the clipping region in the playback
+ device context by the specified offsets.
+
+
+
+
+ The META_OFFSETVIEWPORTORG record moves the viewport origin in the
+ playback device context by specified horizontal and vertical offsets.
+
+
+
+
+ The META_OFFSETWINDOWORG record moves the output window origin in the
+ playback device context by specified horizontal and vertical offsets.
+
+
+
+
+ The META_PAINTREGION record paints the specified region by using the
+ brush that is defined in the playback device context.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The region.
+
+
+
+ Gets or sets the index of the region.
+
+
+ The index of the region.
+
+
+
+
+ The META_PATBLT record paints a specified rectangle using the brush that
+ is defined in the playback device context. The brush color and the
+ surface color or colors are combined using the specified raster
+ operation.
+
+
+
+
+ Gets or sets the raster operation.
+
+
+ The raster operation code. This code MUST be one of the values in
+ the Ternary Raster Operation enumeration table.
+
+
+
+
+ Gets or sets the height.
+
+
+ The height, in logical units, of the rectangle.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width, in logical units, of the rectangle.
+
+
+
+
+ The META_PIE record draws a pie-shaped wedge bounded by the intersection
+ of an ellipse and two radials. The pie is outlined by using the pen and
+ filled by using the brush that are defined in the playback device
+ context.
+
+
+
+
+ Gets or sets the radial2.
+
+
+ The radial2.
+
+
+
+
+ Gets or sets the radial1.
+
+
+ The radial1.
+
+
+
+
+ The PitchAndFamily object specifies the pitch and family properties of a
+ Font object (section 2.2.1.2). Pitch refers to the width of the
+ characters, and family refers to the general appearance of a font.
+
+
+
+
+ Initializes a new instance of the
+ struct.
+
+ The data.
+
+
+
+ Initializes a new instance of the
+ struct.
+
+ The pitch.
+ The family.
+
+
+
+ To the byte.
+
+ The byte value.
+
+
+
+ Gets A property of a font that describes its general appearance.
+ This MUST be a value in the FamilyFont enumeration
+
+
+ The family.
+
+
+
+
+ Gets A property of a font that describes the pitch, of the
+ characters. This MUST be a value in the PitchFont enumeration.
+
+
+ The pitch.
+
+
+
+
+ Sets the data.
+
+
+ The data.
+
+
+
+
+ The polygon object
+
+
+
+
+ Gets or sets the number of point. A 16-bit signed integer that
+ defines the number of points in the array.
+
+
+ The number of point.
+
+
+
+
+ Gets or sets the points. A NumberOfPoints array of 32-bit PointS
+ Objects (section 2.2.2.16), in logical units.
+
+
+ The points.
+
+
+
+
+ The poly line object.
+
+
+
+
+ Gets or sets the number of point. A 16-bit signed integer that
+ defines the number of points in the array.
+
+
+ The number of point.
+
+
+
+
+ Gets or sets the points. A NumberOfPoints array of 32-bit PointS
+ Objects, in logical units.
+
+
+ The points.
+
+
+
+
+ The PolyPolygon Object defines a series of closed polygons.
+
+
+
+
+ Gets or sets the number of polygons. The number of polygons in the
+ object.
+
+
+ The number of polygons.
+
+
+
+
+ Gets or sets a points per polygon.
+
+
+ The number of points for each polygon in the object.
+
+
+
+
+ Gets or sets a points.
+
+
+ a points.
+
+
+
+
+ The META_REALIZEPALETTE record maps entries from the logical palette
+ that is defined in the playback device context to the system palette.
+
+
+
+
+ The Wmf Record
+
+
+
+
+ Gets or sets the size.
+
+
+ The size.
+
+
+
+
+ number (defined in WINDOWS.H)
+
+
+
+
+ The Region Object defines a potentially non-rectilinear shape defined by
+ an array of scanlines.
+
+
+
+
+ Gets or sets the next in chain.
+
+
+ A value that MUST be ignored.
+
+
+
+
+ Gets or sets the type of the object.
+
+
+ The region identifier. It MUST be 0x0006.
+
+
+
+
+ Gets or sets the object count.
+
+
+ A value that MUST be ignored.
+
+
+
+
+ Gets or sets the size of the region.
+
+
+ The size of the region in bytes plus the size of aScans in bytes.
+
+
+
+
+ Gets or sets the scan count.
+
+
+ The number of scanlines composing the region.
+
+
+
+
+ Gets or sets the maximum scan.
+
+
+ The maximum number of points in any one scan in this region.
+
+
+
+
+ Gets or sets the bounding rectangle.
+
+
+ A Rect object (section 2.2.2.18) that defines the bounding
+ rectangle.
+
+
+
+
+ Gets or sets a scans.
+
+
+ An array of Scan objects (section 2.2.2.21) that define the
+ scanlines in the region.
+
+
+
+
+ The META_RESIZEPALETTE record redefines the size of the logical palette
+ that is defined in the playback device context.
+
+
+
+
+ Gets or sets the number of entries.
+
+
+ The number of entries in the logical palette.
+
+
+
+
+ The restore DC object
+
+
+
+
+ Gets or sets the n saved dc.
+
+
+ The saved state to be restored. If this member is positive, nSavedDC
+ represents a specific instance of the state to be restored. If this
+ member is negative, nSavedDC represents an instance relative to the
+ current state.
+
+
+
+
+ The rectangle object.
+
+
+
+
+ Gets or sets the height.
+
+
+ The height, in logical coordinates, of the ellipse used to draw the
+ rounded corners.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width, in logical coordinates, of the ellipse used to draw the
+ rounded corners.
+
+
+
+
+ The META_SAVEDC record saves the playback device context for later
+ retrieval.
+
+
+
+
+ The META_SCALEVIEWPORTEXT record scales the horizontal and vertical
+ extents of the viewport that is defined in the playback device context
+ by using the ratios formed by the specified multiplicands and divisors.
+
+
+
+
+ The META_SCALEWINDOWEXT record scales the horizontal and vertical
+ extents of the output window that is defined in the playback device
+ context by using the ratios formed by specified multiplicands and
+ divisors.
+
+
+
+
+ Gets or sets the y denom.
+
+
+ The amount by which to divide the result of multiplying the current
+ y-extent by the value of the yNum member.
+
+
+
+
+ Gets or sets the y num.
+
+
+ The amount by which to multiply the current y-extent.
+
+
+
+
+ Gets or sets the x denom.
+
+
+ The amount by which to divide the result of multiplying the current
+ x-extent by the value of the xNum member.
+
+
+
+
+ Gets or sets the x number.
+
+
+ The amount by which to multiply the current x-extent.
+
+
+
+
+ The Scan Object specifies a collection of scanlines.
+
+
+
+
+ Gets or sets the count.
+
+
+ The number of horizontal (x-axis) coordinates in the
+
+ array. This value MUST be a multiple of 2, since left and right
+ endpoints are required to specify each scanline.
+
+
+
+
+ Gets or sets the top.
+
+
+ The vertical (y-axis) coordinate, in logical units, of the top
+ scanline.
+
+
+
+
+ Gets or sets the bottom.
+
+
+ The vertical (y-axis) coordinate, in logical units, of the bottom
+ scanline.
+
+
+
+
+ Gets or sets the scan lines.
+
+
+ An array of scanlines, each specified by left and right horizontal
+ (x-axis) coordinates of its endpoints.
+
+
+
+
+ Gets or sets the count2.
+
+
+ The same as the value of the
+
+ field; it is present to allow upward travel in the structure.
+
+
+
+
+ The META_SELECTCLIPREGION record specifies a Region Object (section 2.2.1.5) to be the current clipping region.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The region.
+
+
+
+ Gets or sets the index of the object.
+
+
+ The index of the object.
+
+
+
+
+ The select object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The WMF object.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the index of the object.
+
+
+ The index of the object.
+
+
+
+
+ The META_SELECTPALETTE record defines the current logical palette with a
+ specified Palette Object.
+
+
+
+
+ Gets or sets the index of the object.
+
+
+ The index of the object.
+
+
+
+
+ The META_SETBKCOLOR record sets the background color in the playback
+ device context to a specified color, or to the nearest physical color if
+ the device cannot represent the specified color.
+
+
+
+
+ Gets or sets the color reference.
+
+
+ The color reference.
+
+
+
+
+ The set bk mode.
+
+
+
+
+ Gets or sets the bk mode.
+
+
+ The bk mode.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ The META_SETDIBTODEV record sets a block of pixels in the playback
+ device context using device-independent color data. The source of the
+ color data is a DIB.
+
+
+
+
+ Gets or sets the color usage.
+
+
+ The Colors field of the DIB contains explicit RGB values or indexes
+ into a palette. This MUST be one of the values in the
+
+ Enumeration (section 2.1.1.6).
+
+
+
+
+ Gets or sets the scan count.
+
+
+ The the number of scan lines in the source.
+
+
+
+
+ Gets or sets the start scan.
+
+
+ The starting scan line in the source.
+
+
+
+
+ Gets or sets the dib position.
+
+
+ The coordinates, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the height.
+
+
+ The height, in logical units, of the source and destination
+ rectangles.
+
+
+
+
+ Gets or sets the width.
+
+
+ The width, in logical units, of the source and destination
+ rectangles.
+
+
+
+
+ Gets or sets the dest position.
+
+
+ The coordinates, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the dib.
+
+
+ y-coordinate, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ The META_SETLAYOUT record defines the layout orientation in the playback
+ device context. The layout orientation determines the direction in which
+ text and graphics are drawn
+
+
+
+
+ Gets or sets the LayoutMode.
+
+
+ The layout of text and graphics. This MUST be one of the values in
+ the Layout Enumeration (section 2.1.1.13).
+
+
+
+
+ The set map mode.
+
+
+
+
+ Gets or sets the map mode.
+
+
+ The map mode.
+
+
+
+
+ The META_SETMAPPERFLAGS record defines the algorithm that the font
+ mapper uses when it maps logical fonts to physical fonts.
+
+
+
+
+ Gets or sets the mapper values.
+
+
+ The font mapper attempts to match a font aspect ratio to the current
+ device aspect ratio. If bit zero is set, the mapper selects only
+ matching fonts.
+
+
+
+
+ The META_SETPALENTRIES record defines RGB color values in a range of
+ entries in the logical palette that is defined in the playback device
+ context.
+
+
+
+
+ Gets or sets the log palette.
+
+
+ The logical palette.
+
+
+
+
+ Gets or sets the start.
+
+
+ The start.
+
+
+
+
+ The META_SETPIXEL record sets the pixel at the specified coordinates to
+ the specified color.
+
+
+
+
+ Gets or sets the color reference.
+
+
+ The color reference.
+
+
+
+
+ The set poly fill mode.
+
+
+
+
+ Gets or sets the poly fill mode.
+
+
+ The poly fill mode.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ The META_SETRELABS record is reserved and not supported.
+
+
+
+
+ Gets or sets the parameter.
+
+
+ The parameter.
+
+
+
+
+ The set rop2
+
+
+
+
+ Gets or sets the draw mode.
+
+
+ The draw mode.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ The META_SETSTRETCHBLTMODE record defines the bitmap stretching mode in
+ the playback device context.
+
+
+
+
+ Gets or sets the stretch mode.
+
+
+ The bitmap stretching mode.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ The Set text align
+
+
+
+
+ Gets or sets the text align.
+
+
+ The text align.
+
+
+
+
+ Gets or sets the reserved.
+
+
+ The reserved.
+
+
+
+
+ The META_SETTEXTCHAREXTRA record defines inter-character spacing for
+ text justification in the playback device context. Spacing is added to
+ the white space between each character, including
+ characters, when a line of justified text is
+ output.
+
+
+
+
+ Gets or sets the character extra.
+
+
+ The amount of extra space, in logical units, to be added to each
+ character. If the current mapping mode is not MM_TEXT, this value is
+ transformed and rounded to the nearest pixel. For details about
+ setting the mapping mode, see META_SETMAPMODE (section 2.3.5.17).
+
+
+
+
+ The Set text color.
+
+
+
+
+ Gets or sets the color reference.
+
+
+ The color reference.
+
+
+
+
+ Gets or sets the extended byte.
+
+
+ The extended byte.
+
+
+
+
+ The META_SETTEXTJUSTIFICATION record defines the amount of space to add
+ to characters in a string of justified text.
+
+
+
+
+ Gets or sets the count.
+
+
+ The count.
+
+
+
+
+ Gets or sets the extra.
+
+
+ The extra.
+
+
+
+
+ The META_SETVIEWPORTEXT record sets the horizontal and vertical extents
+ of the viewport in the playback device context.
+
+
+
+
+ The META_SETVIEWPORTORG record defines the viewport origin in the
+ playback device context.
+
+
+
+
+ The set window object.
+
+
+
+
+ The set window org object
+
+
+
+
+ The wmf Stretch DIB objetc.
+
+
+
+
+ WMFs the record.
+
+
+
+
+ Gets or sets the raster operation.
+
+
+ The current brush in the playback device context, and the
+ destination pixels are to be combined to form the new image. This
+ code MUST be one of the values in the Ternary Raster Operation
+ Enumeration (section 2.1.1.31).
+
+
+
+
+ Gets or sets the color usage.
+
+
+
+ The Colors field of the DIB contains explicit RGB values or indexes
+ into a palette. This value MUST be in the
+
+ Enumeration (section 2.1.1.6).
+
+
+
+
+ Gets or sets the height of the source.
+
+
+ The height, in logical units, of the source rectangle.
+
+
+
+
+ Gets or sets the width of the source.
+
+
+ The width, in logical units, of the source rectangle
+
+
+
+
+ Gets or sets the y source.
+
+
+ The y-coordinate, in logical units, of the upper-left corner of the
+ source rectangle.
+
+
+
+
+ Gets or sets the x source.
+
+
+ The x-coordinate, in logical units, of the upper-left corner of the
+ source rectangle.
+
+
+
+
+ Gets or sets the height of the dest.
+
+
+ The height, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the width of the dest.
+
+
+ The width, in logical units, of the destination rectangle.
+
+
+
+
+ Gets or sets the y dest.
+
+
+ The y-coordinate, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the x dest.
+
+
+ The x-coordinate, in logical units, of the upper-left corner of the
+ destination rectangle.
+
+
+
+
+ Gets or sets the source bitmap.
+
+
+ The source bitmap.
+
+
+
+
+ The META_EXTTEXTOUT record outputs text by using the font, background
+ color, and text color that are defined in the playback device context.
+ Optionally, dimensions can be provided for clipping, opaquing, or both.
+
+
+
+
+ The wmf untyped object
+
+
+
+
+ Gets or sets the parameters.
+
+
+ The parameters.
+
+
+
+
+ The Metafiles base options.
+
+
+
+
+ The metafile rasterization options
+ This class will be removed in next versions.
+ Please use concrete realization, for example OdgRasterizationOptions, SvgRasterizationOptions, CdrRasterizationOptions, CmxRasterizationOptions
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ The product title.
+
+
+
+
+ The assembly version.
+
+
+
+
+ The file version.
+
+
+
+
+ The major product version.
+
+
+
+
+ The minor product version.
+
+
+
+
+ Throws if the profile has not the passed tag signature (for a curve, Xyz and so on).
+
+
+
+
+ Throws if the profile colorspaces no match with previous xforms.
+
+
+
+
+ Throws if the profile header is invalid.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A message that describes an error.
+
+
+
+ Throws if the profile has not actual IccXform object. The type of IccXform depends
+ upon the kind of transform that is implied by the ICC Profile.
+
+
+
+
+ Throws if the profile has invalid Lut tag.
+
+
+
+
+ Throws if 'Apply' conversion of the profile(s) has invalid array length for the source or destination pixel.
+
+
+
+
+ Throws if IccXforms are not setted up before adding profiles.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A message that describes the error.
+
+
+
+ Throws if some error occured while performing black point compensation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A message that describes the error.
+
+
+
+ Throws if some calculation error occured.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A message that describes the error.
+
+
+
+ Color space signatures
+
+
+
+
+ Represents the signature for XYZ color space.
+
+
+
+
+ Represents the signature for Lab color space.
+
+
+
+
+ Represents the signature for Luv color space.
+
+
+
+
+ Represents the signature for YCbr color space.
+
+
+
+
+ Represents the signature for Yxy color space.
+
+
+
+
+ Represents the signature for RGB color space.
+
+
+
+
+ Represents the signature for GRAY color space.
+
+
+
+
+ Represents the signature for HSV color space.
+
+
+
+
+ Represents the signature for HLS color space.
+
+
+
+
+ Represents the signature for CMYK color space.
+
+
+
+
+ Represents the signature for CMY color space.
+
+
+
+
+ Represents the signature for 2CLR color space.
+
+
+
+
+ Represents the signature for 3CLR color space.
+
+
+
+
+ Represents the signature for 4CLR color space.
+
+
+
+
+ Represents the signature for 5CLR color space.
+
+
+
+
+ Represents the signature for 6CLR color space.
+
+
+
+
+ Represents the signature for 7CLR color space.
+
+
+
+
+ Represents the signature for 8CLR color space.
+
+
+
+
+ Represents the signature for 9CLR color space.
+
+
+
+
+ Represents the signature for ACLR color space.
+
+
+
+
+ Represents the signature for BCLR color space.
+
+
+
+
+ Represents the signature for CCLR color space.
+
+
+
+
+ Represents the signature for DCLR color space.
+
+
+
+
+ Represents the signature for ECLR color space.
+
+
+
+
+ Represents the signature for FCLR color space.
+
+
+
+
+ Represents the signature for nmcl color space.
+
+
+
+
+ Represents the signature for unknown color space.
+
+
+
+
+ Rendering intents enum
+
+
+
+
+ Perceptual
+
+
+
+
+ Media-Relative Colorimetric
+
+
+
+
+ Saturation
+
+
+
+
+ Icc-Absolute Colorimetric
+
+
+
+
+ Unknown ('????')
+
+
+
+
+ This class provides an interface for applying pixel transformations and
+ allows one or more profiles to be applied in order that they are added.
+
+
+
+
+ Creates color management module with ordinary color translation direction (ColorSpace -> PCS -> ColorSpace) and rendering intent that is specified by first profile.
+
+
+
+
+ Creates color management module with explicitly specified direction of color translation and rendering intent that is specified by first profile.
+
+ Specify explicitly the class of first profile i.e. set the direction of color translation, if true: ColorSpace -> PCS -> .., otherwise: PCS -> ColorSpace ->...
+
+
+
+ Creates color management module with explicitly specified direction of color translation and rendering intent that is specified by first profile.
+
+ Specify explicitly the class of first profile i.e. set the direction of color translation, if true: ColorSpace -> PCS -> .., otherwise: PCS -> ColorSpace ->...
+ The source color space.
+ The destination color space.
+
+
+
+ Creates color management module with explicitly specified direction of color translation and rendering intent that is specified by first profile.
+
+ Specify explicitly the class of first profile i.e. set the direction of color translation, if true: ColorSpace -> PCS -> .., otherwise: PCS -> ColorSpace ->...
+ Specify the rendering intent for the whole chain of the profiles.
+
+
+
+ Creates color management module with explicitly specified direction of color translation and rendering intent that is specified by first profile.
+
+ Specify explicitly the class of first profile i.e. set the direction of color translation, if true: ColorSpace -> PCS -> .., otherwise: PCS -> ColorSpace ->...
+ Use black point compensation.
+ Use gamut correction.
+
+
+
+ Creates color management module with explicitly specified direction of color translation and rendering intent that is specified by first profile.
+
+ Specify explicitly the class of first profile i.e. set the direction of color translation, if true: ColorSpace -> PCS -> .., otherwise: PCS -> ColorSpace ->...
+ Use black point compensation.
+ Use gamut correction.
+ The source color space.
+ The destination color space.
+
+
+
+ Creates color management module with ordinary color translation direction (ColorSpace -> PCS -> ColorSpace) and rendering intent that is specified by first profile.
+
+ The input class profile.
+ The output (or display) class profile.
+
+
+
+ Creates color management module with ordinary color translation direction (ColorSpace -> PCS -> ColorSpace) and rendering intent that is specified by first profile.
+
+ The input class profile.
+ The output (or display) class profile.
+
+
+
+ Adds ICC profile.
+
+ File path of ICC profile to be added.
+
+
+
+ Adds ICC profile.
+
+ File stream of ICC profile to be added.
+
+
+
+ Applies the profile(s) to the source pixel and saves the result of color conversion in destination pixel.
+
+ The source pixel.
+ The destination pixel.
+
+
+
+ Applies the specified source pixel.
+
+ The source pixel.
+ The DST pixel.
+ Length of the source.
+ Length of the DST.
+
+ srcPixel
+ or
+ dstPixel
+
+
+
+
+
+ This is the base class for an ICC profile
+
+
+
+
+ 'acsp' magic number
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts the profile v4 to v2.
+
+ The input file path.
+ The output file path.
+
+
+
+ Converts the profile v4 to v2.
+
+ The input file stream.
+ The output file stream.
+
+
+
+ The profile header and tag directory are read when class object is created
+ but tag data will not be read. The stream object will remain attached to the profile
+ for the purpose of reading data in as needed.
+
+ The ICC profile stream.
+
+
+
+ Discontinues the use of stream with a profile. This can be done once all
+ the information needed for performing a transform has been extracted from the profile.
+
+
+
+
+ Gets a value indicating whether this instance is CMYK color space.
+
+
+ true if this instance is CMYK color space; otherwise, false.
+
+
+
+ Gets a value indicating whether this instance is RGB color space.
+
+
+ true if this instance is RGB color space; otherwise, false.
+
+
+
+ Gets a value indicating whether this instance is GRAY (monochrome) color space.
+
+
+ true if this instance is GRAY (monochrome) color space; otherwise, false.
+
+
+
+ The ColorStop interface is used to represent any color-stop value. This interface reflects the values in the underlying style property. Hence, modifications made to the CssPrimitiveValue objects modify the style property.
+
+
+
+
+ This attribute is used for the color.
+
+
+ The color.
+
+
+
+
+ This attribute is used for the stop length.
+
+
+ The stop length.
+
+
+
+
+ Represents output device settings
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the type of the media.
+
+
+ The type of the media.
+
+
+
+
+ Gets or sets the size of the screen.
+
+
+ The size of the screen.
+
+
+
+
+ Gets or sets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets or sets the size of the window.
+
+
+ The size of the window.
+
+
+
+
+ Gets the color settings.
+
+
+
+
+ Gets or sets the resolution.
+
+
+ The resolution.
+
+
+
+
+ Gets or sets the scanning process of "tv" output devices.
+
+
+ The scan.
+
+
+
+
+ Gets or sets a value indicating whether this device is grid based(e.g., a "tty" terminal, or a phone display with only one fixed font).
+
+
+ true if this instance is grid based; otherwise, false.
+
+
+
+
+ Represent color settings
+
+
+
+
+ Gets or sets the bits per color component.
+
+
+ The bit per color component.
+
+
+
+
+ Gets or sets the number of entries in the color lookup table.
+
+
+ The color lookup table indexes.
+
+
+
+
+ Gets or sets the number of bits per pixel in a monochrome frame buffer. If the device is not a monochrome device, the value will be 0.
+
+
+ The monochrome bit per pixel.
+
+
+
+
+ Represents CSS properties converter.
+
+
+
+
+ Gets the enum value for the string representation.
+
+ The enum type.
+ The value.
+ Returns value
+
+
+
+ Gets the name representation for the enum type.
+
+ The enum type.
+ The value.
+ Returns name
+
+
+
+ Represents device orientation type.
+
+
+
+
+
+ Portrait type
+
+
+
+
+ Landscape type
+
+
+
+
+ Represents CSS resolver settings
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the Html page content language.
+
+
+ The content language.
+
+
+
+
+ Gets or sets a value indicating whether case sensitive.
+
+
+ true if case sensitive; otherwise, false.
+
+
+
+
+ Gets or sets the vendor.
+
+
+ The vendor.
+
+
+
+
+ Gets or sets the device.
+
+
+ The device.
+
+
+
+
+ The 'scan' media feature type describes the scanning process of "tv" output devices.
+
+
+
+
+
+ Progressive type
+
+
+
+
+ Interlace type
+
+
+
+
+ The Counter interface is used to represent any counter or counters function value. This interface reflects the values in the underlying style property.
+
+
+
+
+ This attribute is used for the identifier of the counter.
+
+
+ The identifier of the counter.
+
+
+
+
+ This attribute is used for the style of the list.
+
+
+ The list style.
+
+
+
+
+ This attribute is used for the separator of the nested counters.
+
+
+ The separator.
+
+
+
+
+ CSS2Properties class for CSS2 property-set management
+
+
+
+
+ Provides interface for CSS2 properties set values manipulation in the context of certain HTML element
+
+
+
+
+ See the azimuth property definition in CSS2.
+
+ The azimuth property
+
+
+
+ See the azimuth property definition in CSS2.
+
+ The azimuth.
+
+
+
+ See the background property definition in CSS2.
+
+ the background property
+
+
+
+ See the background property definition in CSS2.
+
+ The background.
+
+
+
+ See the background-attachment property definition in CSS2.
+
+ background-attachment property
+
+
+
+ See the background-attachment property definition in CSS2.
+
+ The background attachment.
+
+
+
+ See the background-color property definition in CSS2.
+
+ background-color property
+
+
+
+ See the background-color property definition in CSS2.
+
+ Color of the background.
+
+
+
+ See the background-image property definition in CSS2.
+
+ background-image property
+
+
+
+ See the background-image property definition in CSS2.
+
+ The background image.
+
+
+
+ See the background-position property definition in CSS2.
+
+ background-position property
+
+
+
+ See the background-position property definition in CSS2.
+
+ The background position.
+
+
+
+ See the background-repeat property definition in CSS2.
+
+ background-repeat property
+
+
+
+ See the background-repeat property definition in CSS2.
+
+ The background repeat.
+
+
+
+ See the border property definition in CSS2.
+
+ border property
+
+
+
+ See the border property definition in CSS2.
+
+ The border.
+
+
+
+ See the border-collapse property definition in CSS2.
+
+ border-collapse property
+
+
+
+ See the border-collapse property definition in CSS2.
+
+ The border collapse.
+
+
+
+ See the border-color property definition in CSS2.
+
+ border-color property
+
+
+
+ See the border-color property definition in CSS2.
+
+ Color of the border.
+
+
+
+ See the border-spacing property definition in CSS2.
+
+ border-spacing property
+
+
+
+ See the border-spacing property definition in CSS2.
+
+ The border spacing.
+
+
+
+ See the border-style property definition in CSS2.
+
+ border-style property
+
+
+
+ See the border-style property definition in CSS2.
+
+ The border style.
+
+
+
+ See the border-top property definition in CSS2.
+
+ border-top property
+
+
+
+ See the border-top property definition in CSS2.
+
+ The border top.
+
+
+
+ See the border-right property definition in CSS2.
+
+ border-right property
+
+
+
+ See the border-right property definition in CSS2.
+
+ The border right.
+
+
+
+ See the border-bottom property definition in CSS2.
+
+ border-bottom property
+
+
+
+ See the border-bottom property definition in CSS2.
+
+ The border bottom.
+
+
+
+ See the border-left property definition in CSS2.
+
+ border-left property
+
+
+
+ See the border-left property definition in CSS2.
+
+ The border left.
+
+
+
+ See the border-top-color property definition in CSS2.
+
+ border-top-color property
+
+
+
+ See the border-top-color property definition in CSS2.
+
+ Color of the border top.
+
+
+
+ See the border-right-color property definition in CSS2.
+
+ border-right-color property
+
+
+
+ See the border-right-color property definition in CSS2.
+
+ Color of the border right.
+
+
+
+ See the border-bottom-color property definition in CSS2.
+
+ border-bottom-color property
+
+
+
+ See the border-bottom-color property definition in CSS2.
+
+ Color of the border bottom.
+
+
+
+ See the border-left-color property definition in CSS2.
+
+ border-left-color property
+
+
+
+ See the border-left-color property definition in CSS2.
+
+ Color of the border left.
+
+
+
+ See the border-top-style property definition in CSS2.
+
+ border-top-style property
+
+
+
+ See the border-top-style property definition in CSS2.
+
+ The border top style.
+
+
+
+ See the border-right-style property definition in CSS2.
+
+ border-right-style property
+
+
+
+ See the border-right-style property definition in CSS2.
+
+ The border right style.
+
+
+
+ See the border-bottom-style property definition in CSS2.
+
+ border-bottom-style property
+
+
+
+ See the border-bottom-style property definition in CSS2.
+
+ The border bottom style.
+
+
+
+ See the border-left-style property definition in CSS2.
+
+ border-left-style property
+
+
+
+ See the border-left-style property definition in CSS2.
+
+ The border left style.
+
+
+
+ See the border-top-width property definition in CSS2.
+
+ border-top-width property
+
+
+
+ See the border-top-width property definition in CSS2.
+
+ Width of the border top.
+
+
+
+ See the border-right-width property definition in CSS2.
+
+ border-right-width property
+
+
+
+ See the border-right-width property definition in CSS2.
+
+ Width of the border right.
+
+
+
+ See the border-bottom-width property definition in CSS2.
+
+ border-bottom-width property
+
+
+
+ See the border-bottom-width property definition in CSS2.
+
+ Width of the border bottom.
+
+
+
+ See the border-left-width property definition in CSS2.
+
+ border-left-width property
+
+
+
+ See the border-left-width property definition in CSS2.
+
+ Width of the border left.
+
+
+
+ See the border-width property definition in CSS2.
+
+ border-width property
+
+
+
+ See the border-width property definition in CSS2.
+
+ Width of the border.
+
+
+
+ See the bottom property definition in CSS2.
+
+ bottom property
+
+
+
+ See the bottom property definition in CSS2.
+
+ The bottom.
+
+
+
+ See the caption-side property definition in CSS2.
+
+ caption-side property
+
+
+
+ See the caption-side property definition in CSS2.
+
+ The caption side.
+
+
+
+ See the clear property definition in CSS2.
+
+ clear property
+
+
+
+ See the clear property definition in CSS2.
+
+ The clear.
+
+
+
+ See the clip property definition in CSS2.
+
+ clip property
+
+
+
+ See the clip property definition in CSS2.
+
+ The clip value.
+
+
+
+ See the color property definition in CSS2.
+
+ color property
+
+
+
+ See the color property definition in CSS2.
+
+ The color.
+
+
+
+ See the content property definition in CSS2.
+
+ content property
+
+
+
+ See the content property definition in CSS2.
+
+ The content.
+
+
+
+ See the counter-increment property definition in CSS2.
+
+ counter-increment property
+
+
+
+ See the counter-increment property definition in CSS2.
+
+ The counter increment.
+
+
+
+ See the counter-reSet property definition in CSS2.
+
+ counter-reSet property
+
+
+
+ See the counter-reSet property definition in CSS2.
+
+ The counter reSet.
+
+
+
+ See the cue property definition in CSS2.
+
+ cue property
+
+
+
+ See the cue property definition in CSS2.
+
+ The cue value.
+
+
+
+ See the cue-after property definition in CSS2.
+
+ cue-after property
+
+
+
+ See the cue-after property definition in CSS2.
+
+ The cue after.
+
+
+
+ See the cue-before property definition in CSS2.
+
+ cue-before property
+
+
+
+ See the cue-before property definition in CSS2.
+
+ The cue before.
+
+
+
+ See the cursor property definition in CSS2.
+
+ cursor property
+
+
+
+ See the cursor property definition in CSS2.
+
+ The cursor.
+
+
+
+ See the direction property definition in CSS2.
+
+ direction property
+
+
+
+ See the direction property definition in CSS2.
+
+ The direction.
+
+
+
+ See the display property definition in CSS2.
+
+ display property
+
+
+
+ See the display property definition in CSS2.
+
+ The display.
+
+
+
+ See the elevation property definition in CSS2.
+
+ elevation property
+
+
+
+ See the elevation property definition in CSS2.
+
+ The elevation.
+
+
+
+ See the empty-cells property definition in CSS2.
+
+ empty-cells property
+
+
+
+ See the empty-cells property definition in CSS2.
+
+ The empty cells.
+
+
+
+ See the float property definition in CSS2.
+
+ float property
+
+
+
+ See the float property definition in CSS2.
+
+ The CSS float.
+
+
+
+ See the font property definition in CSS2.
+
+ font property
+
+
+
+ See the font property definition in CSS2.
+
+ The font value.
+
+
+
+ See the font-family property definition in CSS2.
+
+ font-family property
+
+
+
+ See the font-family property definition in CSS2.
+
+ The font family.
+
+
+
+ See the font-size property definition in CSS2.
+
+ font-size property
+
+
+
+ See the font-size property definition in CSS2.
+
+ Size of the font.
+
+
+
+ See the font-size-adjust property definition in CSS2.
+
+ font-size-adjust property
+
+
+
+ See the font-size-adjust property definition in CSS2.
+
+ The font size adjust.
+
+
+
+ See the font-stretch property definition in CSS2.
+
+ font-stretch property
+
+
+
+ See the font-stretch property definition in CSS2.
+
+ The font stretch.
+
+
+
+ See the font-style property definition in CSS2.
+
+ font-style property
+
+
+
+ See the font-style property definition in CSS2.
+
+ The font style.
+
+
+
+ See the font-variant property definition in CSS2.
+
+ font-variant property
+
+
+
+ See the font-variant property definition in CSS2.
+
+ The font variant.
+
+
+
+ See the font-weight property definition in CSS2.
+
+ font-weight property
+
+
+
+ See the font-weight property definition in CSS2.
+
+ The font weight.
+
+
+
+ See the height property definition in CSS2.
+
+ height property
+
+
+
+ See the height property definition in CSS2.
+
+ The height.
+
+
+
+ See the left property definition in CSS2.
+
+ left property
+
+
+
+ See the left property definition in CSS2.
+
+ The left value.
+
+
+
+ See the letter-spacing property definition in CSS2.
+
+ letter-spacing property
+
+
+
+ See the letter-spacing property definition in CSS2.
+
+ The letter spacing.
+
+
+
+ See the line-height property definition in CSS2.
+
+ line-height property
+
+
+
+ See the line-height property definition in CSS2.
+
+ Height of the line.
+
+
+
+ See the list-style property definition in CSS2.
+
+ list-style property
+
+
+
+ See the list-style property definition in CSS2.
+
+ The list style.
+
+
+
+ See the list-style-image property definition in CSS2.
+
+ list-style-image property
+
+
+
+ See the list-style-image property definition in CSS2.
+
+ The list style image.
+
+
+
+ See the list-style-position property definition in CSS2.
+
+ list-style-position property
+
+
+
+ See the list-style-position property definition in CSS2.
+
+ The list style position.
+
+
+
+ See the list-style-type property definition in CSS2.
+
+ list-style-type property
+
+
+
+ See the list-style-type property definition in CSS2.
+
+ Type of the list style.
+
+
+
+ See the margin property definition in CSS2.
+
+ margin property
+
+
+
+ See the margin property definition in CSS2.
+
+ The margin.
+
+
+
+ See the margin-top property definition in CSS2.
+
+ The margin top
+
+
+
+ See the margin-top property definition in CSS2.
+
+ The margin top.
+
+
+
+ See the margin-right property definition in CSS2.
+
+ The margin-right value
+
+
+
+ See the margin-right property definition in CSS2.
+
+ The margin right.
+
+
+
+ See the margin-bottom property definition in CSS2.
+
+ margin-bottom
+
+
+
+ See the margin-bottom property definition in CSS2.
+
+ The margin bottom.
+
+
+
+ See the margin-left property definition in CSS2.
+
+ margin-left property
+
+
+
+ See the margin-left property definition in CSS2.
+
+ The margin left.
+
+
+
+ See the marker-offSet property definition in CSS2.
+
+ marker-offSet property
+
+
+
+ See the marker-offSet property definition in CSS2.
+
+ The marker offSet.
+
+
+
+ See the marks property definition in CSS2.
+
+ marks property
+
+
+
+ See the marks property definition in CSS2.
+
+ The marks.
+
+
+
+ See the max-height property definition in CSS2.
+
+ max-height property
+
+
+
+ See the max-height property definition in CSS2.
+
+ Height of the max.
+
+
+
+ See the max-width property definition in CSS2.
+
+ max-width property
+
+
+
+ See the max-width property definition in CSS2.
+
+ Width of the max.
+
+
+
+ See the min-height property definition in CSS2.
+
+ min-height property
+
+
+
+ See the min-height property definition in CSS2.
+
+ Height of the min.
+
+
+
+ See the min-width property definition in CSS2.
+
+ min-width property
+
+
+
+ See the min-width property definition in CSS2.
+
+ Width of the min.
+
+
+
+ See the orphans property definition in CSS2.
+
+ orphans property
+
+
+
+ See the orphans property definition in CSS2.
+
+ The orphans.
+
+
+
+ See the outline property definition in CSS2.
+
+ outline property
+
+
+
+ See the outline property definition in CSS2.
+
+ The outline.
+
+
+
+ See the outline-color property definition in CSS2.
+
+ outline-color property
+
+
+
+ See the outline-color property definition in CSS2.
+
+ Color of the outline.
+
+
+
+ See the outline-style property definition in CSS2.
+
+ outline-style property
+
+
+
+ See the outline-style property definition in CSS2.
+
+ The outline style.
+
+
+
+ See the outline-width property definition in CSS2.
+
+ outline-width property
+
+
+
+ See the outline-width property definition in CSS2.
+
+ Width of the outline.
+
+
+
+ See the overflow property definition in CSS2.
+
+ overflow property
+
+
+
+ See the overflow property definition in CSS2.
+
+ The overflow.
+
+
+
+ See the padding property definition in CSS2.
+
+ padding property
+
+
+
+ See the padding property definition in CSS2.
+
+ The padding.
+
+
+
+ See the padding-top property definition in CSS2.
+
+ padding-top property
+
+
+
+ See the padding-top property definition in CSS2.
+
+ The padding top.
+
+
+
+ See the padding-right property definition in CSS2.
+
+ padding-right property
+
+
+
+ See the padding-right property definition in CSS2.
+
+ The padding right.
+
+
+
+ See the padding-bottom property definition in CSS2.
+
+ padding-bottom property
+
+
+
+ See the padding-bottom property definition in CSS2.
+
+ The padding bottom.
+
+
+
+ See the padding-left property definition in CSS2.
+
+ padding-left property
+
+
+
+ See the padding-left property definition in CSS2.
+
+ The padding left.
+
+
+
+ See the page property definition in CSS2.
+
+ page property
+
+
+
+ See the page property definition in CSS2.
+
+ The page value.
+
+
+
+ See the page-break-after property definition in CSS2.
+
+ page-break-after property
+
+
+
+ See the page-break-after property definition in CSS2.
+
+ The page break after.
+
+
+
+ See the page-break-before property definition in CSS2.
+
+ page-break-before property
+
+
+
+ See the page-break-before property definition in CSS2.
+
+ The page break before.
+
+
+
+ See the page-break-inside property definition in CSS2.
+
+ page-break-inside property
+
+
+
+ See the page-break-inside property definition in CSS2.
+
+ The page break inside.
+
+
+
+ See the pause property definition in CSS2.
+
+ pause property
+
+
+
+ See the pause property definition in CSS2.
+
+ The pause.
+
+
+
+ See the pause-after property definition in CSS2.
+
+ pause-after property
+
+
+
+ See the pause-after property definition in CSS2.
+
+ The pause after.
+
+
+
+ See the pause-before property definition in CSS2.
+
+ pause-before property
+
+
+
+ See the pause-before property definition in CSS2.
+
+ The pause before.
+
+
+
+ See the pitch property definition in CSS2.
+
+ pitch property
+
+
+
+ See the pitch property definition in CSS2.
+
+ The pitch.
+
+
+
+ See the pitch-range property definition in CSS2.
+
+ pitch-range property
+
+
+
+ See the pitch-range property definition in CSS2.
+
+ The pitch range.
+
+
+
+ See the play-during property definition in CSS2.
+
+ play-during property
+
+
+
+ See the play-during property definition in CSS2.
+
+ The play during.
+
+
+
+ See the position property definition in CSS2.
+
+ position property
+
+
+
+ See the position property definition in CSS2.
+
+ The position.
+
+
+
+ See the quotes property definition in CSS2.
+
+ quotes property
+
+
+
+ See the quotes property definition in CSS2.
+
+ The quotes.
+
+
+
+ See the richness property definition in CSS2.
+
+ richness property
+
+
+
+ See the richness property definition in CSS2.
+
+ The richness.
+
+
+
+ See the right property definition in CSS2.
+
+ right property
+
+
+
+ See the right property definition in CSS2.
+
+ The right.
+
+
+
+ See the size property definition in CSS2.
+
+ size property
+
+
+
+ See the size property definition in CSS2.
+
+ The size value.
+
+
+
+ See the speak property definition in CSS2.
+
+ speak property
+
+
+
+ See the speak property definition in CSS2.
+
+ The speak.
+
+
+
+ See the speak-header property definition in CSS2.
+
+ speak-header property
+
+
+
+ See the speak-header property definition in CSS2.
+
+ The speak header.
+
+
+
+ See the speak-numeral property definition in CSS2.
+
+ speak-numeral property
+
+
+
+ See the speak-numeral property definition in CSS2.
+
+ The speak numeral.
+
+
+
+ See the speak-punctuation property definition in CSS2.
+
+ speak-punctuation property
+
+
+
+ See the speak-punctuation property definition in CSS2.
+
+ The speak punctuation.
+
+
+
+ See the speech-rate property definition in CSS2.
+
+ speech-rate property
+
+
+
+ See the speech-rate property definition in CSS2.
+
+ The speech rate.
+
+
+
+ See the stress property definition in CSS2.
+
+ stress property
+
+
+
+ See the stress property definition in CSS2.
+
+ The stress.
+
+
+
+ See the table-layout property definition in CSS2.
+
+ table-layout property
+
+
+
+ See the table-layout property definition in CSS2.
+
+ The table layout.
+
+
+
+ See the text-align property definition in CSS2.
+
+ text-align property
+
+
+
+ See the text-align property definition in CSS2.
+
+ The text align.
+
+
+
+ See the text-decoration property definition in CSS2.
+
+ text-decoration property
+
+
+
+ See the text-decoration property definition in CSS2.
+
+ The text decoration.
+
+
+
+ See the text-indent property definition in CSS2.
+
+ text-indent property
+
+
+
+ See the text-indent property definition in CSS2.
+
+ The text indent.
+
+
+
+ See the text-shadow property definition in CSS2.
+
+ text-shadow property
+
+
+
+ See the text-shadow property definition in CSS2.
+
+ The text shadow.
+
+
+
+ See the text-transform property definition in CSS2.
+
+ text-transform property
+
+
+
+ See the text-transform property definition in CSS2.
+
+ The text transform.
+
+
+
+ See the top property definition in CSS2.
+
+ top property
+
+
+
+ See the top property definition in CSS2.
+
+ The top value.
+
+
+
+ See the unicode-bidi property definition in CSS2.
+
+ unicode-bidi property
+
+
+
+ See the unicode-bidi property definition in CSS2.
+
+ The unicode bidi.
+
+
+
+ See the vertical-align property definition in CSS2.
+
+ vertical-align property
+
+
+
+ See the vertical-align property definition in CSS2.
+
+ The vertical align.
+
+
+
+ See the visibility property definition in CSS2.
+
+ visibility property
+
+
+
+ See the visibility property definition in CSS2.
+
+ The visibility.
+
+
+
+ See the voice-family property definition in CSS2.
+
+ voice-family property
+
+
+
+ See the voice-family property definition in CSS2.
+
+ The voice family.
+
+
+
+ See the volume property definition in CSS2.
+
+ volume property
+
+
+
+ See the volume property definition in CSS2.
+
+ The volume.
+
+
+
+ See the white-space property definition in CSS2.
+
+ white-space property
+
+
+
+ See the white-space property definition in CSS2.
+
+ The white space.
+
+
+
+ See the widows property definition in CSS2.
+
+ widows property
+
+
+
+ See the widows property definition in CSS2.
+
+ The widows.
+
+
+
+ See the width property definition in CSS2.
+
+ width property
+
+
+
+ See the width property definition in CSS2.
+
+ The width.
+
+
+
+ See the word-spacing property definition in CSS2.
+
+ word-spacing property
+
+
+
+ See the word-spacing property definition in CSS2.
+
+ The word spacing.
+
+
+
+ See the z-index property definition in CSS2.
+
+ z-index property
+
+
+
+ See the z-index property definition in CSS2.
+
+ Index of the z.
+
+
+
+ The CSSStyleDeclaration interface represents a single CSS declaration block. This interface may be used to determine the style properties currently set in a block or to set style properties explicitly within the block.
+
+
+
+
+ Used to retrieve the value of a CSS property if it has been explicitly set within this declaration block.
+
+ Name of the property.
+ Returns property value
+
+
+
+ Used to retrieve the object representation of the value of a CSS property if it has been explicitly set within this declaration block. This method returns null if the property is a shorthand property. Shorthand property values can only be accessed and modified as strings, using the getPropertyValue and setProperty methods.
+
+ Name of the property.
+ Returns property value
+
+
+
+ Used to remove a CSS property if it has been explicitly set within this declaration block.
+
+ Name of the property.
+ Returns property value
+
+
+
+ Used to retrieve the priority of a CSS property (e.g. the "important" qualifier) if the property has been explicitly set in this declaration block.
+
+ Name of the property.
+ Returns property priority
+
+
+
+ Used to set a property value and priority within this declaration block.
+
+ Name of the property.
+ The value.
+ The priority.
+
+
+
+ The parsable textual representation of the declaration block (excluding the surrounding curly braces). Setting this attribute will result in the parsing of the new value and resetting of all the properties in the declaration block including the removal or addition of properties.
+
+
+ The CSS text.
+
+
+
+
+ The number of properties that have been explicitly set in this declaration block. The range of valid indices is 0 to length-1 inclusive.
+
+
+
+
+ Used to retrieve the properties that have been explicitly set in this declaration block. The order of the properties retrieved using this method does not have to be the order in which they were set. This method can be used to iterate over all properties in this declaration block.
+ The property index
+
+
+
+ The CSS rule that contains this declaration block or null if this CSSStyleDeclaration is not attached to a CSSRule.
+
+
+
+
+ Initializes a new instance of the class.
+
+ HTML Element style declaration.
+
+
+
+ See the azimuth property definition in CSS2.
+
+
+ The azimuth property
+
+
+
+
+ See the azimuth property definition in CSS2.
+
+ The azimuth.
+
+
+
+ See the background property definition in CSS2.
+
+
+ the background property
+
+
+
+
+ See the background property definition in CSS2.
+
+ The background.
+
+
+
+ See the background-attachment property definition in CSS2.
+
+
+ Background-attachment property
+
+
+
+
+ See the background-attachment property definition in CSS2.
+
+ The background attachment.
+
+
+
+ See the background-color property definition in CSS2.
+
+
+ Background-color property
+
+
+
+
+ See the background-color property definition in CSS2.
+
+ Color of the background.
+
+
+
+ See the background-image property definition in CSS2.
+
+
+ Background-image property
+
+
+
+
+ See the background-image property definition in CSS2.
+
+ The background image.
+
+
+
+ See the background-position property definition in CSS2.
+
+
+ background-position property
+
+
+
+
+ See the background-position property definition in CSS2.
+
+ The background position.
+
+
+
+ See the background-repeat property definition in CSS2.
+
+
+ background-repeat property
+
+
+
+
+ See the background-repeat property definition in CSS2.
+
+ The background repeat.
+
+
+
+ See the border property definition in CSS2.
+
+
+ Border property
+
+
+
+
+ See the border property definition in CSS2.
+
+ The border.
+
+
+
+ See the border-collapse property definition in CSS2.
+
+
+ Border-collapse property
+
+
+
+
+ See the border-collapse property definition in CSS2.
+
+ The border collapse.
+
+
+
+ See the border-color property definition in CSS2.
+
+
+ border-color property
+
+
+
+
+ See the border-color property definition in CSS2.
+
+ Color of the border.
+
+
+
+ See the border-spacing property definition in CSS2.
+
+
+ Border-spacing property
+
+
+
+
+ See the border-spacing property definition in CSS2.
+
+ The border spacing.
+
+
+
+ See the border-style property definition in CSS2.
+
+
+ Border-style property
+
+
+
+
+ See the border-style property definition in CSS2.
+
+ The border style.
+
+
+
+ See the border-top property definition in CSS2.
+
+
+ Border-top property
+
+
+
+
+ See the border-top property definition in CSS2.
+
+ The border top.
+
+
+
+ See the border-right property definition in CSS2.
+
+
+ Border-right property
+
+
+
+
+ See the border-right property definition in CSS2.
+
+ The border right.
+
+
+
+ See the border-bottom property definition in CSS2.
+
+
+ Border-bottom property
+
+
+
+
+ See the border-bottom property definition in CSS2.
+
+ The border bottom.
+
+
+
+ See the border-left property definition in CSS2.
+
+
+ Border-left property
+
+
+
+
+ See the border-left property definition in CSS2.
+
+ The border left.
+
+
+
+ See the border-top-color property definition in CSS2.
+
+
+ Border-top-color property
+
+
+
+
+ See the border-top-color property definition in CSS2.
+
+ Color of the border top.
+
+
+
+ See the border-right-color property definition in CSS2.
+
+
+ Border-right-color property
+
+
+
+
+ See the border-right-color property definition in CSS2.
+
+ Color of the border right.
+
+
+
+ See the border-bottom-color property definition in CSS2.
+
+
+ Border-bottom-color property
+
+
+
+
+ See the border-bottom-color property definition in CSS2.
+
+ Color of the border bottom.
+
+
+
+ See the border-left-color property definition in CSS2.
+
+
+ Border-left-color property
+
+
+
+
+ See the border-left-color property definition in CSS2.
+
+ Color of the border left.
+
+
+
+ See the border-top-style property definition in CSS2.
+
+
+ border-top-style property
+
+
+
+
+ See the border-top-style property definition in CSS2.
+
+ The border top style.
+
+
+
+ See the border-right-style property definition in CSS2.
+
+
+ border-right-style property
+
+
+
+
+ See the border-right-style property definition in CSS2.
+
+ The border right style.
+
+
+
+ See the border-bottom-style property definition in CSS2.
+
+
+ border-bottom-style property
+
+
+
+
+ See the border-bottom-style property definition in CSS2.
+
+ The border bottom style.
+
+
+
+ See the border-left-style property definition in CSS2.
+
+
+ border-left-style property
+
+
+
+
+ See the border-left-style property definition in CSS2.
+
+ The border left style.
+
+
+
+ See the border-top-width property definition in CSS2.
+
+
+ border-top-width property
+
+
+
+
+ See the border-top-width property definition in CSS2.
+
+ Width of the border top.
+
+
+
+ See the border-right-width property definition in CSS2.
+
+
+ border-right-width property
+
+
+
+
+ See the border-right-width property definition in CSS2.
+
+ Width of the border right.
+
+
+
+ See the border-bottom-width property definition in CSS2.
+
+
+ border-bottom-width property
+
+
+
+
+ See the border-bottom-width property definition in CSS2.
+
+ Width of the border bottom.
+
+
+
+ See the border-left-width property definition in CSS2.
+
+
+ border-left-width property
+
+
+
+
+ See the border-left-width property definition in CSS2.
+
+ Width of the border left.
+
+
+
+ See the border-width property definition in CSS2.
+
+
+ border-width property
+
+
+
+
+ See the border-width property definition in CSS2.
+
+ Width of the border.
+
+
+
+ See the bottom property definition in CSS2.
+
+
+ bottom property
+
+
+
+
+ See the bottom property definition in CSS2.
+
+ The bottom.
+
+
+
+ See the caption-side property definition in CSS2.
+
+
+ caption-side property
+
+
+
+
+ See the caption-side property definition in CSS2.
+
+ The caption side.
+
+
+
+ See the clear property definition in CSS2.
+
+
+ clear property
+
+
+
+
+ See the clear property definition in CSS2.
+
+ The clear.
+
+
+
+ See the clip property definition in CSS2.
+
+
+ clip property
+
+
+
+
+ See the clip property definition in CSS2.
+
+ The clip value.
+
+
+
+ See the color property definition in CSS2.
+
+
+ color property
+
+
+
+
+ See the color property definition in CSS2.
+
+ The color.
+
+
+
+ See the content property definition in CSS2.
+
+
+ content property
+
+
+
+
+ See the content property definition in CSS2.
+
+ The content.
+
+
+
+ See the counter-increment property definition in CSS2.
+
+
+ counter-increment property
+
+
+
+
+ See the counter-increment property definition in CSS2.
+
+ The counter increment.
+
+
+
+ See the counter-reset property definition in CSS2.
+
+
+ counter-reset property
+
+
+
+
+ See the counter-reset property definition in CSS2.
+
+ The counter reset.
+
+
+
+ See the cue property definition in CSS2.
+
+
+ cue property
+
+
+
+
+ See the cue property definition in CSS2.
+
+ The cue value.
+
+
+
+ See the cue-after property definition in CSS2.
+
+
+ cue-after property
+
+
+
+
+ See the cue-after property definition in CSS2.
+
+ The cue after.
+
+
+
+ See the cue-before property definition in CSS2.
+
+
+ cue-before property
+
+
+
+
+ See the cue-before property definition in CSS2.
+
+ The cue before.
+
+
+
+ See the cursor property definition in CSS2.
+
+
+ cursor property
+
+
+
+
+ See the cursor property definition in CSS2.
+
+ The cursor.
+
+
+
+ See the direction property definition in CSS2.
+
+
+ direction property
+
+
+
+
+ See the direction property definition in CSS2.
+
+ The direction.
+
+
+
+ See the display property definition in CSS2.
+
+
+ display property
+
+
+
+
+ See the display property definition in CSS2.
+
+ The display.
+
+
+
+ See the elevation property definition in CSS2.
+
+
+ elevation property
+
+
+
+
+ See the elevation property definition in CSS2.
+
+ The elevation.
+
+
+
+ See the empty-cells property definition in CSS2.
+
+
+ empty-cells property
+
+
+
+
+ See the empty-cells property definition in CSS2.
+
+ The empty cells.
+
+
+
+ See the float property definition in CSS2.
+
+
+ float property
+
+
+
+
+ See the float property definition in CSS2.
+
+ The CSS float.
+
+
+
+ See the font property definition in CSS2.
+
+
+ font property
+
+
+
+
+ See the font property definition in CSS2.
+
+ The font value.
+
+
+
+ See the font-family property definition in CSS2.
+
+
+ font-family property
+
+
+
+
+ See the font-family property definition in CSS2.
+
+ The font family.
+
+
+
+ See the font-size property definition in CSS2.
+
+
+ font-size property
+
+
+
+
+ See the font-size property definition in CSS2.
+
+ Size of the font.
+
+
+
+ See the font-size-adjust property definition in CSS2.
+
+
+ font-size-adjust property
+
+
+
+
+ See the font-size-adjust property definition in CSS2.
+
+ The font size adjust.
+
+
+
+ See the font-stretch property definition in CSS2.
+
+
+ font-stretch property
+
+
+
+
+ See the font-stretch property definition in CSS2.
+
+ The font stretch.
+
+
+
+ See the font-style property definition in CSS2.
+
+
+ font-style property
+
+
+
+
+ See the font-style property definition in CSS2.
+
+ The font style.
+
+
+
+ See the font-variant property definition in CSS2.
+
+
+ font-variant property
+
+
+
+
+ See the font-variant property definition in CSS2.
+
+ The font variant.
+
+
+
+ See the font-weight property definition in CSS2.
+
+
+ font-weight property
+
+
+
+
+ See the font-weight property definition in CSS2.
+
+ The font weight.
+
+
+
+ See the height property definition in CSS2.
+
+
+ height property
+
+
+
+
+ See the height property definition in CSS2.
+
+ The height.
+
+
+
+ See the left property definition in CSS2.
+
+
+ left property
+
+
+
+
+ See the left property definition in CSS2.
+
+ The left value.
+
+
+
+ See the letter-spacing property definition in CSS2.
+
+
+ letter-spacing property
+
+
+
+
+ See the letter-spacing property definition in CSS2.
+
+ The letter spacing.
+
+
+
+ See the line-height property definition in CSS2.
+
+
+ line-height property
+
+
+
+
+ See the line-height property definition in CSS2.
+
+ Height of the line.
+
+
+
+ See the list-style property definition in CSS2.
+
+
+ list-style property
+
+
+
+
+ See the list-style property definition in CSS2.
+
+ The list style.
+
+
+
+ See the list-style-image property definition in CSS2.
+
+
+ list-style-image property
+
+
+
+
+ See the list-style-image property definition in CSS2.
+
+ The list style image.
+
+
+
+ See the list-style-position property definition in CSS2.
+
+
+ list-style-position property
+
+
+
+
+ See the list-style-position property definition in CSS2.
+
+ The list style position.
+
+
+
+ See the list-style-type property definition in CSS2.
+
+
+ list-style-type property
+
+
+
+
+ See the list-style-type property definition in CSS2.
+
+ Type of the list style.
+
+
+
+ See the margin property definition in CSS2.
+
+
+ margin property
+
+
+
+
+ See the margin property definition in CSS2.
+
+ The margin.
+
+
+
+ See the margin-top property definition in CSS2.
+
+
+ The margin top
+
+
+
+
+ See the margin-top property definition in CSS2.
+
+ The margin top.
+
+
+
+ See the margin-right property definition in CSS2.
+
+
+ The margin-right value
+
+
+
+
+ See the margin-right property definition in CSS2.
+
+ The margin right.
+
+
+
+ See the margin-bottom property definition in CSS2.
+
+
+ margin-bottom
+
+
+
+
+ See the margin-bottom property definition in CSS2.
+
+ The margin bottom.
+
+
+
+ See the margin-left property definition in CSS2.
+
+
+ margin-left property
+
+
+
+
+ See the margin-left property definition in CSS2.
+
+ The margin left.
+
+
+
+ See the marker-offset property definition in CSS2.
+
+
+ marker-offset property
+
+
+
+
+ See the marker-offset property definition in CSS2.
+
+ The marker offset.
+
+
+
+ See the marks property definition in CSS2.
+
+
+ marks property
+
+
+
+
+ See the marks property definition in CSS2.
+
+ The marks.
+
+
+
+ See the max-height property definition in CSS2.
+
+
+ max-height property
+
+
+
+
+ See the max-height property definition in CSS2.
+
+ Height of the max.
+
+
+
+ See the max-width property definition in CSS2.
+
+
+ max-width property
+
+
+
+
+ See the max-width property definition in CSS2.
+
+ Width of the max.
+
+
+
+ See the min-height property definition in CSS2.
+
+
+ min-height property
+
+
+
+
+ See the min-height property definition in CSS2.
+
+ Height of the min.
+
+
+
+ See the min-width property definition in CSS2.
+
+
+ min-width property
+
+
+
+
+ See the min-width property definition in CSS2.
+
+ Width of the min.
+
+
+
+ See the orphans property definition in CSS2.
+
+
+ orphans property
+
+
+
+
+ See the orphans property definition in CSS2.
+
+ The orphans.
+
+
+
+ See the outline property definition in CSS2.
+
+
+ outline property
+
+
+
+
+ See the outline property definition in CSS2.
+
+ The outline.
+
+
+
+ See the outline-color property definition in CSS2.
+
+
+ outline-color property
+
+
+
+
+ See the outline-color property definition in CSS2.
+
+ Color of the outline.
+
+
+
+ See the outline-style property definition in CSS2.
+
+
+ outline-style property
+
+
+
+
+ See the outline-style property definition in CSS2.
+
+ The outline style.
+
+
+
+ See the outline-width property definition in CSS2.
+
+
+ outline-width property
+
+
+
+
+ See the outline-width property definition in CSS2.
+
+ Width of the outline.
+
+
+
+ See the overflow property definition in CSS2.
+
+
+ overflow property
+
+
+
+
+ See the overflow property definition in CSS2.
+
+ The overflow.
+
+
+
+ See the padding property definition in CSS2.
+
+
+ padding property
+
+
+
+
+ See the padding property definition in CSS2.
+
+ The padding.
+
+
+
+ See the padding-top property definition in CSS2.
+
+
+ padding-top property
+
+
+
+
+ See the padding-top property definition in CSS2.
+
+ The padding top.
+
+
+
+ See the padding-right property definition in CSS2.
+
+
+ padding-right property
+
+
+
+
+ See the padding-right property definition in CSS2.
+
+ The padding right.
+
+
+
+ See the padding-bottom property definition in CSS2.
+
+
+ padding-bottom property
+
+
+
+
+ See the padding-bottom property definition in CSS2.
+
+ The padding bottom.
+
+
+
+ See the padding-left property definition in CSS2.
+
+
+ padding-left property
+
+
+
+
+ See the padding-left property definition in CSS2.
+
+ The padding left.
+
+
+
+ See the page property definition in CSS2.
+
+
+ page property
+
+
+
+
+ See the page property definition in CSS2.
+
+ The page value.
+
+
+
+ See the page-break-after property definition in CSS2.
+
+
+ page-break-after property
+
+
+
+
+ See the page-break-after property definition in CSS2.
+
+ The page break after.
+
+
+
+ See the page-break-before property definition in CSS2.
+
+
+ page-break-before property
+
+
+
+
+ See the page-break-before property definition in CSS2.
+
+ The page break before.
+
+
+
+ See the page-break-inside property definition in CSS2.
+
+
+ page-break-inside property
+
+
+
+
+ See the page-break-inside property definition in CSS2.
+
+ The page break inside.
+
+
+
+ See the pause property definition in CSS2.
+
+
+ pause property
+
+
+
+
+ See the pause property definition in CSS2.
+
+ The pause.
+
+
+
+ See the pause-after property definition in CSS2.
+
+
+ pause-after property
+
+
+
+
+ See the pause-after property definition in CSS2.
+
+ The pause after.
+
+
+
+ See the pause-before property definition in CSS2.
+
+
+ pause-before property
+
+
+
+
+ See the pause-before property definition in CSS2.
+
+ The pause before.
+
+
+
+ See the pitch property definition in CSS2.
+
+
+ pitch property
+
+
+
+
+ See the pitch property definition in CSS2.
+
+ The pitch.
+
+
+
+ See the pitch-range property definition in CSS2.
+
+
+ pitch-range property
+
+
+
+
+ See the pitch-range property definition in CSS2.
+
+ The pitch range.
+
+
+
+ See the play-during property definition in CSS2.
+
+
+ play-during property
+
+
+
+
+ See the play-during property definition in CSS2.
+
+ The play during.
+
+
+
+ See the position property definition in CSS2.
+
+
+ position property
+
+
+
+
+ See the position property definition in CSS2.
+
+ The position.
+
+
+
+ See the quotes property definition in CSS2.
+
+
+ quotes property
+
+
+
+
+ See the quotes property definition in CSS2.
+
+ The quotes.
+
+
+
+ See the richness property definition in CSS2.
+
+
+ richness property
+
+
+
+
+ See the richness property definition in CSS2.
+
+ The richness.
+
+
+
+ See the right property definition in CSS2.
+
+
+ right property
+
+
+
+
+ See the right property definition in CSS2.
+
+ The right.
+
+
+
+ See the size property definition in CSS2.
+
+
+ size property
+
+
+
+
+ See the size property definition in CSS2.
+
+ The size value.
+
+
+
+ See the speak property definition in CSS2.
+
+
+ speak property
+
+
+
+
+ See the speak property definition in CSS2.
+
+ The speak.
+
+
+
+ See the speak-header property definition in CSS2.
+
+
+ speak-header property
+
+
+
+
+ See the speak-header property definition in CSS2.
+
+ The speak header.
+
+
+
+ See the speak-numeral property definition in CSS2.
+
+
+ speak-numeral property
+
+
+
+
+ See the speak-numeral property definition in CSS2.
+
+ The speak numeral.
+
+
+
+ See the speak-punctuation property definition in CSS2.
+
+
+ speak-punctuation property
+
+
+
+
+ See the speak-punctuation property definition in CSS2.
+
+ The speak punctuation.
+
+
+
+ See the speech-rate property definition in CSS2.
+
+
+ speech-rate property
+
+
+
+
+ See the speech-rate property definition in CSS2.
+
+ The speech rate.
+
+
+
+ See the stress property definition in CSS2.
+
+
+ stress property
+
+
+
+
+ See the stress property definition in CSS2.
+
+ The stress.
+
+
+
+ See the table-layout property definition in CSS2.
+
+
+ table-layout property
+
+
+
+
+ See the table-layout property definition in CSS2.
+
+ The table layout.
+
+
+
+ See the text-align property definition in CSS2.
+
+
+ text-align property
+
+
+
+
+ See the text-align property definition in CSS2.
+
+ The text align.
+
+
+
+ See the text-decoration property definition in CSS2.
+
+
+ text-decoration property
+
+
+
+
+ See the text-decoration property definition in CSS2.
+
+ The text decoration.
+
+
+
+ See the text-indent property definition in CSS2.
+
+
+ text-indent property
+
+
+
+
+ See the text-indent property definition in CSS2.
+
+ The text indent.
+
+
+
+ See the text-shadow property definition in CSS2.
+
+
+ text-shadow property
+
+
+
+
+ See the text-shadow property definition in CSS2.
+
+ The text shadow.
+
+
+
+ See the text-transform property definition in CSS2.
+
+
+ text-transform property
+
+
+
+
+ See the text-transform property definition in CSS2.
+
+ The text transform.
+
+
+
+ See the top property definition in CSS2.
+
+
+ top property
+
+
+
+
+ See the top property definition in CSS2.
+
+ The top value.
+
+
+
+ See the unicode-bidi property definition in CSS2.
+
+
+ unicode-bidi property
+
+
+
+
+ See the unicode-bidi property definition in CSS2.
+
+ The unicode bidi.
+
+
+
+ See the vertical-align property definition in CSS2.
+
+
+ vertical-align property
+
+
+
+
+ See the vertical-align property definition in CSS2.
+
+ The vertical align.
+
+
+
+ See the visibility property definition in CSS2.
+
+
+ visibility property
+
+
+
+
+ See the visibility property definition in CSS2.
+
+ The visibility.
+
+
+
+ See the voice-family property definition in CSS2.
+
+
+ voice-family property
+
+
+
+
+ See the voice-family property definition in CSS2.
+
+ The voice family.
+
+
+
+ See the volume property definition in CSS2.
+
+
+ volume property
+
+
+
+
+ See the volume property definition in CSS2.
+
+ The volume.
+
+
+
+ See the white-space property definition in CSS2.
+
+
+ white-space property
+
+
+
+
+ See the white-space property definition in CSS2.
+
+ The white space.
+
+
+
+ See the widows property definition in CSS2.
+
+
+ widows property
+
+
+
+
+ See the widows property definition in CSS2.
+
+ The widows.
+
+
+
+ See the width property definition in CSS2.
+
+
+ width property
+
+
+
+
+ See the width property definition in CSS2.
+
+ The width.
+
+
+
+ See the word-spacing property definition in CSS2.
+
+
+ word-spacing property
+
+
+
+
+ See the word-spacing property definition in CSS2.
+
+ The word spacing.
+
+
+
+ See the z-index property definition in CSS2.
+
+
+ z-index property
+
+
+
+
+ See the z-index property definition in CSS2.
+
+ Index of the z.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Used to retrieve the value of a CSS property if it has been explicitly set within this declaration block.
+
+ Name of the property.
+
+ Returns property value
+
+
+
+
+ Used to retrieve the object representation of the value of a CSS property if it has been explicitly set within this declaration block. This method returns null if the property is a shorthand property. Shorthand property values can only be accessed and modified as strings, using the getPropertyValue and setProperty methods.
+
+ Name of the property.
+
+ Returns property value
+
+
+
+
+ Used to remove a CSS property if it has been explicitly set within this declaration block.
+
+ Name of the property.
+
+ Returns property value
+
+
+
+
+ Used to retrieve the priority of a CSS property (e.g. the "important" qualifier) if the property has been explicitly set in this declaration block.
+
+ Name of the property.
+
+ Returns property priority
+
+
+
+
+ Used to set a property value and priority within this declaration block.
+
+ Name of the property.
+ The value.
+ The priority.
+
+
+
+ Gets style declaration
+
+
+ The style declaration.
+
+
+
+
+ The parsable textual representation of the declaration block (excluding the surrounding curly braces). Setting this attribute will result in the parsing of the new value and resetting of all the properties in the declaration block including the removal or addition of properties.
+
+
+ The CSS text.
+
+
+
+
+ The number of properties that have been explicitly set in this declaration block. The range of valid indices is 0 to length-1 inclusive.
+
+
+
+
+ Gets the at the specified index.
+ The property index
+
+
+
+ The CSS rule that contains this declaration block or null if this CSSStyleDeclaration is not attached to a CSSRule.
+
+
+
+
+ The CssFontFaceRule interface represents a @font-face rule in a CSS style sheet. The @font-face rule is used to hold a set of font descriptions.
+
+
+
+
+ The CssFontFaceRule interface represents a @font-face rule in a CSS style sheet. The @font-face rule is used to hold a set of font descriptions.
+
+
+
+
+ The CSSRule interface is the abstract base interface for any type of CSS statement. This includes both rule sets and at-rules. An implementation is expected to preserve all rules specified in a CSS style sheet, even if the rule is not recognized by the parser. Unrecognized rules are represented using the interface.
+
+
+
+
+ The type of the rule, as defined above. The expectation is that binding-specific casting methods can be used to cast down from an instance of the CSSRule interface to the specific derived interface implied by the type.
+
+
+
+
+ The parsable textual representation of the rule. This reflects the current state of the rule and not its initial value.
+
+
+ The CSS text.
+
+
+
+
+ The style sheet that contains this rule.
+
+
+
+
+ If this rule is contained inside another rule (e.g. a style rule inside an @media block), this is the containing rule. If this rule is not nested inside any other rules, this returns null.
+
+
+
+
+ The declaration-block of this rule.
+
+
+
+
+ Gets the family.
+
+
+
+
+ Gets the SRC.
+
+
+
+
+ Gets the font style.
+
+
+
+
+ Gets the weight.
+
+
+
+
+ Gets the stretch.
+
+
+
+
+ Gets the variant.
+
+
+
+
+ Represents CSS constants.
+
+
+
+
+ The CSS mime-type string.
+
+
+
+
+ Represents CSS property names.
+
+
+
+
+ The align-content property
+
+
+
+
+ The align-items property
+
+
+
+
+ The alignment-adjust property
+
+
+
+
+ The alignment-baseline property
+
+
+
+
+ The align-self property
+
+
+
+
+ The animation property
+
+
+
+
+ The animation-delay property
+
+
+
+
+ The animation-direction property
+
+
+
+
+ The animation-duration property
+
+
+
+
+ The animation-fill-mode property
+
+
+
+
+ The animation-iteration-count property
+
+
+
+
+ The animation-name property
+
+
+
+
+ The animation-play-state property
+
+
+
+
+ The animation-timing-function property
+
+
+
+
+ The azimuth property
+
+
+
+
+ The backface-visibility property
+
+
+
+
+ The background property
+
+
+
+
+ The background-attachment property
+
+
+
+
+ The background-clip property
+
+
+
+
+ The background-color property
+
+
+
+
+ The background-image property
+
+
+
+
+ The background-origin property
+
+
+
+
+ The background-position property
+
+
+
+
+ The background-repeat property
+
+
+
+
+ The background-size property
+
+
+
+
+ The baseline-shift property
+
+
+
+
+ The bleed property
+
+
+
+
+ The bookmark-label property
+
+
+
+
+ The bookmark-level property
+
+
+
+
+ The bookmark-state property
+
+
+
+
+ The bookmark-target property
+
+
+
+
+ The border property
+
+
+
+
+ The border-bottom property
+
+
+
+
+ The border-bottom-color property
+
+
+
+
+ The border-bottom-left-radius property
+
+
+
+
+ The border-bottom-right-radius property
+
+
+
+
+ The border-bottom-style property
+
+
+
+
+ The border-bottom-width property
+
+
+
+
+ The border-collapse property
+
+
+
+
+ The border-color property
+
+
+
+
+ The border-image property
+
+
+
+
+ The border-image-outset property
+
+
+
+
+ The border-image-repeat property
+
+
+
+
+ The border-image-slice property
+
+
+
+
+ The border-image-source property
+
+
+
+
+ The border-image-width property
+
+
+
+
+ The border-left property
+
+
+
+
+ The border-left-color property
+
+
+
+
+ The border-left-style property
+
+
+
+
+ The border-left-width property
+
+
+
+
+ The border-radius property
+
+
+
+
+ The border-right property
+
+
+
+
+ The border-right-color property
+
+
+
+
+ The border-right-style property
+
+
+
+
+ The border-right-width property
+
+
+
+
+ The border-spacing property
+
+
+
+
+ The border-style property
+
+
+
+
+ The border-top property
+
+
+
+
+ The border-top-color property
+
+
+
+
+ The border-top-left-radius property
+
+
+
+
+ The border-top-right-radius property
+
+
+
+
+ The border-top-style property
+
+
+
+
+ The border-top-width property
+
+
+
+
+ The border-width property
+
+
+
+
+ The bottom property
+
+
+
+
+ The box-decoration-break property
+
+
+
+
+ The box-shadow property
+
+
+
+
+ The box-sizing property
+
+
+
+
+ The caption-side property
+
+
+
+
+ The clear property
+
+
+
+
+ The clip property
+
+
+
+
+ The color property
+
+
+
+
+ The column-count property
+
+
+
+
+ The column-fill property
+
+
+
+
+ The column-gap property
+
+
+
+
+ The column-rule property
+
+
+
+
+ The column-rule-color property
+
+
+
+
+ The column-rule-style property
+
+
+
+
+ The column-rule-width property
+
+
+
+
+ The columns property
+
+
+
+
+ The column-span property
+
+
+
+
+ The column-width property
+
+
+
+
+ The content property
+
+
+
+
+ The counter-increment property
+
+
+
+
+ The counter-reset property
+
+
+
+
+ The crop property
+
+
+
+
+ The cue property
+
+
+
+
+ The cue-after property
+
+
+
+
+ The cue-before property
+
+
+
+
+ The cursor property
+
+
+
+
+ The direction property
+
+
+
+
+ The display property
+
+
+
+
+ The dominant-baseline property
+
+
+
+
+ The drop-initial-after-adjust property
+
+
+
+
+ The drop-initial-after-align property
+
+
+
+
+ The drop-initial-before-adjust property
+
+
+
+
+ The drop-initial-before-align property
+
+
+
+
+ The drop-initial-size property
+
+
+
+
+ The drop-initial-value property
+
+
+
+
+ The elevation property
+
+
+
+
+ The empty-cells property
+
+
+
+
+ The fit property
+
+
+
+
+ The fit-position property
+
+
+
+
+ The flex property
+
+
+
+
+ The flex-basis property
+
+
+
+
+ The flex-direction property
+
+
+
+
+ The flex-flow property
+
+
+
+
+ The flex-grow property
+
+
+
+
+ The flex-shrink property
+
+
+
+
+ The flex-wrap property
+
+
+
+
+ The float property
+
+
+
+
+ The float-offset property
+
+
+
+
+ The font property
+
+
+
+
+ The font-family property
+
+
+
+
+ The font-language-override property
+
+
+
+
+ The font-size property
+
+
+
+
+ The font-size-adjust property
+
+
+
+
+ The font-stretch property
+
+
+
+
+ The font-style property
+
+
+
+
+ The font-variant property
+
+
+
+
+ The font-variant-caps property
+
+
+
+
+ The font-variant-east-asian property
+
+
+
+
+ The font-variant-ligatures property
+
+
+
+
+ The font-variant-numeric property
+
+
+
+
+ The font-variant-position property
+
+
+
+
+ The font-variant-alternates property
+
+
+
+
+ The font-weight property
+
+
+
+
+ The grid-cell property
+
+
+
+
+ The grid-column property
+
+
+
+
+ The grid-column-align property
+
+
+
+
+ The grid-columns property
+
+
+
+
+ The grid-column-sizing property
+
+
+
+
+ The grid-column-span property
+
+
+
+
+ The grid-flow property
+
+
+
+
+ The grid-row property
+
+
+
+
+ The grid-row-align property
+
+
+
+
+ The grid-rows property
+
+
+
+
+ The grid-row-sizing property
+
+
+
+
+ The grid-row-span property
+
+
+
+
+ The grid-template property
+
+
+
+
+ The hanging-punctuation property
+
+
+
+
+ The height property
+
+
+
+
+ The hyphens property
+
+
+
+
+ The icon property
+
+
+
+
+ The image-orientation property
+
+
+
+
+ The image-resolution property
+
+
+
+
+ The ime-mode property
+
+
+
+
+ The inline-box-align property
+
+
+
+
+ The justify-content property
+
+
+
+
+ The left property
+
+
+
+
+ The letter-spacing property
+
+
+
+
+ The line-break property
+
+
+
+
+ The line-height property
+
+
+
+
+ The line-stacking property
+
+
+
+
+ The line-stacking-ruby property
+
+
+
+
+ The line-stacking-shift property
+
+
+
+
+ The line-stacking-strategy property
+
+
+
+
+ The list-style property
+
+
+
+
+ The list-style-image property
+
+
+
+
+ The list-style-position property
+
+
+
+
+ The list-style-type property
+
+
+
+
+ The margin property
+
+
+
+
+ The margin-bottom property
+
+
+
+
+ The margin-left property
+
+
+
+
+ The margin-right property
+
+
+
+
+ The margin-top property
+
+
+
+
+ The marker-offset property
+
+
+
+
+ The marks property
+
+
+
+
+ The marquee-direction property
+
+
+
+
+ The marquee-loop property
+
+
+
+
+ The marquee-play-count property
+
+
+
+
+ The marquee-speed property
+
+
+
+
+ The marquee-style property
+
+
+
+
+ The max-height property
+
+
+
+
+ The max-width property
+
+
+
+
+ The min-height property
+
+
+
+
+ The min-width property
+
+
+
+
+ The move-to property
+
+
+
+
+ The nav-down property
+
+
+
+
+ The nav-index property
+
+
+
+
+ The nav-left property
+
+
+
+
+ The nav-right property
+
+
+
+
+ The nav-up property
+
+
+
+
+ The object-fit property
+
+
+
+
+ The object-position property
+
+
+
+
+ The opacity property
+
+
+
+
+ The order property
+
+
+
+
+ The orphans property
+
+
+
+
+ The outline property
+
+
+
+
+ The outline-color property
+
+
+
+
+ The outline-offset property
+
+
+
+
+ The outline-style property
+
+
+
+
+ The outline-width property
+
+
+
+
+ The overflow property
+
+
+
+
+ The overflow-style property
+
+
+
+
+ The overflow-wrap property
+
+
+
+
+ The overflow-x property
+
+
+
+
+ The overflow-y property
+
+
+
+
+ The padding property
+
+
+
+
+ The padding-bottom property
+
+
+
+
+ The padding-left property
+
+
+
+
+ The padding-right property
+
+
+
+
+ The padding-top property
+
+
+
+
+ The page property
+
+
+
+
+ The page-break-after property
+
+
+
+
+ The page-break-before property
+
+
+
+
+ The page-break-inside property
+
+
+
+
+ The page-policy property
+
+
+
+
+ The pause property
+
+
+
+
+ The pause-after property
+
+
+
+
+ The pause-before property
+
+
+
+
+ The perspective property
+
+
+
+
+ The perspective-origin property
+
+
+
+
+ The pitch property
+
+
+
+
+ The pitch-range property
+
+
+
+
+ The play-during property
+
+
+
+
+ The position property
+
+
+
+
+ The quotes property
+
+
+
+
+ The resize property
+
+
+
+
+ The rest property
+
+
+
+
+ The rest-after property
+
+
+
+
+ The rest-before property
+
+
+
+
+ The richness property
+
+
+
+
+ The right property
+
+
+
+
+ The rotation property
+
+
+
+
+ The rotation-point property
+
+
+
+
+ The ruby-align property
+
+
+
+
+ The ruby-overhang property
+
+
+
+
+ The ruby-position property
+
+
+
+
+ The ruby-span property
+
+
+
+
+ The size property
+
+
+
+
+ The speak property
+
+
+
+
+ The speak-as property
+
+
+
+
+ The speak-header property
+
+
+
+
+ The speak-numeral property
+
+
+
+
+ The speak-punctuation property
+
+
+
+
+ The speech-rate property
+
+
+
+
+ The stress property
+
+
+
+
+ The string-set property
+
+
+
+
+ The table-layout property
+
+
+
+
+ The tab-size property
+
+
+
+
+ The text-align property
+
+
+
+
+ The text-align-last property
+
+
+
+
+ The text-combine-upright property
+
+
+
+
+ The text-combine-mode property
+
+
+
+
+ The text-decoration property
+
+
+
+
+ The text-decoration-color property
+
+
+
+
+ The text-decoration-line property
+
+
+
+
+ The text-decoration-skip property
+
+
+
+
+ The text-decoration-style property
+
+
+
+
+ The text-emphasis property
+
+
+
+
+ The text-emphasis-color property
+
+
+
+
+ The text-emphasis-position property
+
+
+
+
+ The text-emphasis-style property
+
+
+
+
+ The text-height property
+
+
+
+
+ The text-indent property
+
+
+
+
+ The text-justify property
+
+
+
+
+ The text-orientation property
+
+
+
+
+ The text-overflow property
+
+
+
+
+ The text-shadow property
+
+
+
+
+ The text-space-collapse property
+
+
+
+
+ The text-transform property
+
+
+
+
+ The text-underline-position property
+
+
+
+
+ The text-wrap property
+
+
+
+
+ The top property
+
+
+
+
+ The transform property
+
+
+
+
+ The transform-origin property
+
+
+
+
+ The transform-style property
+
+
+
+
+ The transition property
+
+
+
+
+ The transition-delay property
+
+
+
+
+ The transition-duration property
+
+
+
+
+ The transition-property property
+
+
+
+
+ The transition-timing-function property
+
+
+
+
+ The unicode-bidi property
+
+
+
+
+ The vertical-align property
+
+
+
+
+ The visibility property
+
+
+
+
+ The voice-balance property
+
+
+
+
+ The voice-duration property
+
+
+
+
+ The voice-family property
+
+
+
+
+ The voice-pitch property
+
+
+
+
+ The voice-range property
+
+
+
+
+ The voice-rate property
+
+
+
+
+ The voice-stress property
+
+
+
+
+ The voice-volume property
+
+
+
+
+ The volume property
+
+
+
+
+ The white-space property
+
+
+
+
+ The widows property
+
+
+
+
+ The width property
+
+
+
+
+ The word-break property
+
+
+
+
+ The word-spacing property
+
+
+
+
+ The writing-mode property
+
+
+
+
+ The z-index property
+
+
+
+
+ The word-wrap property
+
+
+
+
+ The break-after property
+
+
+
+
+ The break-before property
+
+
+
+
+ The break-inside property
+
+
+
+
+ The target-position property
+
+
+
+
+ The target-new property
+
+
+
+
+ The target-name property
+
+
+
+
+ The target property
+
+
+
+
+ The src property
+
+
+
+
+ The zoom property
+
+
+
+
+ Represents types of the pseudo elements.
+
+
+
+
+ The 'before' pseudo elements
+
+
+
+
+ The 'after' pseudo elements
+
+
+
+
+ An integer indicating which type of the css rule this is.
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ The rule is a .
+
+
+
+
+ This represents a factory that allows the DOM user to create a CssStyleSheet.
+
+
+
+
+ Creates a new CssStyleSheet.
+
+ The title.
+ The media.
+ The instance.
+
+
+
+ The CssPrimitiveValue interface represents a single CSS value. This interface may be used to determine the value of a specific style property currently set in a block or to set a specific style property explicitly within the block. An instance of this interface might be obtained from the getPropertyCssValue method of the CSSStyleDeclaration interface. A CssPrimitiveValue object only occurs in a context of a CSS property.
+
+
+
+
+ Represents a simple or a complex value. A CssValue object only occurs in a context of a CSS property.
+
+
+
+
+ The value is inherited and the CssText contains "inherit".
+
+
+
+
+ The value is a primitive value and an instance of the CssPrimitiveValue interface can be obtained by using binding-specific casting methods on this instance of the CssValue interface.
+
+
+
+
+ The value is a CssValue list and an instance of the CssValueList interface can be obtained by using binding-specific casting methods on this instance of the CssValue interface.
+
+
+
+
+ The value is a custom value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Determines whether the specified object is equal to this instance.
+
+ The object to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Return the hash code
+
+ The hash code
+
+
+
+ A string representation of the current value.
+
+
+ The CSS text.
+
+
+
+
+ A code defining the type of the value.
+
+
+ The type of the CSS value.
+
+
+
+
+ The value is not a recognized CSS2 value. The value can only be obtained by using the CssText attribute.
+
+
+
+
+ The value is a simple number. The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a percentage. The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (ems). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (exs). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (px). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (cm). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (mm). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (in). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (pt). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (pc). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is an angle (deg). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is an angle (rad). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is an angle (grad). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a time (ms). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a time (s). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a frequency (Hz). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a frequency (kHz). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a number with an unknown dimension. The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (rem). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a length (ch). The value can be obtained by using the getFloatValue method.
+
+
+
+
+ The value is a STRING. The value can be obtained by using the getStringValue method.
+
+
+
+
+ The value is a URI. The value can be obtained by using the getStringValue method.
+
+
+
+
+ The value is an identifier. The value can be obtained by using the getStringValue method.
+
+
+
+
+ The value is a attribute function. The value can be obtained by using the getStringValue method.
+
+
+
+
+ The value is a counter or counters function. The value can be obtained by using the GetCounterValue method.
+
+
+
+
+ The value is a rect function. The value can be obtained by using the GetRectValue method.
+
+
+
+
+ The value is a RGB color. The value can be obtained by using the GetRgbColorValue method.
+
+
+
+
+ The value is a dots per inch (dpi).
+
+
+
+
+ The value is a dots per centimeter (dpcm).
+
+
+
+
+ The value is a dots per ‘px’ unit (dppx).
+
+
+
+
+ The value is a pair of RGB color and length.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the unit.
+
+
+
+ A method to set the float value with a specified unit. If the property attached with this value can not accept the specified unit or the float value, the value will be unchanged and a DomException will be raised.
+
+ Type of the unit.
+ The float value.
+
+
+
+ This method is used to get a float value in a specified unit. If this CSS value doesn't contain a float value or can't be converted into the specified unit, a DomException is raised.
+
+ Type of the unit.
+ Returns value
+
+
+
+ A method to set the int value with a specified unit. If the property attached with this value can not accept the specified unit or the int value, the value will be unchanged and a DomException will be raised.
+
+ Type of the unit.
+ The int value.
+
+
+
+ This method is used to get an int value in a specified unit. If this CSS value doesn't contain an int value or can't be converted into the specified unit, a DomException is raised.
+
+ Type of the unit.
+ Returns value
+
+
+
+ A method to set the string value with the specified unit. If the property attached to this value can't accept the specified unit or the string value, the value will be unchanged and a DomException will be raised.
+
+ Type of the string.
+ The string value.
+
+
+
+ This method is used to get the string value. If the CSS value doesn't contain a string value, a DomException is raised.
+
+ Returns value
+
+
+
+ This method is used to get the Counter value. If this CSS value doesn't contain a counter value, a DomException is raised. Modification to the corresponding style property can be achieved using the Counter interface.
+
+ Returns value
+
+
+
+ This method is used to get the Rect value. If this CSS value doesn't contain a rect value, a DomException is raised. Modification to the corresponding style property can be achieved using the Rect interface.
+
+ Returns value
+
+
+
+ This method is used to get the RGB color. If this CSS value doesn't contain a RGB color value, a DomException is raised. Modification to the corresponding style property can be achieved using the RGBColor interface.
+
+ Returns value
+
+
+
+ This method is used to get the ColorStop value. If this CSS value doesn't contain a ColorStop value, a DomException is raised. Modification to the corresponding style property can be achieved using the ColorStop interface.
+
+ Returns value
+
+
+
+ The type of the value as defined by the constants specified above.
+
+
+ The type of the primitive.
+
+
+
+
+ The interface provides the abstraction of an ordered collection of CSS values.
+
+
+
+
+ The number of CssValues in the list.
+
+
+
+
+ Gets the at the specified index.
+ The index.
+
+
+
+ A simple stream of integers. This is useful when all we care about is the char
+ or token type sequence (such as for interpretation).
+
+
+
+
+ Get int at current input pointer + i ahead (where i=1 is next int)
+ Negative indexes are allowed. LA(-1) is previous token (token just matched).
+ LA(-i) where i is before first token should yield -1, invalid char or EOF.
+
+
+
+ Tell the stream to start buffering if it hasn't already.
+
+ Executing Rewind(Mark()) on a stream should not affect the input position.
+ The Lexer tracks line/col info as well as input index so its markers are
+ not pure input indexes. Same for tree node streams. */
+
+ Return a marker that can be passed to
+ to return to the current position.
+ This could be the current input position, a value return from
+ , or some other marker.
+
+
+
+ Return the current input symbol index 0..n where n indicates the
+ last symbol has been read. The index is the symbol about to be
+ read not the most recently read symbol.
+
+
+
+
+ Resets the stream so that the next call to
+ would return marker.
+
+
+ The marker will usually be but
+ it doesn't have to be. It's just a marker to indicate what
+ state the stream was in. This is essentially calling
+ and .
+ If there are other markers created after the specified marker,
+ this routine must unroll them like a stack. Assumes the state the
+ stream was in when this marker was created.
+
+
+
+
+ Rewind to the input position of the last marker.
+
+
+ Used currently only after a cyclic DFA and just before starting
+ a sem/syn predicate to get the input position back to the start
+ of the decision. Do not "pop" the marker off the state. Mark(i)
+ and Rewind(i) should balance still. It is like invoking
+ Rewind(last marker) but it should not "pop" the marker off.
+ It's like Seek(last marker's input position).
+
+
+
+
+ You may want to commit to a backtrack but don't want to force the
+ stream to keep bookkeeping objects around for a marker that is
+ no longer necessary. This will have the same behavior as
+ except it releases resources without
+ the backward seek.
+
+
+ This must throw away resources for all markers back to the marker
+ argument. So if you're nested 5 levels of Mark(), and then Release(2)
+ you have to release resources for depths 2..5.
+
+
+
+
+ Set the input cursor to the position indicated by index. This is
+ normally used to seek ahead in the input stream.
+
+
+ No buffering is required to do this unless you know your stream
+ will use seek to move backwards such as when backtracking.
+
+ This is different from rewind in its multi-directional requirement
+ and in that its argument is strictly an input cursor (index).
+
+ For char streams, seeking forward must update the stream state such
+ as line number. For seeking backwards, you will be presumably
+ backtracking using the
+ /
+ mechanism that restores state and so this method does not need to
+ update state when seeking backwards.
+
+ Currently, this method is only used for efficient backtracking using
+ memoization, but in the future it may be used for incremental parsing.
+
+ The index is 0..n-1. A seek to position i means that LA(1) will return
+ the ith symbol. So, seeking to 0 means LA(1) will return the first
+ element in the stream.
+
+
+
+ Returns the size of the entire stream.
+
+ Only makes sense for streams that buffer everything up probably,
+ but might be useful to display the entire stream or for testing.
+ This value includes a single EOF.
+
+
+
+
+ Where are you getting symbols from? Normally, implementations will
+ pass the buck all the way to the lexer who can ask its input stream
+ for the file name or whatever.
+
+
+
+ Base class for all exceptions thrown during AST rewrite construction.
+
+ This signifies a case where the cardinality of two or more elements
+ in a subrule are different: (ID INT)+ where |ID|!=|INT|
+
+
+
+
+ Returns the line at which the error occurred (for lexers)
+
+
+
+ The line number on which this token was matched; line=1..n
+
+
+
+ The index of the first character relative to the beginning of the line 0..n-1
+
+
+
+
+ An index from 0..n-1 of the token object in the input stream
+
+
+ This must be valid in order to use the ANTLRWorks debugger.
+
+
+
+ The text of the token
+
+ When setting the text, it might be a NOP such as for the CommonToken,
+ which doesn't have string pointers, just indexes into a char buffer.
+
+
+
+ The root of the ANTLR exception hierarchy.
+
+ To avoid English-only error messages and to generally make things
+ as flexible as possible, these exceptions are not created with strings,
+ but rather the information necessary to generate an error. Then
+ the various reporting methods in Parser and Lexer can be overridden
+ to generate a localized error message. For example, MismatchedToken
+ exceptions are built with the expected token type.
+ So, don't expect getMessage() to return anything.
+
+ You can access the stack trace, which means that you can compute the
+ complete trace of rules from the start symbol. This gives you considerable
+ context information with which to generate useful error messages.
+
+ ANTLR generates code that throws exceptions upon recognition error and
+ also generates code to catch these exceptions in each rule. If you
+ want to quit upon first error, you can turn off the automatic error
+ handling mechanism using rulecatch action, but you still need to
+ override methods mismatch and recoverFromMismatchSet.
+
+ In general, the recognition exceptions can track where in a grammar a
+ problem occurred and/or what was the expected input. While the parser
+ knows its state (such as current input symbol and line info) that
+ state can change before the exception is reported so current token index
+ is computed and stored at exception time. From this info, you can
+ perhaps print an entire line of input not just a single token, for example.
+ Better to just say the recognizer had a problem and then let the parser
+ figure out a fancy report.
+
+
+
+ What input stream did the error occur in?
+
+
+
+ What is index of token/char were we looking at when the error occurred?
+
+
+
+
+ The current Token when an error occurred. Since not all streams
+ can retrieve the ith Token, we have to track the Token object.
+
+
+
+ [Tree parser] Node with the problem.
+
+
+ The current char when an error occurred. For lexers.
+
+
+ Track the line at which the error occurred in case this is
+ generated from a lexer. We need to track this since the
+ unexpected char doesn't carry the line info.
+
+
+
+
+ Returns the token type or char of the unexpected input element
+
+
+
+
+ The CssCharsetRule interface represents a @charset rule in a CSS style sheet.
+ The value of the encoding attribute does not affect the encoding of text data in the DOM objects; this encoding is always UTF-16. After a stylesheet is loaded, the value of the encoding attribute is the value found in the @charset rule. If there was no @charset in the original document, then no CssCharsetRule is created.
+ The value of the encoding attribute may also be used as a hint for the encoding used on serialization of the style sheet.
+
+
+
+
+ The encoding information used in this @charset rule.
+
+
+ The encoding.
+
+
+
+
+ Represents default CSS context.
+
+
+
+
+ Provides contextual information to the CssEngine
+
+
+
+
+ Gets the default font family.
+
+
+ The default font family.
+
+
+
+
+ Gets the resource loading callback.
+
+
+ The resource loading callback.
+
+
+
+
+ Gets the language.
+
+
+ The language.
+
+
+
+
+ Gets the context settings.
+
+
+ The context settings.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource loading.
+ The settings.
+
+
+
+ Initializes a new instance of the class.
+
+ The resource loading.
+
+
+
+ Gets the default font family.
+
+
+
+
+
+ Gets the resource loading callback.
+
+
+
+
+ Gets the language.
+
+
+
+
+ Gets the settings.
+
+
+ The settings.
+
+
+
+
+ Represents common interface for automation counters implementation.
+
+
+
+
+ Gets the specified counter.
+
+ The counter.
+ The pseudo element.
+ The counter value
+
+
+
+ The @counter-style rule allows authors to define a custom counter style.
+
+
+
+
+ Gets the name.
+
+
+
+
+ Gets the type of the counter.
+
+
+ The type of the counter.
+
+
+
+
+ Gets the glyphs.
+
+
+
+
+ Gets the prefix.
+
+
+
+
+ Gets the suffix.
+
+
+
+
+ Gets the fallback.
+
+
+
+
+ This interface represents CSS engine.
+
+
+
+
+ Adds the CSS engine listener.
+
+ The listener.
+
+
+
+ Removes the CSS engine listener.
+
+ The listener.
+
+
+
+ Parses the style sheet.
+
+ The content.
+
+ Returns
+
+
+
+ Parses the style sheet.
+
+ The owner node.
+
+ Returns
+
+
+
+ Parses the style sheet.
+
+ The stream.
+
+ Returns
+
+
+
+ Parses the style sheet from file.
+
+ The file path.
+ The owner node.
+
+ Returns
+
+
+
+ Parses the inline style.
+
+ The content.
+ The owner node.
+
+ Returns
+
+
+
+ Creates the override style.
+
+ The owner node.
+
+ Returns
+
+
+
+ Applies the styles to the document.
+
+ The document.
+
+
+
+ Applies the styles to the element.
+
+ The element.
+
+
+
+ Creates the counters.
+
+ The element.
+
+ The CSS counters
+
+
+
+
+ Sets the user agent style sheet.
+
+ The style sheet.
+
+
+
+ Sets the user style sheet.
+
+ The style sheet.
+
+
+
+ Returns styles for document pages
+
+
+ Dictionary, where Key - Pseudo Element and Value - StyleMap for this element
+
+
+
+
+ Returns Property index by PropertyType enum
+
+ CssPropertyType enum
+
+ Returns property index which corresponds to property Type (CssPropertyType enum)
+
+
+
+
+ Checks if Pseudo Element is defined in StyleSheet
+
+ PseudoElementType enum
+
+ True if element is defined
+
+
+
+
+ Gets the document.
+
+
+ The document.
+
+
+
+
+ Gets the context.
+
+
+ The context.
+
+
+
+
+ Gets or sets the error handler.
+
+
+ The error handler.
+
+
+
+
+ Gets or sets the document handler.
+
+
+ The document handler.
+
+
+
+
+ Gets the counter styles.
+
+
+ The counter styles.
+
+
+
+
+ Represents a CSS event fired by a CssEngine.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The CSS engine.
+ The element.
+
+
+
+ Gets the CSS engine.
+
+
+ The CSS engine.
+
+
+
+
+ Gets the target element.
+
+
+ The element.
+
+
+
+
+ Represents CSS engine factory.
+
+
+
+
+ Creates the specified document.
+
+ The document.
+ The context.
+
+ Returns instance.
+
+
+
+
+ The CssImportRule interface represents a @import rule within a CSS style sheet. The @import rule is used to import style rules from other style sheets.
+
+
+
+
+ The location of the style sheet to be imported. The attribute will not contain the "url(...)" specifier around the URI.
+
+
+
+
+ A list of media types for which this style sheet may be used.
+
+
+
+
+ The style sheet referred to by this rule, if it has been loaded. The value of this attribute is null if the style sheet has not yet been loaded or if it will not be loaded (e.g. if the style sheet is for a media type not supported by the user agent).
+
+
+
+
+ The CssMediaRule interface represents a @media rule in a CSS style sheet. A @media rule can be used to delimit style rules for specific media types.
+
+
+
+
+ Used to insert a new rule into the media block.
+
+ The media rule.
+ The index.
+ The inserted index.
+
+
+
+ Used to delete a rule from the media block.
+
+ The index.
+
+
+
+ A list of media types for this rule.
+
+
+
+
+ A list of all CSS rules contained within the media block.
+
+
+
+
+ The CssPageRule interface represents a @page rule within a CSS style sheet. The @page rule is used to specify the dimensions, orientation, margins, etc. of a page box for paged media.
+
+
+
+
+ The parsable textual representation of the page selector for the rule.
+
+
+ The selector text.
+
+
+
+
+ The declaration-block of this rule.
+
+
+
+
+ The CssRuleList interface provides the abstraction of an ordered collection of CSS rules.
+
+
+
+
+ The number of CssRules in the list. The range of valid child rule indices is 0 to length-1 inclusive.
+
+
+
+
+ Used to retrieve a CSS rule by ordinal index. The order in this collection represents the order of the rules in the CSS style sheet. If index is greater than or equal to the number of rules in the list, this returns null.
+ The rule index
+
+
+
+ Represents CSS style declaration factory
+
+
+
+
+ Creates the based on based on specified style map.
+
+ The style map.
+ The engine.
+
+ Rerurns
+
+
+
+ The CssStyleRule interface represents a single rule set in a CSS style sheet.
+
+
+
+
+ The textual representation of the selector for the rule set. The implementation may have stripped out insignificant whitespace while parsing the selector.
+
+
+
+
+ The declaration-block of this rule set.
+
+
+
+
+ The CssStyleSheet interface is a concrete interface used to represent a CSS style sheet i.e., a style sheet whose content type is "text/css".
+
+
+
+
+ The StyleSheet interface is the abstract base interface for any type of style sheet. It represents a single style sheet associated with a structured document.
+
+
+
+
+ This specifies the style sheet language for this style sheet. The style sheet language is specified as a content type (e.g. "text/css").
+
+
+
+
+ false if the style sheet is applied to the document. true if it is not. Modifying this attribute may cause a new resolution of style for the document. A stylesheet only applies if both an appropriate medium definition is present and the disabled attribute is false. So, if the media doesn't apply to the current user agent, the disabled attribute is ignored.
+
+
+ true if disabled; otherwise, false.
+
+
+
+
+ The node that associates this style sheet with the document. For HTML, this may be the corresponding Link or STYLE element. For XML, it may be the linking processing instruction. For style sheets that are included by other style sheets, the value of this attribute is null.
+
+
+
+
+ For style sheet languages that support the concept of style sheet inclusion, this attribute represents the including style sheet, if one exists. If the style sheet is a top-level style sheet, or the style sheet language does not support inclusion, the value of this attribute is null.
+
+
+
+
+ If the style sheet is a linked style sheet, the value of its attribute is its location. For inline style sheets, the value of this attribute is null.
+
+
+
+
+ The advisory title.
+
+
+
+
+ The intended destination media for style information.
+
+
+
+
+ Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.
+
+ The style rule.
+ The rule index.
+ The inserted index
+
+
+
+ Used to delete a rule from the style sheet.
+
+ The index.
+
+
+
+ If this style sheet comes from an @import rule, the ownerRule attribute will contain the CssImportRule. In that case, the ownerNode attribute in the StyleSheet interface will be null. If the style sheet comes from an element or a processing instruction, the ownerRule attribute will be null and the ownerNode attribute will contain the Node.
+
+
+
+
+ The list of all CSS rules contained within the style sheet. This includes both rule sets and at-rules.
+
+
+
+
+ The CssUnknownRule interface represents an at-rule not supported by this user agent.
+
+
+
+
+ This interface must be implemented in order to be notified of CSS events.
+
+
+
+
+ Called when [properties changed].
+
+ The engine event.
+
+
+
+ The MediaList interface provides the abstraction of an ordered collection of media, without defining or constraining how this collection is implemented. An empty list is the same as a list that contains the medium "all".
+
+
+
+
+ Deletes the medium indicated by oldMedium from the list.
+
+ The old medium.
+
+
+
+ Adds the medium newMedium to the end of the list. If the newMedium is already used, it is first removed.
+
+ The new medium.
+
+
+
+ The parsable textual representation of the media list. This is a comma-separated list of media.
+
+
+
+
+ The number of media in the list. The range of valid media is 0 to length-1 inclusive.
+
+
+
+
+ Returns the indexth in the list. If index is greater than or equal to the number of media in the list, this returns null.
+ The media index.
+
+
+
+ Represents base interface for implementation CSS media Expression
+
+
+
+
+ Determines whether the specified device is satisfied.
+
+ The device.
+
+ true if the specified device is satisfied; otherwise, false.
+
+
+
+
+ Gets the text.
+
+
+
+
+ Represents base interface for CSS selector.
+
+
+
+
+ Determines whether the specified element match the selector.
+
+ The element.
+ The pseudo element.
+
+ true if the specified element match the selector; otherwise, false.
+
+
+
+
+ Gets the type of the selector.
+
+
+ The type of the selector.
+
+
+
+
+ The textual representation of the selector.
+
+
+
+
+ Returns the specificity of this selector.
+
+
+
+
+ This class represents an objects which contains property/value mappings.
+
+
+
+
+ Gets the CSS value at the given index, null if unspecified.
+
+ The property index.
+ Returns CSS value.
+
+
+
+ Sets the CSS value to the specified property index.
+
+ The property index.
+ The value.
+
+
+
+ Determines whether the specified property is important.
+
+ The property index.
+
+ true if the specified i is important; otherwise, false.
+
+
+
+
+ Sets the important of a property value.
+
+ The property index.
+ if set to true [value].
+
+
+
+ Determines whether the specified property is computed.
+
+ The property index.
+
+ true if the specified i is computed; otherwise, false.
+
+
+
+
+ Sets computed flag of a property value.
+
+ The property index.
+ if set to true sets computed flag.
+
+
+
+ Determines whether the specified property value was inherited from it's parent.
+
+
+ The property index.
+
+ true if the specified i is inherited; otherwise, false.
+
+
+
+
+ Sets inherited flag of a property value.
+
+ The property index.
+ if set to true sets inherited flag.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ This interface must be implemented by the DOM document which needs CSS support.
+
+
+
+
+ This interface represents a document with a CSS view.
+
+
+
+
+ The DocumentStyle interface provides a mechanism by which the style sheets embedded in a document can be retrieved. The expectation is that an instance of the DocumentStyle interface can be obtained by using binding-specific casting methods on an instance of the Document interface.
+
+
+
+
+ A list containing all the style sheets explicitly linked into or embedded in a document. For HTML documents, this includes external style sheets, included via the HTML Link element, and inline STYLE elements.
+
+
+
+
+ This method is used to retrieve the override style declaration for a specified element and a specified pseudo-element.
+
+ The element whose style is to be modified. This parameter cannot be null.
+ The pseudo-element or null if none.
+ The override style declaration
+
+
+
+ The CssUnknownRule interface represents an at-rule not supported by this user agent.
+
+
+
+
+ The method provides a read only access to the computed values of an element
+
+ The element.
+ The pseudo element.
+ The computed style
+
+
+
+ Returns the computed style of the document page.
+
+ The pseudo element.
+ The computed style.
+
+
+
+ Sets the computed style for the document page.
+
+ The pseudo element.
+ The style map.
+
+
+
+ Sets the user agent style sheet.
+
+ The style sheet.
+
+
+
+ Sets the user style sheet.
+
+ The style sheet.
+
+
+
+ Gets the CSS engine.
+
+
+
+
+ This interface must be implemented by the DOM elements which needs CSS support.
+
+
+
+
+ Inline style information attached to elements is exposed through the style attribute. This represents the contents of the STYLE attribute for HTML elements (or elements in other schemas or DTDs which use the STYLE attribute in the same way).
+
+
+
+
+ The style attribute.
+
+
+
+
+ Returns the computed style of this element/pseudo-element.
+
+ The pseudo element.
+ The computed style.
+
+
+
+ Sets the computed style of this element/pseudo-element.
+
+ The pseudo element.
+ The style map.
+
+
+
+ The getOverrideStyle method provides a mechanism through which a DOM author could effect immediate change to the style of an element without modifying the explicitly linked style sheets of a document or the inline style of elements in the style sheets.
+ This style sheet comes after the author style sheet in the cascade algorithm and is called override style sheet.
+ The override style sheet takes precedence over author style sheets.
+ An "!important" declaration still takes precedence over a normal declaration.
+ Override, author, and user style sheets all may contain "!important" declarations.
+ User "!important" rules take precedence over both override and author "!important" rules, and override "!important" rules take precedence over author "!important" rules
+
+ The overrided style.
+
+
+
+ Gets the counters.
+
+
+
+
+ Gets adapted style object. Temporary is used for backward compatibility.
+
+
+ The style declaration internal.
+
+
+
+
+ This interface must be implemented by the DOM elements which is represented CSS style-node.
+
+
+
+
+ Gets the CSS StyleSheet.
+
+
+
+
+ This interface allows the DOM user to create a CssStyleSheet outside the context of a document. There is no way to associate the new CssStyleSheet with a document in DOM Level 2.
+
+
+
+
+ Creates a new CssStyleSheet.
+
+ The title.
+ The media.
+ The instance.
+
+
+
+ The LinkStyle interface provides a mechanism by which a style sheet can be retrieved from the node responsible for linking it into a document. An instance of the LinkStyle interface can be obtained using binding-specific casting methods on an instance of a linking node (HTMLLinkElement, HTMLStyleElement or ProcessingInstruction in DOM Level 2).
+
+
+
+
+ The style sheet.
+
+
+
+
+ Represents interface for resource loading callback operation.
+
+
+
+
+ Loads the resource.
+
+ The sender object.
+ The instance containing the event data.
+ The
+
+
+
+ The RGBColor interface is used to represent any RGB color value. This interface reflects the values in the underlying style property.
+
+
+
+
+ This attribute is used for the red value of the RGB color.
+
+ Red value of the RGB color
+
+
+
+ This attribute is used for the green value of the RGB color.
+
+ Green value of the RGB color
+
+
+
+ This attribute is used for the blue value of the RGB color.
+
+ Blue value of the RGB color
+
+
+
+ The StyleSheetList interface provides the abstraction of an ordered collection of style sheets.
+
+
+
+
+ Add new stylesheet to collection.
+
+ StyleSheet. Cannot be null.
+
+
+
+ The number of StyleSheets in the list. The range of valid child stylesheet indices is 0 to length-1 inclusive.
+
+
+
+
+ Used to retrieve a style sheet by ordinal index. If index is greater than or equal to the number of style sheets in the list, this returns null.
+ The style sheet index
+
+
+
+ Represent CSS counter
+
+
+
+
+ Gets the identifier.
+
+
+
+
+ Gets the value.
+
+
+
+
+ Represents counter manager
+
+
+
+
+ Determines whether [contains] [the specified key].
+
+ The counter key.
+
+ true if [contains] [the specified key]; otherwise, false.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Gets the with the specified key.
+
+ The counter key.
+ The .
+
+
+
+ Represents CounterStyle object
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the style.
+
+
+
+ Gets the name of the style.
+
+
+ The name of the style.
+
+
+
+
+ Gets or sets the type.
+
+
+ The type.
+
+
+
+
+ Gets or sets the first glyph value.
+
+
+ The first glyph value.
+
+
+
+
+ Gets or sets the glyphs.
+
+
+ The glyphs.
+
+
+
+
+ Gets or sets the suffix.
+
+
+ The suffix.
+
+
+
+
+ Gets or sets the prefix.
+
+
+ The prefix.
+
+
+
+
+ Gets or sets the range from.
+
+
+ The range from.
+
+
+
+
+ Gets or sets the range to.
+
+
+ The range to.
+
+
+
+
+ Gets the additive glyphs.
+
+
+
+
+ Gets or sets the fallback.
+
+
+ The fallback.
+
+
+
+
+ Gets the converter.
+
+
+
+
+ Gets the fallback converter.
+
+
+
+
+ Represents enumeration of the counter styles
+
+
+
+
+
+ Repeating style
+
+
+
+
+ Numeric style
+
+
+
+
+ Alphabetic style
+
+
+
+
+ Symbolic style
+
+
+
+
+ Additive style
+
+
+
+
+ NonRepeating style
+
+
+
+
+ Override style
+
+
+
+
+ Represents additive tuple
+
+
+
+
+ Initializes a new instance of the class.
+
+ The weight.
+ The glyph.
+
+
+
+ Gets the weight.
+
+
+
+
+ Gets the glyph.
+
+
+
+
+ Represents counter converter
+
+
+
+
+ Initializes a new instance of the class.
+
+ The style.
+
+
+
+ Converts the specified value.
+
+ The value.
+ Returns string representation
+
+
+
+ Creates the specified style.
+
+ The style.
+ Returns counter converter
+
+
+
+ Gets the counter style.
+
+
+
+
+ Provide access to CSS counters
+
+
+
+
+ Gets the with the specified name.
+ The counter name.
+
+
+
+ Represents CSS Model.
+
+
+
+
+ Represents abstract CSS Model adapter.
+
+
+
+
+ Determines whether [is property supported] [the specified property].
+
+ The property.
+ The element.
+
+ true if [is property supported] [the specified property]; otherwise, false.
+
+
+
+
+ Creates new instance of the CSS Model.
+
+ The element.
+
+ The computed CSS model.
+
+
+
+
+ Determines whether [contains] [the specified type].
+
+ The property type.
+
+ true if [contains] [the specified type]; otherwise, false.
+
+
+
+
+ Gets the computed properties.
+
+
+ Returns the .
+
+
+
+
+ Gets the first line pseudo-function.
+
+
+ The first line.
+
+
+
+
+ Gets the first letter pseudo-function.
+
+
+ The first letter.
+
+
+
+
+ Gets or sets quote index counter.
+
+
+ The counter value.
+
+
+
+
+ Gets the before pseudo-function.
+
+
+ The before.
+
+
+
+
+ Gets the after pseudo-function.
+
+
+ The after pseudo-function..
+
+
+
+
+ Gets the link pseudo-class.
+
+
+ The link pseudo-class..
+
+
+
+
+ Gets the target pseudo-class.
+
+
+ The target pseudo-class..
+
+
+
+
+ Gets the visited pseudo-class.
+
+
+ The visited pseudo-class..
+
+
+
+
+ Gets the active pseudo-class.
+
+
+ The active pseudo-class..
+
+
+
+
+ Gets the default pseudo-class.
+
+
+ The default pseudo-class..
+
+
+
+
+ Gets the selection pseudo-element.
+
+
+ The selection pseudo-element..
+
+
+
+
+ Gets the marker pseudo-element.
+
+
+ The marker pseudo-element..
+
+
+
+
+ Gets the animation.
+
+
+ The animation.
+
+
+
+
+ Gets the align-content.
+
+
+ The content of the align.
+
+
+
+
+ Gets the alignment-adjust.
+
+
+ The alignment adjust.
+
+
+
+
+ Gets the alignment-baseline.
+
+
+ The alignment baseline.
+
+
+
+
+ Gets the align-items.
+
+
+ The align items.
+
+
+
+
+ Gets the align-self.
+
+
+ The align self.
+
+
+
+
+ Gets the azimuth property.
+
+
+ The azimuth.
+
+
+
+
+ Gets the background property.
+
+
+ The background.
+
+
+
+
+ Gets the baseline-shift.
+
+
+ The baseline shift.
+
+
+
+
+ Gets the backface-visibility.
+
+
+ The backface visibility.
+
+
+
+
+ Gets the border property.
+
+
+ The border.
+
+
+
+
+ Gets the bookmar.
+
+
+ The bookmark.
+
+
+
+
+ Gets the bottom property.
+
+
+ The bottom.
+
+
+
+
+ Gets the caption side property.
+
+
+ The caption side.
+
+
+
+
+ Gets the clear property.
+
+
+ The clear.
+
+
+
+
+ Gets the clip property.
+
+
+ The clip.
+
+
+
+
+ Gets the crop.
+
+
+ The crop.
+
+
+
+
+ Gets the color property.
+
+
+ The color.
+
+
+
+
+ Gets the content property.
+
+
+ The content.
+
+
+
+
+ Gets the column.
+
+
+ The column.
+
+
+
+
+ Gets the cue after property.
+
+
+ The cue after.
+
+
+
+
+ Gets the cue before property.
+
+
+ The cue before.
+
+
+
+
+ Gets the cursor property.
+
+
+ The cursor.
+
+
+
+
+ Gets the box-shadow.
+
+
+ The box shadow.
+
+
+
+
+ Gets the box-sizing.
+
+
+ The box sizing.
+
+
+
+
+ Gets the break after property.
+
+
+ The break after.
+
+
+
+
+ Gets the break-before property.
+
+
+ The break before.
+
+
+
+
+ Gets the break-inside property.
+
+
+ The break inside.
+
+
+
+
+ Gets the direction property.
+
+
+ The direction.
+
+
+
+
+ Gets the display property.
+
+
+ The display.
+
+
+
+
+ Gets the dominant-baseline.
+
+
+ The dominant baseline.
+
+
+
+
+ Gets the drop-initial.
+
+
+ The drop initial.
+
+
+
+
+ Gets the icon.
+
+
+ The icon.
+
+
+
+
+ Gets the image-orientation.
+
+
+ The image orientation.
+
+
+
+
+ Gets the image-resolution.
+
+
+ The image resolution.
+
+
+
+
+ Gets the IME mode.
+
+
+ The IME mode.
+
+
+
+
+ Gets the inline box align.
+
+
+ The inline box align.
+
+
+
+
+ Gets the elevation property.
+
+
+ The elevation.
+
+
+
+
+ Gets the empty cells property.
+
+
+ The empty cells.
+
+
+
+
+ Gets the float property.
+
+
+ The float property.
+
+
+
+
+ Gets the float-offset.
+
+
+ The float offset.
+
+
+
+
+ Gets the flex.
+
+
+ The flex.
+
+
+
+
+ Gets the font property.
+
+
+ The font.
+
+
+
+
+ Gets the justify-content.
+
+
+ The justify-content.
+
+
+
+
+ Gets the grid.
+
+
+ The grid.
+
+
+
+
+ Gets the hanging-punctuation property.
+
+
+ The hanging punctuation.
+
+
+
+
+ Gets the height property.
+
+
+ The height.
+
+
+
+
+ Gets the hyphens property.
+
+
+ The hyphens.
+
+
+
+
+ Gets the hyperlink.
+
+
+ The hyperlink target.
+
+
+
+
+ Gets the left property.
+
+
+ The left property.
+
+
+
+
+ Gets the letter spacing property.
+
+
+ The letter spacing.
+
+
+
+
+ Gets the line-break.
+
+
+ The line break.
+
+
+
+
+ Gets the height of the line.
+
+
+ The height of the line.
+
+
+
+
+ Gets the line-stacking.
+
+
+ The line stacking.
+
+
+
+
+ Gets the list style property.
+
+
+ The list style.
+
+
+
+
+ Gets the margin property.
+
+
+ The margin.
+
+
+
+
+ Gets the max-height property.
+
+
+ The maximum height.
+
+
+
+
+ Gets the max-width property.
+
+
+ The maximum width.
+
+
+
+
+ Gets the min-height property.
+
+
+ The minimum height.
+
+
+
+
+ Gets the min-width property.
+
+
+ The minimum width.
+
+
+
+
+ Gets the move-to.
+
+
+ The move to.
+
+
+
+
+ Gets the object-fit.
+
+
+ The object fit.
+
+
+
+
+ Gets the object-position.
+
+
+ The object position.
+
+
+
+
+ Gets the marquee.
+
+
+ The marquee.
+
+
+
+
+ Gets the opacity property.
+
+
+ The opacity.
+
+
+
+
+ Gets the orphans property.
+
+
+ The orphans.
+
+
+
+
+ Gets the order.
+
+
+
+
+ Gets the outline property.
+
+
+ The outline.
+
+
+
+
+ Gets the overflow property.
+
+
+ The overflow.
+
+
+
+
+ Gets the overflow wrap.
+
+
+ The overflow wrap.
+
+
+
+
+ Gets the padding property.
+
+
+ The padding.
+
+
+
+
+ Gets the page break after property.
+
+
+
+
+ Gets the page-break-before property.
+
+
+ The page break before.
+
+
+
+
+ Gets the page-break-inside property.
+
+
+ The page break inside.
+
+
+
+
+ Gets the page-policy.
+
+
+ The page policy.
+
+
+
+
+ Gets the pause property.
+
+
+ The pause.
+
+
+
+
+ Gets the pitch range property.
+
+
+ The pitch range.
+
+
+
+
+ Gets the pitch property.
+
+
+ The pitch.
+
+
+
+
+ Gets the play during property.
+
+
+ The play during.
+
+
+
+
+ Gets the position property.
+
+
+ The position.
+
+
+
+
+ Gets the perspective.
+
+
+ The perspective.
+
+
+
+
+ Gets the perspective-origin.
+
+
+ The perspective origin.
+
+
+
+
+ Gets the quotes property.
+
+
+ The quotes.
+
+
+
+
+ Gets the resize.
+
+
+ The resize.
+
+
+
+
+ Gets the rest.
+
+
+ The rest.
+
+
+
+
+ Gets the richness property.
+
+
+ The richness.
+
+
+
+
+ Gets the right property.
+
+
+ The right.
+
+
+
+
+ Gets the rotation.
+
+
+ The rotation.
+
+
+
+
+ Gets the rotation point.
+
+
+ The rotation point.
+
+
+
+
+ Gets the ruby.
+
+
+ The ruby.
+
+
+
+
+ Gets the speak header property.
+
+
+ The speak header.
+
+
+
+
+ Gets the speak numeral property.
+
+
+ The speak numeral.
+
+
+
+
+ Gets the speak property.
+
+
+ The speak.
+
+
+
+
+ Gets the speak-as.
+
+
+ The speak-as.
+
+
+
+
+ Gets the stress property.
+
+
+ The stress.
+
+
+
+
+ Gets the string-set.
+
+
+ The string-set.
+
+
+
+
+ Gets the speech rate property.
+
+
+ The speech rate.
+
+
+
+
+ Gets the speak punctuation property.
+
+
+ The speak punctuation.
+
+
+
+
+ Gets the size of the tab.
+
+
+ The size of the tab.
+
+
+
+
+ Gets the table layout property.
+
+
+ The table layout.
+
+
+
+
+ Gets the text align property.
+
+
+ The text align.
+
+
+
+
+ Gets the text-align-last.
+
+
+ The text align last.
+
+
+
+
+ Gets the text-combine-horizontal.
+
+
+ The text combine horizontal.
+
+
+
+
+ Gets the text decoration property.
+
+
+ The text decoration.
+
+
+
+
+ Gets the text emphasis property.
+
+
+ The text emphasis.
+
+
+
+
+ Gets the text indent property.
+
+
+ The text indent.
+
+
+
+
+ Gets the text-justify.
+
+
+ The text justify.
+
+
+
+
+ Gets the text-height.
+
+
+ The height of the text.
+
+
+
+
+ Gets the text-orientation.
+
+
+ The text orientation.
+
+
+
+
+ Gets the text-overflow.
+
+
+ The text overflow.
+
+
+
+
+ Gets the text shadow.
+
+
+ The text shadow.
+
+
+
+
+ Gets the text-space-collapse.
+
+
+ The text space collapse.
+
+
+
+
+ Gets the text transform property.
+
+
+ The text transform.
+
+
+
+
+ Gets the text-underline-position.
+
+
+ The text underline position.
+
+
+
+
+ Gets the transform functions.
+
+
+ The transform.
+
+
+
+
+ Gets the transform-origin.
+
+
+ The transform origin.
+
+
+
+
+ Gets the transition.
+
+
+ The transition.
+
+
+
+
+ Gets the transform-style.
+
+
+ The transform style.
+
+
+
+
+ Gets the top property.
+
+
+
+
+ Gets the unicode-bidi property.
+
+
+ The unicode bidi.
+
+
+
+
+ Gets the vertical align property.
+
+
+ The vertical align.
+
+
+
+
+ Gets the visibility property.
+
+
+ The visibility.
+
+
+
+
+ Gets the volume property.
+
+
+ The volume.
+
+
+
+
+ Gets the voice balance.
+
+
+
+
+ Gets the duration of the voice.
+
+
+ The duration of the voice.
+
+
+
+
+ Gets the voice family property.
+
+
+ The voice family.
+
+
+
+
+ Gets the white space property.
+
+
+ The white space.
+
+
+
+
+ Gets the widows property.
+
+
+ The widows.
+
+
+
+
+ Gets the width property.
+
+
+ The width.
+
+
+
+
+ Gets the word spacing property.
+
+
+ The word spacing.
+
+
+
+
+ Gets the word-break.
+
+
+ The word break.
+
+
+
+
+ Gets the word-wrap.
+
+
+ The word wrap.
+
+
+
+
+ Gets the writing mode.
+
+
+ The writing mode.
+
+
+
+
+ Gets the z-index property.
+
+
+ The index of the z.
+
+
+
+
+ Represents an object that contains only computed CSS properties
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Represents CSS page model
+
+
+
+
+ Gets the fit.
+
+
+ The fit.
+
+
+
+
+ Gets the fit-position.
+
+
+ The fit position.
+
+
+
+
+ Gets the marks.
+
+
+ The marks.
+
+
+
+
+ Gets the bleed.
+
+
+ The bleed.
+
+
+
+
+ Gets the margin property.
+
+
+ The margin.
+
+
+
+
+ Gets the first page margin.
+
+
+ The first page margin.
+
+
+
+
+ Gets the left page margin.
+
+
+ The left page margin.
+
+
+
+
+ Gets the right page margin.
+
+
+ The right page margin.
+
+
+
+
+ Gets the page-size.
+
+
+ The size.
+
+
+
+
+ Gets the background property.
+
+
+ The background.
+
+
+
+
+ Gets the border property.
+
+
+ The border.
+
+
+
+
+ Gets the font property.
+
+
+ The font.
+
+
+
+
+ Represents enumeration of the CSS properties.
+
+
+
+
+
+ Represents align-content property
+
+
+
+
+ Represents align-items property
+
+
+
+
+ Represents alignment-adjust property
+
+
+
+
+ Represents alignment-baseline property
+
+
+
+
+ Represents align-self property
+
+
+
+
+ Represents animation property
+
+
+
+
+ Represents animation-delay property
+
+
+
+
+ Represents animation-direction property
+
+
+
+
+ Represents animation-duration property
+
+
+
+
+ Represents animation-fill-mode property
+
+
+
+
+ Represents animation-iteration-count property
+
+
+
+
+ Represents animation-name property
+
+
+
+
+ Represents animation-play-state property
+
+
+
+
+ Represents animation-timing-function property
+
+
+
+
+ Represents azimuth property
+
+
+
+
+ Represents backface-visibility property
+
+
+
+
+ Represents background property
+
+
+
+
+ Represents background-attachment property
+
+
+
+
+ Represents background-clip property
+
+
+
+
+ Represents background-color property
+
+
+
+
+ Represents background-image property
+
+
+
+
+ Represents background-origin property
+
+
+
+
+ Represents background-position property
+
+
+
+
+ Represents background-repeat property
+
+
+
+
+ Represents background-size property
+
+
+
+
+ Represents baseline-shift property
+
+
+
+
+ Represents bleed property
+
+
+
+
+ Represents bookmark-label property
+
+
+
+
+ Represents bookmark-level property
+
+
+
+
+ Represents bookmark-state property
+
+
+
+
+ Represents bookmark-target property
+
+
+
+
+ Represents border property
+
+
+
+
+ Represents border-bottom property
+
+
+
+
+ Represents border-bottom-color property
+
+
+
+
+ Represents border-bottom-left-radius property
+
+
+
+
+ Represents border-bottom-right-radius property
+
+
+
+
+ Represents border-bottom-style property
+
+
+
+
+ Represents border-bottom-width property
+
+
+
+
+ Represents border-collapse property
+
+
+
+
+ Represents border-color property
+
+
+
+
+ Represents border-image property
+
+
+
+
+ Represents border-image-outset property
+
+
+
+
+ Represents border-image-repeat property
+
+
+
+
+ Represents border-image-slice property
+
+
+
+
+ Represents border-image-source property
+
+
+
+
+ Represents border-image-width property
+
+
+
+
+ Represents border-left property
+
+
+
+
+ Represents border-left-color property
+
+
+
+
+ Represents border-left-style property
+
+
+
+
+ Represents border-left-width property
+
+
+
+
+ Represents border-radius property
+
+
+
+
+ Represents border-right property
+
+
+
+
+ Represents border-right-color property
+
+
+
+
+ Represents border-right-style property
+
+
+
+
+ Represents border-right-width property
+
+
+
+
+ Represents border-spacing property
+
+
+
+
+ Represents border-style property
+
+
+
+
+ Represents border-top property
+
+
+
+
+ Represents border-top-color property
+
+
+
+
+ Represents border-top-left-radius property
+
+
+
+
+ Represents border-top-right-radius property
+
+
+
+
+ Represents border-top-style property
+
+
+
+
+ Represents border-top-width property
+
+
+
+
+ Represents border-width property
+
+
+
+
+ Represents bottom property
+
+
+
+
+ Represents box-decoration-break property
+
+
+
+
+ Represents box-shadow property
+
+
+
+
+ Represents box-sizing property
+
+
+
+
+ Represents caption-side property
+
+
+
+
+ Represents clear property
+
+
+
+
+ Represents clip property
+
+
+
+
+ Represents color property
+
+
+
+
+ Represents column-count property
+
+
+
+
+ Represents column-fill property
+
+
+
+
+ Represents column-gap property
+
+
+
+
+ Represents column-rule property
+
+
+
+
+ Represents column-rule-color property
+
+
+
+
+ Represents column-rule-style property
+
+
+
+
+ Represents column-rule-width property
+
+
+
+
+ Represents columns property
+
+
+
+
+ Represents column-span property
+
+
+
+
+ Represents column-width property
+
+
+
+
+ Represents content property
+
+
+
+
+ Represents counter-increment property
+
+
+
+
+ Represents counter-reset property
+
+
+
+
+ Represents crop property
+
+
+
+
+ Represents cue property
+
+
+
+
+ Represents cue-after property
+
+
+
+
+ Represents cue-before property
+
+
+
+
+ Represents cursor property
+
+
+
+
+ Represents direction property
+
+
+
+
+ Represents display property
+
+
+
+
+ Represents dominant-baseline property
+
+
+
+
+ Represents drop-initial-after-adjust property
+
+
+
+
+ Represents drop-initial-after-align property
+
+
+
+
+ Represents drop-initial-before-adjust property
+
+
+
+
+ Represents drop-initial-before-align property
+
+
+
+
+ Represents drop-initial-size property
+
+
+
+
+ Represents drop-initial-value property
+
+
+
+
+ Represents elevation property
+
+
+
+
+ Represents empty-cells property
+
+
+
+
+ Represents fit property
+
+
+
+
+ Represents fit-position property
+
+
+
+
+ Represents flex property
+
+
+
+
+ Represents flex-basis property
+
+
+
+
+ Represents flex-direction property
+
+
+
+
+ Represents flex-flow property
+
+
+
+
+ Represents flex-grow property
+
+
+
+
+ Represents flex-shrink property
+
+
+
+
+ Represents flex-wrap property
+
+
+
+
+ Represents float property
+
+
+
+
+ Represents float-offset property
+
+
+
+
+ Represents font property
+
+
+
+
+ Represents font-family property
+
+
+
+
+ Represents font-language-override property
+
+
+
+
+ Represents font-size property
+
+
+
+
+ Represents font-size-adjust property
+
+
+
+
+ Represents font-stretch property
+
+
+
+
+ Represents font-style property
+
+
+
+
+ Represents font-variant property
+
+
+
+
+ Represents font-variant-caps property
+
+
+
+
+ Represents font-variant-east-asian property
+
+
+
+
+ Represents font-variant-ligatures property
+
+
+
+
+ Represents font-variant-numeric property
+
+
+
+
+ Represents font-variant-position property
+
+
+
+
+ Represents font-variant-alternates property
+
+
+
+
+ Represents font-weight property
+
+
+
+
+ Represents grid-cell property
+
+
+
+
+ Represents grid-column property
+
+
+
+
+ Represents grid-column-align property
+
+
+
+
+ Represents grid-columns property
+
+
+
+
+ Represents grid-column-sizing property
+
+
+
+
+ Represents grid-column-span property
+
+
+
+
+ Represents grid-flow property
+
+
+
+
+ Represents grid-row property
+
+
+
+
+ Represents grid-row-align property
+
+
+
+
+ Represents grid-rows property
+
+
+
+
+ Represents grid-row-sizing property
+
+
+
+
+ Represents grid-row-span property
+
+
+
+
+ Represents grid-template property
+
+
+
+
+ Represents hanging-punctuation property
+
+
+
+
+ Represents height property
+
+
+
+
+ Represents hyphens property
+
+
+
+
+ Represents icon property
+
+
+
+
+ Represents image-orientation property
+
+
+
+
+ Represents image-resolution property
+
+
+
+
+ Represents ime-mode property
+
+
+
+
+ Represents inline-box-align property
+
+
+
+
+ Represents justify-content property
+
+
+
+
+ Represents left property
+
+
+
+
+ Represents letter-spacing property
+
+
+
+
+ Represents line-break property
+
+
+
+
+ Represents line-height property
+
+
+
+
+ Represents line-stacking property
+
+
+
+
+ Represents line-stacking-ruby property
+
+
+
+
+ Represents line-stacking-shift property
+
+
+
+
+ Represents line-stacking-strategy property
+
+
+
+
+ Represents list-style property
+
+
+
+
+ Represents list-style-image property
+
+
+
+
+ Represents list-style-position property
+
+
+
+
+ Represents list-style-type property
+
+
+
+
+ Represents margin property
+
+
+
+
+ Represents margin-bottom property
+
+
+
+
+ Represents margin-left property
+
+
+
+
+ Represents margin-right property
+
+
+
+
+ Represents margin-top property
+
+
+
+
+ Represents marks property
+
+
+
+
+ Represents marquee-direction property
+
+
+
+
+ Represents marquee-loop property
+
+
+
+
+ Represents marquee-play-count property
+
+
+
+
+ Represents marquee-speed property
+
+
+
+
+ Represents marquee-style property
+
+
+
+
+ Represents max-height property
+
+
+
+
+ Represents max-width property
+
+
+
+
+ Represents min-height property
+
+
+
+
+ Represents min-width property
+
+
+
+
+ Represents move-to property
+
+
+
+
+ Represents nav-down property
+
+
+
+
+ Represents nav-index property
+
+
+
+
+ Represents nav-left property
+
+
+
+
+ Represents nav-right property
+
+
+
+
+ Represents nav-up property
+
+
+
+
+ Represents object-fit property
+
+
+
+
+ Represents object-position property
+
+
+
+
+ Represents opacity property
+
+
+
+
+ Represents order property
+
+
+
+
+ Represents orphans property
+
+
+
+
+ Represents outline property
+
+
+
+
+ Represents outline-color property
+
+
+
+
+ Represents outline-offset property
+
+
+
+
+ Represents outline-style property
+
+
+
+
+ Represents outline-width property
+
+
+
+
+ Represents overflow property
+
+
+
+
+ Represents overflow-style property
+
+
+
+
+ Represents overflow-wrap property
+
+
+
+
+ Represents overflow-x property
+
+
+
+
+ Represents overflow-y property
+
+
+
+
+ Represents padding property
+
+
+
+
+ Represents padding-bottom property
+
+
+
+
+ Represents padding-left property
+
+
+
+
+ Represents padding-right property
+
+
+
+
+ Represents padding-top property
+
+
+
+
+ Represents page-break-after property
+
+
+
+
+ Represents page-break-before property
+
+
+
+
+ Represents page-break-inside property
+
+
+
+
+ Represents page-policy property
+
+
+
+
+ Represents pause property
+
+
+
+
+ Represents pause-after property
+
+
+
+
+ Represents pause-before property
+
+
+
+
+ Represents perspective property
+
+
+
+
+ Represents perspective-origin property
+
+
+
+
+ Represents pitch property
+
+
+
+
+ Represents pitch-range property
+
+
+
+
+ Represents play-during property
+
+
+
+
+ Represents position property
+
+
+
+
+ Represents quotes property
+
+
+
+
+ Represents resize property
+
+
+
+
+ Represents rest property
+
+
+
+
+ Represents rest-after property
+
+
+
+
+ Represents rest-before property
+
+
+
+
+ Represents richness property
+
+
+
+
+ Represents right property
+
+
+
+
+ Represents rotation property
+
+
+
+
+ Represents rotation-point property
+
+
+
+
+ Represents ruby-align property
+
+
+
+
+ Represents ruby-overhang property
+
+
+
+
+ Represents ruby-position property
+
+
+
+
+ Represents ruby-span property
+
+
+
+
+ Represents size property
+
+
+
+
+ Represents speak property
+
+
+
+
+ Represents speak-as property
+
+
+
+
+ Represents speak-header property
+
+
+
+
+ Represents speak-numeral property
+
+
+
+
+ Represents speak-punctuation property
+
+
+
+
+ Represents speech-rate property
+
+
+
+
+ Represents stress property
+
+
+
+
+ Represents string-set property
+
+
+
+
+ Represents table-layout property
+
+
+
+
+ Represents tab-size property
+
+
+
+
+ Represents text-align property
+
+
+
+
+ Represents text-align-last property
+
+
+
+
+ Represents text-combine-upright property
+
+
+
+
+ Represents text-combine-mode property
+
+
+
+
+ Represents text-decoration property
+
+
+
+
+ Represents text-decoration-color property
+
+
+
+
+ Represents text-decoration-line property
+
+
+
+
+ Represents text-decoration-skip property
+
+
+
+
+ Represents text-decoration-style property
+
+
+
+
+ Represents text-emphasis property
+
+
+
+
+ Represents text-emphasis-color property
+
+
+
+
+ Represents text-emphasis-position property
+
+
+
+
+ Represents text-emphasis-style property
+
+
+
+
+ Represents text-height property
+
+
+
+
+ Represents text-indent property
+
+
+
+
+ Represents text-justify property
+
+
+
+
+ Represents text-orientation property
+
+
+
+
+ Represents text-overflow property
+
+
+
+
+ Represents text-shadow property
+
+
+
+
+ Represents text-space-collapse property
+
+
+
+
+ Represents text-transform property
+
+
+
+
+ Represents text-underline-position property
+
+
+
+
+ Represents top property
+
+
+
+
+ Represents transform property
+
+
+
+
+ Represents transform-origin property
+
+
+
+
+ Represents transform-style property
+
+
+
+
+ Represents transition property
+
+
+
+
+ Represents transition-delay property
+
+
+
+
+ Represents transition-duration property
+
+
+
+
+ Represents transition-property property
+
+
+
+
+ Represents transition-timing-function property
+
+
+
+
+ Represents unicode-bidi property
+
+
+
+
+ Represents vertical-align property
+
+
+
+
+ Represents visibility property
+
+
+
+
+ Represents voice-balance property
+
+
+
+
+ Represents voice-duration property
+
+
+
+
+ Represents voice-family property
+
+
+
+
+ Represents voice-pitch property
+
+
+
+
+ Represents voice-range property
+
+
+
+
+ Represents voice-rate property
+
+
+
+
+ Represents voice-stress property
+
+
+
+
+ Represents voice-volume property
+
+
+
+
+ Represents volume property
+
+
+
+
+ Represents white-space property
+
+
+
+
+ Represents widows property
+
+
+
+
+ Represents width property
+
+
+
+
+ Represents word-break property
+
+
+
+
+ Represents word-spacing property
+
+
+
+
+ Represents writing-mode property
+
+
+
+
+ Represents z-index property
+
+
+
+
+ Represents word-wrap property
+
+
+
+
+ Represents break-after property
+
+
+
+
+ Represents break-before property
+
+
+
+
+ Represents break-inside property
+
+
+
+
+ Represents target-position property
+
+
+
+
+ Represents target-new property
+
+
+
+
+ Represents target-name property
+
+
+
+
+ Represents target property
+
+
+
+
+ Represents src property
+
+
+
+
+ Represents zoom descriptor
+
+
+
+
+ Represents font-face model.
+
+
+
+
+ Represents font-face rule interface.
+
+
+
+
+ Gets the name of the font.
+
+
+
+
+ Gets the URL(s) where the font should be downloaded from.
+
+
+
+
+ Gets the font style.
+
+
+
+
+ Gets the font weight.
+
+
+
+
+ Creates the font-face based on specified rule.
+
+ The font-face rule.
+ Returns font-face model
+
+
+
+ Gets the name of the font.
+
+
+
+
+ Gets the URL(s) where the font should be downloaded from.
+
+
+
+
+ Gets the font style.
+
+
+
+
+ Gets the font weight.
+
+
+
+
+ Represents font-face url.
+
+
+
+
+ Gets a value indicating whether this url is local.
+
+
+ true if this instance is local; otherwise, false.
+
+
+
+
+ Gets the URI.
+
+
+
+
+ Gets the resource format.
+
+
+
+
+ Represents the gradient function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The function type.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the function type.
+
+
+
+
+ Represents the gradient function type ().
+
+
+
+
+ linear-gradient type
+
+
+
+
+ radial-gradient type
+
+
+
+
+ repeating-linear-gradient type
+
+
+
+
+ repeating-radial-gradient type
+
+
+
+
+ Represents the 'linear-gradient' image source function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Gradient direction().
+ Gradient angle, optional().
+ List of objects.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the gradient direction ().
+
+
+ The direction.
+
+
+
+
+ Gets the gradient angle (), can be null.
+
+
+ The angle.
+
+
+
+
+ Gets the list of gradient color-stops ().
+
+
+ The color stops.
+
+
+
+
+ Represents the transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The function type.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the function type.
+
+
+ The type of function.
+
+
+
+
+ Represents the transformation function value().
+
+
+
+
+ TRANSLATE type
+
+
+
+
+ TRANSLATEX
+
+
+
+
+ TRANSLATEY type
+
+
+
+
+ ROTATE type
+
+
+
+
+ SCALE type
+
+
+
+
+ SCALEX type
+
+
+
+
+ SCALEY type
+
+
+
+
+ SKEW type.
+
+
+
+
+ SKEWX type
+
+
+
+
+ SKEWY type
+
+
+
+
+ MATRIX type
+
+
+
+
+ TRANSLATEZ type
+
+
+
+
+ TRANSLATE3D type
+
+
+
+
+ ROTATEX type
+
+
+
+
+ ROTATEY type
+
+
+
+
+ ROTATEZ type
+
+
+
+
+ ROTATE3D type
+
+
+
+
+ SCALEZ type
+
+
+
+
+ SCALE3D type
+
+
+
+
+ PERSPECTIVE type
+
+
+
+
+ MATRIX3D type
+
+
+
+
+ Represents the 'matrix3d' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The M11 value.
+ The M12 value.
+ The M13 value.
+ The M14 value.
+ The M21 value.
+ The M22 value.
+ The M23 value.
+ The M24 value.
+ The M31 value.
+ The M32 value.
+ The M33 value.
+ The M34 value.
+ The M41 value.
+ The M42 value.
+ The M43 value.
+ The M44 value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the M11.
+
+
+ The M11.
+
+
+
+
+ Gets the M12.
+
+
+ The M12.
+
+
+
+
+ Gets the M13.
+
+
+ The M13.
+
+
+
+
+ Gets the M14.
+
+
+ The M14.
+
+
+
+
+ Gets the M21.
+
+
+ The M21.
+
+
+
+
+ Gets the M22.
+
+
+ The M22.
+
+
+
+
+ Gets the M23.
+
+
+ The M23.
+
+
+
+
+ Gets the M24.
+
+
+ The M24.
+
+
+
+
+ Gets the M31.
+
+
+ The M31.
+
+
+
+
+ Gets the M32.
+
+
+ The M32.
+
+
+
+
+ Gets the M33.
+
+
+ The M33.
+
+
+
+
+ Gets the M34.
+
+
+ The M34.
+
+
+
+
+ Gets the M41.
+
+
+ The M41.
+
+
+
+
+ Gets the M42.
+
+
+ The M42.
+
+
+
+
+ Gets the M43.
+
+
+ The M43.
+
+
+
+
+ Gets the M44.
+
+
+ The M44.
+
+
+
+
+ Represents the 'matrix' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The A value.
+ The b value.
+ The c value.
+ The d value.
+ The e value.
+ The f value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the F.
+
+
+ The F.
+
+
+
+
+ Gets the E.
+
+
+ The E.
+
+
+
+
+ Gets the D.
+
+
+ The D.
+
+
+
+
+ Gets the C.
+
+
+ The C.
+
+
+
+
+ Gets the B.
+
+
+ The B.
+
+
+
+
+ Gets the A.
+
+
+ The A.
+
+
+
+
+ Represents the 'rotate3D' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x rotate.
+ The y rotate.
+ The z rotate.
+ The angle.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the angle.
+
+
+ The angle.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Gets the Z.
+
+
+ The z.
+
+
+
+
+ Represents the 'rotate' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the angle.
+
+
+ The angle.
+
+
+
+
+ Represents the 'rotateX' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the angle.
+
+
+ The angle.
+
+
+
+
+ Represents the 'rotateY' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the angle.
+
+
+ The angle.
+
+
+
+
+ Represents the 'rotateZ' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the angle.
+
+
+ The angle.
+
+
+
+
+ Represents the 'scale3D' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x scale.
+ The y scale.
+ The z scale.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Gets the Z.
+
+
+ The z.
+
+
+
+
+ Represents the 'scale' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x scale.
+ The y scale.
+
+
+
+ Initializes a new instance of the class.
+
+ The scale.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Represents the 'scaleX' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the scale.
+
+
+ The scale.
+
+
+
+
+ Represents the 'scaleY' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the scale.
+
+
+ The scale.
+
+
+
+
+ Represents the 'scaleZ' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the scale.
+
+
+ The scale.
+
+
+
+
+ Represents the 'skew' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x value.
+ The y value.
+
+
+
+ Initializes a new instance of the class.
+
+ The skew value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Represents the 'skewX' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The skew value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the skew.
+
+
+ The skew.
+
+
+
+
+ Represents the 'skewY' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The skew value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the skew.
+
+
+ The skew.
+
+
+
+
+ Represents the transformation function.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the count.
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the at the specified index.
+
+ The foundation index.
+ The
+
+
+
+ Represents the 'translate3D' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x translate.
+ The y translate.
+ The z translate.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Gets the Z.
+
+
+ The z.
+
+
+
+
+ Represents the 'translate' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The x translate.
+ The y translate.
+
+
+
+ Initializes a new instance of the class.
+
+ The translate.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the X.
+
+
+ The x.
+
+
+
+
+ Gets the Y.
+
+
+ The y.
+
+
+
+
+ Represents the 'translateX' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents the 'translateY' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents the 'translateZ' transformation function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents CSS animation property.
+
+
+
+
+ Represents base composite property
+
+
+
+
+ Initializes a new instance of the class.
+
+ The model.
+
+
+
+ Gets the CSS model.
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ Gets the duration.
+
+
+ The duration.
+
+
+
+
+ Gets the delay.
+
+
+ The delay.
+
+
+
+
+ Gets the direction.
+
+
+ The direction.
+
+
+
+
+ Gets the timing function.
+
+
+ The timing function.
+
+
+
+
+ Gets the fill mode.
+
+
+ The fill mode.
+
+
+
+
+ Gets the play state.
+
+
+ The state of the play.
+
+
+
+
+ Gets the iteration count.
+
+
+ The iteration count.
+
+
+
+
+ Represents background model property
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the clip.
+
+
+ The clip.
+
+
+
+
+ Gets the image.
+
+
+ The image.
+
+
+
+
+ Gets the origin.
+
+
+ The origin.
+
+
+
+
+ Gets the position.
+
+
+ The position.
+
+
+
+
+ Gets the repeat.
+
+
+ The repeat.
+
+
+
+
+ Gets the attachment.
+
+
+ The attachment.
+
+
+
+
+ Gets the size of the background.
+
+
+ The size of the background.
+
+
+
+
+ Represents bookmark model property
+
+
+
+
+ Gets the bookmark-level.
+
+
+ The level.
+
+
+
+
+ Gets the bookmark-state.
+
+
+ The state.
+
+
+
+
+ Gets the target.
+
+
+ The target.
+
+
+
+
+ Gets the bookmark-label.
+
+
+ The label.
+
+
+
+
+ Represents border model property
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the collapse.
+
+
+ The collapse.
+
+
+
+
+ Gets the spacing.
+
+
+ The spacing.
+
+
+
+
+ Gets the radius.
+
+
+ The radius.
+
+
+
+
+ Gets the image.
+
+
+ The image.
+
+
+
+
+ Represents border model element.
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the width.
+
+
+ The width.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Represents border image model property
+
+
+
+
+ Gets the slice.
+
+
+ The slice.
+
+
+
+
+ Gets the width.
+
+
+ The width.
+
+
+
+
+ Gets the source.
+
+
+ The source.
+
+
+
+
+ Gets the repeat.
+
+
+ The repeat instance.
+
+
+
+
+ Gets the outset.
+
+
+ The outset.
+
+
+
+
+ Represents border radius model property
+
+
+
+
+ Gets the top-left radius.
+
+
+ The top left.
+
+
+
+
+ Gets the top-right radius.
+
+
+ The top right.
+
+
+
+
+ Gets the bottom-right radius.
+
+
+ The bottom right.
+
+
+
+
+ Gets the bottom-left radius.
+
+
+ The bottom left.
+
+
+
+
+ Represents column model property
+
+
+
+
+ Gets the column-rule.
+
+
+ The rule.
+
+
+
+
+ Gets the column-width.
+
+
+ The width.
+
+
+
+
+ Gets the column-span.
+
+
+ The span.
+
+
+
+
+ Gets the column-count.
+
+
+ The count.
+
+
+
+
+ Gets the column-fill.
+
+
+ The fill.
+
+
+
+
+ Gets the column-gap.
+
+
+ The gap.
+
+
+
+
+ Represents column-rule model property
+
+
+
+
+ Gets the column-rule-color.
+
+
+ The color.
+
+
+
+
+ Gets the column-rule-style.
+
+
+ The style.
+
+
+
+
+ Gets the column-rule-width.
+
+
+ The width.
+
+
+
+
+ Represents Drop Initial model property
+
+
+
+
+ Gets the drop-initial-value.
+
+
+ The value.
+
+
+
+
+ Gets the drop-initial-size.
+
+
+ The size.
+
+
+
+
+ Gets the drop-initial-after-align.
+
+
+ The after align.
+
+
+
+
+ Gets the drop-initial-before-align.
+
+
+ The before align.
+
+
+
+
+ Gets the drop-initial-after-adjust.
+
+
+ The after adjust.
+
+
+
+
+ Gets the drop-initial-before-adjust.
+
+
+ The before adjust.
+
+
+
+
+ Represents flex model property
+
+
+
+
+ Gets the flex-basis.
+
+
+ The basis.
+
+
+
+
+ Gets the flex-direction.
+
+
+ The direction.
+
+
+
+
+ Gets the flex-grow.
+
+
+ The grow.
+
+
+
+
+ Gets the flex-shrink.
+
+
+ The shrink.
+
+
+
+
+ Gets the flex-wrap.
+
+
+ The wrap.
+
+
+
+
+ Represents CSS font property
+
+
+
+
+ Gets the family.
+
+
+ The family.
+
+
+
+
+ Gets the size.
+
+
+ The size.
+
+
+
+
+ Gets the size adjust.
+
+
+ The size adjust.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Gets the variant.
+
+
+ The variant.
+
+
+
+
+ Gets the weight.
+
+
+ The weight.
+
+
+
+
+ Gets the font-stretch.
+
+
+ The stretch.
+
+
+
+
+ Gets the font-language-override.
+
+
+ The language override.
+
+
+
+
+ Represents CSS font-variant property
+
+
+
+
+ Gets the font-variant-caps.
+
+
+ The font-variant-caps.
+
+
+
+
+ Gets the font-variant-east-asian.
+
+
+ The font-variant-east-asian.
+
+
+
+
+ Gets the font-variant-ligatures.
+
+
+ The font-variant-ligatures.
+
+
+
+
+ Gets the font-variant-numeric.
+
+
+ The font-variant-numeric.
+
+
+
+
+ Gets the font-variant-position.
+
+
+ The font-variant-position.
+
+
+
+
+ Gets the font-variant-alternates.
+
+
+ The font-variant-alternates.
+
+
+
+
+ Represents grid model property
+
+
+
+
+ Gets the column.
+
+
+ The column.
+
+
+
+
+ Gets the grid-column.
+
+
+ The grid column.
+
+
+
+
+ Gets the columns.
+
+
+ The columns.
+
+
+
+
+ Gets the column.
+
+
+
+
+ Gets the grid row.
+
+
+ The grid row.
+
+
+
+
+ Gets the columns.
+
+
+ The rows.
+
+
+
+
+ Gets the grid-flow.
+
+
+ The flow.
+
+
+
+
+ Gets the grid-cell.
+
+
+ The cell.
+
+
+
+
+ Gets the grid-template.
+
+
+ The template.
+
+
+
+
+ Represents grid-column model property
+
+
+
+
+ Gets the span.
+
+
+ The span.
+
+
+
+
+ Gets the align.
+
+
+ The align.
+
+
+
+
+ Gets the sizing.
+
+
+ The sizing.
+
+
+
+
+ Represents grid-row model property
+
+
+
+
+ Gets the span.
+
+
+ The span.
+
+
+
+
+ Gets the align.
+
+
+ The align.
+
+
+
+
+ Gets the sizing.
+
+
+ The sizing.
+
+
+
+
+ Represents line-stacking property
+
+
+
+
+ Gets the line-stacking-strategy.
+
+
+
+
+ Gets the line-stacking-ruby.
+
+
+
+
+ Gets the line-stacking-shift.
+
+
+
+
+ Represents CSS margin property
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Represents CSS marquee property.
+
+
+
+
+ Gets the direction.
+
+
+ The direction.
+
+
+
+
+ Gets the speed.
+
+
+ The speed.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Gets the loop.
+
+
+ The loop.
+
+
+
+
+ Gets the play-count.
+
+
+ The play count.
+
+
+
+
+ Represents CSS outline property.
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the width.
+
+
+ The width.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Gets the outline-offset.
+
+
+ The offset.
+
+
+
+
+ Represents CSS Overflow property.
+
+
+
+
+ Gets the X.
+
+
+ The X.
+
+
+
+
+ Gets the Y.
+
+
+ The Y.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Represents CSS padding property
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Represents pause property
+
+
+
+
+ Gets the after.
+
+
+ The after.
+
+
+
+
+ Gets the before.
+
+
+ The before.
+
+
+
+
+ Represents rest model property
+
+
+
+
+ Gets the rest-after.
+
+
+ The after.
+
+
+
+
+ Gets the rest-before.
+
+
+ The before.
+
+
+
+
+ Represents CSS ruby properties.
+
+
+
+
+ Gets the ruby-align.
+
+
+ The align.
+
+
+
+
+ Gets the ruby-overhang.
+
+
+ The overhang.
+
+
+
+
+ Gets the ruby-position.
+
+
+ The position.
+
+
+
+
+ Represents size-unit
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unit value.
+ Type of the unit.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Equalses the specified other.
+
+ The other.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Gets the unit type.
+
+
+ The unit type.
+
+
+
+
+ Gets the unit value.
+
+
+ The unit value.
+
+
+
+
+ Represents CSS target property
+
+
+
+
+ Gets the target-name.
+
+
+ The name.
+
+
+
+
+ Gets the target-new.
+
+
+ The new.
+
+
+
+
+ Gets the target-position.
+
+
+ The position.
+
+
+
+
+ Represents border model property
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the line.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Gets the style.
+
+
+ The skip.
+
+
+
+
+ Represents border model property
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the position.
+
+
+ The position.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Represents CSS transition property.
+
+
+
+
+ Gets the delay.
+
+
+ The delay.
+
+
+
+
+ Gets the duration.
+
+
+ The duration.
+
+
+
+
+ Gets the timing-function.
+
+
+ The timing function.
+
+
+
+
+ Gets the property.
+
+
+ The property.
+
+
+
+
+ Represents list-style property
+
+
+
+
+ Gets the image.
+
+
+ The image.
+
+
+
+
+ Gets the position.
+
+
+ The position.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Represents base class for CSS property value object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets a value indicating whether this instance is a function value.
+
+
+ true if this instance is a function value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is string value.
+
+
+ true if this instance is string value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is string or URI value.
+
+
+ true if this instance is string or URI value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is ident value.
+
+
+ true if this instance is ident value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is list value.
+
+
+ true if this instance is list value; otherwise, false.
+
+
+
+
+ Gets the CSS value.
+
+
+
+
+ Represents alignment-adjust value
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance is length value.
+
+
+ true if this instance is length value; otherwise, false.
+
+
+
+
+ Represents angle value
+
+
+
+
+ Gets the angle.
+
+
+
+
+ Represents Azimuth value object.
+
+
+
+
+ Position is described in terms of an angle within the range '-360deg' to '360deg'. The value '0deg' means directly ahead in the center of the sound stage. '90deg' is to the right, '180deg' behind, and '270deg' (or, equivalently and more conveniently, '-90deg') to the left.
+
+
+ The degree.
+
+
+
+
+ Moves the sound to the left, relative to the current angle. More precisely, subtracts 20 degrees. Arithmetic is carried out modulo 360 degrees. Note that 'leftwards' is more accurately described as "turned counter-clockwise," since it always subtracts 20 degrees, even if the inherited azimuth is already behind the listener (in which case the sound actually appears to move to the right).
+
+
+ true if this instance is leftwards; otherwise, false.
+
+
+
+
+ Moves the sound to the right, relative to the current angle. More precisely, adds 20 degrees. See 'leftwards' for arithmetic.
+
+
+ true if this instance is rightwards; otherwise, false.
+
+
+
+
+ Represents background-size value
+
+
+
+
+ Gets the width.
+
+
+ The width.
+
+
+
+
+ Gets the height.
+
+
+ The height.
+
+
+
+
+ Gets a value indicating whether this instance is cover.
+
+
+ true if this instance is cover; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is contain.
+
+
+ true if this instance is contain; otherwise, false.
+
+
+
+
+ Represents baseline-shift value
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance is length value.
+
+
+ true if this instance is length value; otherwise, false.
+
+
+
+
+ Represents bg-size value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents bg-size value
+
+
+
+
+ Gets the size.
+
+
+ The size.
+
+
+
+
+ Gets a value indicating whether this instance is auto.
+
+
+ true if this instance is auto; otherwise, false.
+
+
+
+
+ Represents bookmark-label value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the count of the sets.
+
+
+ The count.
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+
+ The .
+
+
+
+
+ Represents bookmarks types
+
+
+
+
+ string type
+
+
+
+
+ Counter type
+
+
+
+
+ Content type
+
+
+
+
+ ContentBefore type
+
+
+
+
+ ContentAfter type
+
+
+
+
+ ContentFirstLetter type
+
+
+
+
+ Represents bookmark string value object.
+
+
+
+
+ Represents bookmark base value object.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents bookmark content value object.
+
+
+
+
+ Represents bookmark content before value object.
+
+
+
+
+ Represents bookmark content after value object.
+
+
+
+
+ Represents bookmark content first letter value object.
+
+
+
+
+ Represents border-image-outset value
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Represents border-image-repeat value
+
+
+
+
+ Gets the horizontal.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical.
+
+
+ The vertical.
+
+
+
+
+ Represents border-image-slice value
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Gets or sets a value indicating whether this is fill.
+
+
+ true if fill; otherwise, false.
+
+
+
+
+ Represents border-image-width value
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Represents border-radius value
+
+
+
+
+ Gets the horizontal value.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical value.
+
+
+ The vertical.
+
+
+
+
+ Represents border-spacing value
+
+
+
+
+ Gets the horizontal value.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical value.
+
+
+ The vertical.
+
+
+
+
+ Represents border-width value
+
+
+
+
+ Gets a value indicating whether this instance is length value.
+
+
+ true if this instance is length value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Gets the border-width value.
+
+
+ The border-width value.The enum value.
+
+
+
+
+ Gets the length value.
+
+
+ The length value.
+
+
+
+
+ Represents box-shadow value
+
+
+
+
+ Gets a value indicating whether this instance is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Gets the box shadows.
+
+
+ The box shadows.
+
+
+
+
+ Represents BoxShadow types
+
+
+
+
+ Gets the horizontal shadow.
+
+
+ The horizontal shadow.
+
+
+
+
+ Gets the vertical shadow.
+
+
+ The vertical shadow.
+
+
+
+
+ Gets the blur.
+
+
+ The blur.
+
+
+
+
+ Gets the spread.
+
+
+ The spread.
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets a value indicating whether this is inset.
+
+
+ true if inset; otherwise, false.
+
+
+
+
+ Represents clip value
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Represents color stop value
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the stop value.
+
+
+ The stop.
+
+
+
+
+ Represents color value
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Represents column-gap value
+
+
+
+
+ Gets a value indicating whether this instance is normal.
+
+
+ true if this instance is normal; otherwise, false.
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Represents content value
+
+
+
+
+ Gets string representation of the segment.
+
+ The string representation of the segment.
+
+
+
+ Gets a value indicating whether this instance is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is normal.
+
+
+ true if this instance is normal; otherwise, false.
+
+
+
+
+ Gets the segments.
+
+
+ The segments.
+
+
+
+
+ Represents value types
+
+
+
+
+ string content value
+
+
+
+
+ Url content value
+
+
+
+
+ Counter content value
+
+
+
+
+ Attribute content value
+
+
+
+
+ OpenQuote content value
+
+
+
+
+ CloseQuote content value
+
+
+
+
+ NoOpenQuote content value
+
+
+
+
+ NoCloseQuote content value
+
+
+
+
+ Represents segment of the content value.
+
+
+
+
+ Gets string representation of the segment.
+
+
+ String representation of the segment
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents crop value
+
+
+
+
+ Gets the top.
+
+
+ The top.
+
+
+
+
+ Gets the right.
+
+
+ The right.
+
+
+
+
+ Gets the bottom.
+
+
+ The bottom.
+
+
+
+
+ Gets the left.
+
+
+ The left.
+
+
+
+
+ Gets a value indicating whether this instance is inset rect.
+
+
+ true if this instance is inset rect; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is rec.
+
+
+ true if this instance is rec; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is auto.
+
+
+ true if this instance is auto; otherwise, false.
+
+
+
+
+ Represents cursor value
+
+
+
+
+ Gets the URL.
+
+
+ The URL.
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Represents display value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets the template.
+
+
+ The template.
+
+
+
+
+ Gets a value indicating whether this instance is template.
+
+
+ true if this instance is template; otherwise, false.
+
+
+
+
+ Represents distance value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents drop-initial-after-adjust value
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance is length value.
+
+
+ true if this instance is length value; otherwise, false.
+
+
+
+
+ Represents drop-initial-before-adjust value
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance is length value.
+
+
+ true if this instance is length value; otherwise, false.
+
+
+
+
+ Represents drop-initial-before-align value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether [caps height].
+
+
+ true if [caps height]; otherwise, false.
+
+
+
+
+ Represents drop-initial-size value
+
+
+
+
+ Gets a value indicating whether this is auto.
+
+
+ true if auto; otherwise, false.
+
+
+
+
+ Gets the length.
+
+
+ The length.
+
+
+
+
+ Represents drop-initial-value value
+
+
+
+
+ Gets a value indicating whether this is initial.
+
+
+ true if initial; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents elevation value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this instance is higher.
+
+
+ true if this instance is higher; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is lower.
+
+
+ true if this instance is lower; otherwise, false.
+
+
+
+
+ Represents fit-position value
+
+
+
+
+ Gets the horizontal.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical.
+
+
+ The vertical.
+
+
+
+
+ Represents float-offset value
+
+
+
+
+ Gets the vertical.
+
+
+ The vertical.
+
+
+
+
+ Gets the horizontal.
+
+
+ The horizontal.
+
+
+
+
+ Represents font-family value
+
+
+
+
+ Gets the fonts.
+
+
+ The fonts.
+
+
+
+
+ Represents font-size value
+
+
+
+
+ Gets the size value.
+
+
+ The size of the value.
+
+
+
+
+ Gets the relative size value.
+
+
+ The size of the relative.
+
+
+
+
+ Gets the absolute size value.
+
+
+ The size of the absolute.
+
+
+
+
+ Gets a value indicating whether this instance is absolute size.
+
+
+ true if this instance is absolute size; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is relative size.
+
+
+ true if this instance is relative size; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is value size.
+
+
+ true if this instance is value size; otherwise, false.
+
+
+
+
+ Represents font-variant-alternates value
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Gets the feature.
+
+
+ The feature.
+
+
+
+
+ Represents font-weight value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents grid-columns property value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the values.
+
+
+ The values.
+
+
+
+
+ Represents grid-item property value
+
+
+
+
+ Gets a value indicating whether this instance is auto.
+
+
+ true if this instance is auto; otherwise, false.
+
+
+
+
+ Gets the start line.
+
+
+ The start line.
+
+
+
+
+ Gets the end line.
+
+
+ The end line.
+
+
+
+
+ Represent base grid value class.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets a value indicating whether this instance is int value.
+
+
+ true if this instance is int value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is string value.
+
+
+ true if this instance is string value; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is end.
+
+
+ true if this instance is end; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is start.
+
+
+ true if this instance is start; otherwise, false.
+
+
+
+
+ Gets the integer value.
+
+
+ The integer value.
+
+
+
+
+ Gets the string value.
+
+
+ The string value.
+
+
+
+
+ Represents @Identifier value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this is all.
+
+
+ true if all; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents image-resolution value.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether it's from image.
+
+
+ true if it's from image; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this is snap.
+
+
+ true if snap; otherwise, false.
+
+
+
+
+ Represents image source property value
+
+
+
+
+ Gets the URI.
+
+
+ The URI.
+
+
+
+
+ Gets the gradient function.
+
+
+ The gradient function.
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Represents inline-box-align value
+
+
+
+
+ Use the initial line of the inline block element for alignment purpose
+
+
+ true if initial; otherwise, false.
+
+
+
+
+ Use the last line of the inline block element for alignment purpose
+
+
+ true if last; otherwise, false.
+
+
+
+
+ Use nth line (as determined by the integer value) of the inline block element for alignment purpose
+
+
+ The value.
+
+
+
+
+ Represents line-height value
+
+
+
+
+ Gets the size.
+
+
+ The size.
+
+
+
+
+ Gets a value indicating whether this instance is normal.
+
+
+ true if this instance is normal; otherwise, false.
+
+
+
+
+ Represents margin-width value
+
+
+
+
+ Gets a value indicating whether this is auto.
+
+
+ true if auto; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents move-to value
+
+
+
+
+ Gets a value indicating whether this instance is normal.
+
+
+ true if this instance is normal; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is here.
+
+
+ true if this instance is here; otherwise, false.
+
+
+
+
+ Gets the identifier.
+
+
+ The identifier.
+
+
+
+
+ Represents origin value
+
+
+
+
+ Gets the X.
+
+
+ The X value.
+
+
+
+
+ Gets the Y.
+
+
+ The Y value.
+
+
+
+
+ Represents outline-color value
+
+
+
+
+ Gets a value indicating whether this is invert.
+
+
+ true if invert; otherwise, false.
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Represents OverflowStyle value
+
+
+
+
+ Gets the styles.
+
+
+ The styles.
+
+
+
+
+ Gets a value indicating whether this is auto.
+
+
+ true if auto; otherwise, false.
+
+
+
+
+ Represents page-size value
+
+
+
+
+ Gets the width.
+
+
+ The width.
+
+
+
+
+ Gets the height.
+
+
+ The height.
+
+
+
+
+ Gets the orientation.
+
+
+ The orientation.
+
+
+
+
+ Gets the size.
+
+
+ The size.
+
+
+
+
+ Represents pitch value
+
+
+
+
+ Gets the frequency.
+
+
+ The frequency.
+
+
+
+
+ Gets the pitch.
+
+
+ The pitch.
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Represents play-during value
+
+
+
+
+ Gets the URL attribute.
+
+
+ The URL attribute.
+
+
+
+
+ Gets the URL.
+
+
+ The URL.
+
+
+
+
+ Gets a value indicating whether this instance is auto.
+
+
+ true if this instance is auto; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Represents play-during url attribute
+
+
+
+
+
+ The mix type.
+
+
+
+
+ Repeat type
+
+
+
+
+ Represents position value.
+
+
+
+
+ Gets the horizontal value.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical value.
+
+
+ The vertical.
+
+
+
+
+ Represents position value
+
+
+
+
+ Gets a value indicating whether this instance is auto.
+
+
+ true if this instance is auto; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents quotes value
+
+
+
+
+ Gets the quotes.
+
+
+ The quotes.
+
+
+
+
+ Gets a value indicating whether property value is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Represents pair open-close quotes
+
+
+
+
+ Gets the open quote.
+
+
+ The open.
+
+
+
+
+ Gets the close quote.
+
+
+ The close.
+
+
+
+
+ Represents rest value
+
+
+
+
+ Gets the time.
+
+
+ The time.
+
+
+
+
+ Gets the rest.
+
+
+ The rest.
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is time value.
+
+
+ true if this instance is time value; otherwise, false.
+
+
+
+
+ Represents rotation-point value
+
+
+
+
+ Gets the offsetX.
+
+
+ The offset x.
+
+
+
+
+ Gets the offsetY.
+
+
+ The offset y.
+
+
+
+
+ Represents size property value
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents the size value
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unit value.
+ Type of the unit.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets a value indicating whether this is auto.
+
+
+ true if auto; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Represents spacing-limit value
+
+
+
+
+ Gets the size.
+
+
+ The size.
+
+
+
+
+ Gets a value indicating whether this instance is normal.
+
+
+ true if this instance is normal; otherwise, false.
+
+
+
+
+ Represents speech-rate value
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Gets the speech rate.
+
+
+ The speech rate.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents string-list value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the values.
+
+
+ The values.
+
+
+
+
+ Represents string-set value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the count of the sets.
+
+
+ The count.
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+
+ The .
+
+
+
+
+ Represents string set value types enumeration.
+
+
+
+
+ string type.
+
+
+
+
+ Counter type.
+
+
+
+
+ Content type.
+
+
+
+
+ ContentBefore type.
+
+
+
+
+ ContentAfter type
+
+
+
+
+ ContentFirstLetter type
+
+
+
+
+ EnvUrl type.
+
+
+
+
+ EnvDate type
+
+
+
+
+ EnvTime type.
+
+
+
+
+ EnvDateTime type
+
+
+
+
+ Composite type.
+
+
+
+
+ Represents base value class .
+
+
+
+
+ Represents string value
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this is normal.
+
+
+ true if normal; otherwise, false.
+
+
+
+
+ Represents target-name value
+
+
+
+
+ Gets the name of the target.
+
+
+ The name of the target.
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ Represents text-combine-horizontal value
+
+
+
+
+ Gets a value indicating whether this instance is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is all.
+
+
+ true if this instance is all; otherwise, false.
+
+
+
+
+ Attempt to typeset horizontally each maximal sequence of consecutive ASCII digits (U+0030–U+0039) that has as many or fewer characters than the specified integer such that it takes up the space of a single character within the vertical line box.
+
+
+ The digit.
+
+
+
+
+ Represents text-emphasis-position value
+
+
+
+
+ Gets the horizontal.
+
+
+ The horizontal.
+
+
+
+
+ Gets the vertical.
+
+
+ The vertical.
+
+
+
+
+ Represents text-emphasis-position value
+
+
+
+
+ Gets the style string.
+
+
+ The style string.
+
+
+
+
+ Gets the style.
+
+
+ The style.
+
+
+
+
+ Gets a value indicating whether this instance is style string defined.
+
+
+ true if this instance is style string defined; otherwise, false.
+
+
+
+
+ Represents text-overflow value
+
+
+
+
+ Gets the count.
+
+
+ The count.
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+
+ The .
+
+
+
+
+ Represents text overflow value.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets a value indicating whether this is clip.
+
+
+ true if clip; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this is ellipsis.
+
+
+ true if ellipsis; otherwise, false.
+
+
+
+
+ Gets the string value.
+
+
+ The string value.
+
+
+
+
+ Represents text-shadow value
+
+
+
+
+ Gets a value indicating whether this instance is none.
+
+
+ true if this instance is none; otherwise, false.
+
+
+
+
+ Gets the color.
+
+
+ The color.
+
+
+
+
+ Gets the blur.
+
+
+ The blur.
+
+
+
+
+ Gets the vertical shadow.
+
+
+ The vertical shadow.
+
+
+
+
+ Gets the horizontal shadow.
+
+
+ The horizontal shadow.
+
+
+
+
+ Represents time value.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets a value indicating whether this is auto.
+
+
+ true if auto; otherwise, false.
+
+
+
+
+ Represents timing-function value
+
+
+
+
+ Gets the type.
+
+
+ The type.
+
+
+
+
+ Gets the function parameters.
+
+
+ The function parameters.
+
+
+
+
+ Represents cubic-bezier function.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The start point.
+ The first point.
+ The second point.
+ The end point.
+
+
+
+ Gets the start point.
+
+
+ The start point.
+
+
+
+
+ Gets the first point.
+
+
+ The first point.
+
+
+
+
+ Gets the second point.
+
+
+ The second point.
+
+
+
+
+ Gets the end point.
+
+
+ The end point.
+
+
+
+
+ Represents url property value
+
+
+
+
+ Gets the URI.
+
+
+ The URI.
+
+
+
+
+ Gets a value indicating whether this is none.
+
+
+ true if none; otherwise, false.
+
+
+
+
+ Represents url(s) property value
+
+
+
+
+ Gets the font format.
+
+
+ The format.
+
+
+
+
+ Represents vertical-align value
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets the align.
+
+
+ The align.
+
+
+
+
+ Represents VoiceBalance value
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Gets the align.
+
+
+ The voice balance.
+
+
+
+
+ Represents voice-family value
+
+
+
+
+ Gets the voice families.
+
+
+ The voice families.
+
+
+
+
+ Represents voice-family
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the generic voice.
+
+
+ The generic voice.
+
+
+
+
+ Gets the specific voice.
+
+
+ The specific voice.
+
+
+
+
+ Represents volume value
+
+
+
+
+ Gets a value indicating whether this instance is enum value.
+
+
+ true if this instance is enum value; otherwise, false.
+
+
+
+
+ Gets the volume.
+
+
+ The volume.
+
+
+
+
+ Gets the value.
+
+
+ The value.
+
+
+
+
+ Represents CSS pseudo element.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The element type.
+
+
+
+ Determines whether this instance has next.
+
+
+ true if this instance has next; otherwise, false.
+
+
+
+
+ Implements the operator ==.
+
+ The left element.
+ The right element.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The left element.
+ The right element.
+
+ The result of the operator.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets the next.
+
+
+
+
+ Gets the type.
+
+
+
+
+ Represents enumeration of the pseudo element.
+
+
+
+
+
+ The undefined pseudo element
+
+
+
+
+ The FirstLine type
+
+
+
+
+ The FirstLetter type
+
+
+
+
+ After type.
+
+
+
+
+ Before type
+
+
+
+
+ Marker type
+
+
+
+
+ First type
+
+
+
+
+ Left type.
+
+
+
+
+ Right type
+
+
+
+
+ Link type.
+
+
+
+
+ Visited type
+
+
+
+
+ Focus type
+
+
+
+
+ Active type
+
+
+
+
+ Hover type
+
+
+
+
+ Target type
+
+
+
+
+ Default type
+
+
+
+
+ Selection type
+
+
+
+
+ Represents absolute-size values
+
+
+
+
+
+ xx-small type
+
+
+
+
+ x-small type
+
+
+
+
+ small type
+
+
+
+
+ medium type
+
+
+
+
+ large type
+
+
+
+
+ x-large type
+
+
+
+
+ xx-large type
+
+
+
+
+ xxx-large type
+
+
+
+
+ Represents align-content values.
+
+
+
+
+
+ Lines are packed toward the start of the flex container. The cross-start edge of the first line in the flex container is placed flush with the cross-start edge of the flex container, and each subsequent line is placed flush with the preceding line.
+
+
+
+
+ Lines are packed toward the end of the flex container. The cross-end edge of the last line is placed flush with the cross-end edge of the flex container, and each preceding line is placed flush with the subsequent line.
+
+
+
+
+ Lines are packed toward the center of the flex container. The lines in the flex container are placed flush with each other and aligned in the center of the flex container, with equal amounts of empty space between the cross-start content edge of the flex container and the first line in the flex container, and between the cross-end content edge of the flex container and the last line in the flex container. (If the leftover free-space is negative, the lines will overflow equally in both directions.)
+
+
+
+
+ Lines are evenly distributed in the flex container. If the leftover free-space is negative or there is only a single line in the flex container, this value is identical to ‘flex-start’. Otherwise, the cross-start edge of the first line in the flex container is placed flush with the cross-start content edge of the flex container, the cross-end edge of the last line in the flex container is placed flush with the cross-end content edge of the flex container, and the remaining lines in the flex container are distributed so that the empty space between any two adjacent lines is the same.
+
+
+
+
+ Lines are evenly distributed in the flex container, with half-size spaces on either end. If the leftover free-space is negative or there is only a single line in the flex container, this value is identical to ‘center’. Otherwise, the lines in the flex container are distributed such that the empty space between any two adjacent lines is the same, and the empty space before the first and after the last lines in the flex container are half the size of the other empty spaces.
+
+
+
+
+ Lines stretch to take up the remaining space. If the leftover free-space is negative, this value is identical to ‘flex-start’. Otherwise, the free-space is split equally between all of the lines, increasing their cross size.
+
+
+
+
+ Represents align-items values.
+
+
+
+
+
+ The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line.
+
+
+
+
+ The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line.
+
+
+
+
+ The flex item's margin box is centered in the cross axis within the line. (If the cross size of the flex line is less than that of the flex item, it will overflow equally in both directions.)
+
+
+
+
+ If the flex item's inline axis is the same as the cross axis, this value is identical to ‘flex-start’. Otherwise, it participates in baseline alignment: all participating flex items on the line are aligned such that their baselines align, and the item with the largest distance between its baseline and its cross-start margin edge is placed flush against the cross-start edge of the line.
+
+
+
+
+ If the cross size property of the flex item is ‘auto’, its used value is the length necessary to make the cross size of the item's margin box as close to the same size as the line as possible, while still respecting the constraints imposed by ‘min/max-width/height’.
+
+
+
+
+ Represents alignment-adjust types
+
+
+
+
+
+ For each glyph corresponding to textual information within the element, the alignment-point is the intersection of the start-edge of the glyph box and the block-progression-direction position of the alignment point from the font. Padding, border or margin do not affect that alignment point. The alignment point of the inline-level element itself is at the intersection of the start-edge of the first inline box and the baseline identified by the 'alignment-baseline' property if this baseline exists in the baseline-table for the element dominant-baseline. If that specific baseline does not exist, the user agent may use heuristics to determine where that missing baseline would be. For other inline box content like images, the user agent will use heuristics to determine the position of the alignment point. For example when the resulting baseline is 'alphabetic' or 'ideographic', it is expected that the alignment point will be at the intersection of the start-edge and the after-edge of the inline box, including its respective margin. If the resulting baseline is 'hanging', the intersection of the start-edge and the before-edge of the inline box, including its respective margin should be used instead. When the 'alignment-baseline' property is set to either 'after-edge' or 'before-edge', the 'alignment-adjust: auto' value is equivalent to 'after-edge' or 'before-edge' respectively.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the dominant-baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the before-edge of the extended inline box of the element. This may include or not the line-height of the element, depending on the line-stacking-strategy.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'text-before-edge' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'central' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'middle' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the after-edge of the extended inline box of the element. This may include or not the line-height of the element, depending on the line-stacking-strategy.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'text-after-edge' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'ideographic' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'alphabetic' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'hanging' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the start-edge of the element and the 'mathematical' baseline of the element.
+
+
+
+
+ Represents alignment-baseline types
+
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the dominant baseline of the parent.
+
+
+
+
+ If the element 'script' property value is 'auto', the alignment point of each glyph is aligned with the baseline-identifier of the script to which the glyph belongs. If the element 'script' property value is other than 'auto', the alignment point of each glyph is aligned with the baseline-identifier specified by the 'script' property. The baseline-identifier position is determined by using the relevant information related to the parent element dominant-baseline set. The alignment point of the element itself is aligned as for the 'baseline' value.
+
+
+
+
+ The alignment point of the box is aligned with the 'before-edge' baseline of the line box.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the 'text-before-edge' baseline of the parent.
+
+
+
+
+ The alignment point of the box is aligned with the 'after-edge' baseline of the line box.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the 'text-after-edge' baseline of the parent.
+
+
+
+
+ The alignment point of the box is aligned with the 'central' baseline of the parent.
+
+
+
+
+ The alignment point of the box is aligned with the 'middle' baseline of the parent.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the 'ideographic' baseline of the parent.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the lower baseline of the parent.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the hanging baseline of the parent.
+
+
+
+
+ The alignment-point of the element being aligned is aligned with the mathematical baseline of the parent.
+
+
+
+
+ Represents enumeration of the animation-direction types
+
+
+
+
+
+ All iterations of the animation are played as specified.
+
+
+
+
+ All iterations of the animation are played in the reverse direction from the way they were specified.
+
+
+
+
+ The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.
+
+
+
+
+ The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.
+
+
+
+
+ Represents enumeration of the animation-fill-mode types
+
+
+
+
+
+ None type.
+
+
+
+
+ Forwards type
+
+
+
+
+ Backwards type
+
+
+
+
+ Both type.
+
+
+
+
+ Represents enumeration of the animation-play-state types
+
+
+
+
+ Running type
+
+
+
+
+ Paused type.
+
+
+
+
+ Represents background-attachment values
+
+
+
+
+ scroll value.
+
+
+
+
+ fixed value.
+
+
+
+
+ Represents Azimuth values.
+
+
+
+
+
+ Same as '270deg'. With 'behind', '270deg'.
+
+
+
+
+ Same as '300deg'. With 'behind', '240deg'.
+
+
+
+
+ Same as '320deg'. With 'behind', '220deg'.
+
+
+
+
+ Same as '340deg'. With 'behind', '200deg'.
+
+
+
+
+ Same as '0deg'. With 'behind', '180deg'.
+
+
+
+
+ Same as '20deg'. With 'behind', '160deg'.
+
+
+
+
+ Same as '40deg'. With 'behind', '140deg'.
+
+
+
+
+ Same as '60deg'. With 'behind', '120deg'.
+
+
+
+
+ Same as '90deg'. With 'behind', '90deg'.
+
+
+
+
+ Moves the sound to the left, relative to the current angle. More precisely, subtracts 20 degrees. Arithmetic is carried out modulo 360 degrees. Note that 'leftwards' is more accurately described as "turned counter-clockwise," since it always subtracts 20 degrees, even if the inherited azimuth is already behind the listener (in which case the sound actually appears to move to the right).
+
+
+
+
+ Moves the sound to the right, relative to the current angle. More precisely, adds 20 degrees. See 'leftwards' for arithmetic.
+
+
+
+
+ Represents backface-visibility
+
+
+
+
+
+ Visible type.
+
+
+
+
+ Hidden type.
+
+
+
+
+ Represents background-position value
+
+
+
+
+ Equivalent to '0%' for the horizontal position.
+
+
+
+
+ Equivalent to '100%' for the horizontal position.
+
+
+
+
+ Equivalent to '0%' for the vertical position.
+
+
+
+
+ Equivalent to '100%' for the vertical position.
+
+
+
+
+ Equivalent to '50%' for the horizontal position if it is not otherwise given, or '50%' for the vertical position if it is.
+
+
+
+
+ Represents baseline-shift types
+
+
+
+
+
+ There is no baseline shift; the dominant baseline remains in its original position.
+
+
+
+
+ The dominant baseline is shifted to the default position for subscripts. The offset for this position is determined by the font data for the parent nominal font as adjusted by the dominant baseline-table font-size of the parent element. If there is no applicable font data the User Agent may use heuristic to determine the offset.
+
+
+
+
+ The dominant baseline is shifted to the default position for superscripts. The offset for this position is determined by the font data for the parent nominal font as adjusted by the dominant baseline-table font-size of the parent element. If there is no applicable font data the User Agent may use heuristic to determine the offset.
+
+
+
+
+ Represents bookmark-states
+
+
+
+
+
+ Open state.
+
+
+
+
+ Closed state
+
+
+
+
+ Represents border-collapse values.
+
+
+
+
+
+ Selects the collapsing borders model.
+
+
+
+
+ Selects the separated borders border model.
+
+
+
+
+ Represents border-image-repeat values
+
+
+
+
+
+ The image is stretched to fill the area.
+
+
+
+
+ The image is tiled (repeated) to fill the area.
+
+
+
+
+ The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.
+
+
+
+
+ The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.
+
+
+
+
+ Represents border-style values
+
+
+
+
+
+ No border; the computed border width is zero.
+
+
+
+
+ Same as 'none', except in terms of border conflict resolution for table elements.
+
+
+
+
+ The border is a series of dots.
+
+
+
+
+ The border is a series of short line segments.
+
+
+
+
+ The border is a single line segment.
+
+
+
+
+ The border is two solid lines. The sum of the two lines and the space between them equals the value of 'border-width'.
+
+
+
+
+ The border looks as though it were carved into the canvas.
+
+
+
+
+ The opposite of 'groove': the border looks as though it were coming out of the canvas.
+
+
+
+
+ /The border makes the box look as though it were embedded in the canvas.
+
+
+
+
+ The opposite of 'inset': the border makes the box look as though it were coming out of the canvas.
+
+
+
+
+ The interpretation of the first three values depends on the user agent. The following relationships must hold, however:
+ 'thin' <='medium' <= 'thick'.
+
+
+
+
+
+ A thin border.
+
+
+
+
+ A medium border.
+
+
+
+
+ A thick border.
+
+
+
+
+ Represents background positioning area
+
+
+
+
+
+ The background is painted within (clipped to) the border box.
+
+
+
+
+ The background is painted within (clipped to) the padding box.
+
+
+
+
+ The background is painted within (clipped to) the content box.
+
+
+
+
+ Represents box-sizing types
+
+
+
+
+
+ This is the behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element. The padding and border of the element are laid out and drawn outside the specified width and height.
+
+
+
+
+ The specified width and height (and respective min/max properties) on this element determine the padding box of the element. That is, any padding specified on the element is laid out and drawn inside this specified width and height. The content width and height are calculated by subtracting the padding widths of the respective sides from the specified ‘width’ and ‘height’ properties. As the content width and height cannot be negative ([CSS21], section 10.2), this computation is floored at 0.
+
+
+
+
+ The specified width and height (and respective min/max properties) on this element determine the border box of the element. That is, any padding or border specified on the element is laid out and drawn inside this specified width and height. The content width and height are calculated by subtracting the border and padding widths of the respective sides from the specified ‘width’ and ‘height’ properties. As the content width and height cannot be negative ([CSS21], section 10.2), this computation is floored at 0.
+
+
+
+
+ Represents an enumeration of the breaks
+
+
+
+
+
+ Neither force nor forbid a page/column break before (after, inside) the generated box.
+
+
+
+
+ Always force a page break before (after) the generated box.
+
+
+
+
+ Avoid a page/column break before (after, inside) the generated box.
+
+
+
+
+ Force one or two page breaks before (after) the generated box so that the next page is formatted as a left page.
+
+
+
+
+ Force one or two page breaks before (after) the generated box so that the next page is formatted as a right page.
+
+
+
+
+ Always force a page break before (after) the generated box.
+
+
+
+
+ Always force a column break before (after) the generated box.
+
+
+
+
+ Avoid a page break before (after, inside) the generated box.
+
+
+
+
+ Avoid a column break before (after, inside) the generated box.
+
+
+
+
+ Represents caption-side
+
+
+
+
+
+ Positions the caption box above the table box.
+
+
+
+
+ Positions the caption box below the table box.
+
+
+
+
+ Represents clear values
+
+
+
+
+
+ Requires that the top border edge of the box be below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document.
+
+
+
+
+ Requires that the top border edge of the box be below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document.
+
+
+
+
+ Requires that the top border edge of the box be below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document.
+
+
+
+
+ No constraint on the box's position with respect to floats.
+
+
+
+
+ Represents column-fill types
+
+
+
+
+
+ Balance content equally between columns, if possible.
+
+
+
+
+ Fills columns sequentially.
+
+
+
+
+ Represents enumeration of the column-span types
+
+
+
+
+
+ The element does not span multiple columns.
+
+
+
+
+ The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appears.
+
+
+
+
+ Represents enumeration of the unit types.
+
+
+
+
+
+ Number unit type.
+
+
+
+
+ Percentage unit type.
+
+
+
+
+ 1em is equal to the current font size. 2em means 2 times the size of the current font. E.g., if an element is displayed with a font of 12 pt, then '2em' is 24 pt. The 'em' is a very useful unit in CSS, since it can adapt automatically to the font that the reader uses
+
+
+
+
+ One ex is the x-height of a font (x-height is usually about half the font-size)
+
+
+
+
+ Pixels (a dot on the computer screen)
+
+
+
+
+ Centimeter unit type.
+
+
+
+
+ Millimeter unit type.
+
+
+
+
+ Inch unit type.
+
+
+
+
+ Point (1 pt is the same as 1/72 inch)
+
+
+
+
+ Pica (1 pc is the same as 12 points)
+
+
+
+
+ Degree unit type.
+
+
+
+
+ Radian unit type.
+
+
+
+
+ Grad unit type.
+
+
+
+
+ Milisecond unit type.
+
+
+
+
+ Second unit type.
+
+
+
+
+ Hertz unit type.
+
+
+
+
+ KHertz unit type.
+
+
+
+
+ Dots per inch
+
+
+
+
+ Dots per centimeter
+
+
+
+
+ Dots per ‘px’ unit
+
+
+
+
+ Represents enumeration of the cursor types
+
+
+
+
+
+ The UA determines the cursor to display based on the current context.
+
+
+
+
+ A simple crosshair (e.g., short line segments resembling a "+" sign).
+
+
+
+
+ The platform-dependent default cursor. Often rendered as an arrow.
+
+
+
+
+ The cursor is a pointer that indicates a link.
+
+
+
+
+ Indicates something is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicate that some edge is to be moved.
+
+
+
+
+ Indicates text that may be selected. Often rendered as an I-beam.
+
+
+
+
+ Indicates that the program is busy and the user should wait. Often rendered as a watch or hourglass.
+
+
+
+
+ A progress indicator. The program is performing some processing, but is different from 'wait' in that the user may still interact with the program. Often rendered as a spinning beach ball, or an arrow with a watch or hourglass.
+
+
+
+
+ Help is available for the object under the cursor. Often rendered as a question mark or a balloon.
+
+
+
+
+ The user agent retrieves the cursor from the resource designated by the URI
+
+
+
+
+ Represents enumeration of the directions.
+
+
+
+
+
+ Left-to-right direction.
+
+
+
+
+ Right-to-left direction.
+
+
+
+
+ Represents enumeration of the display types
+
+
+
+
+
+ This value causes an element to generate one or more inline boxes.
+
+
+
+
+ This value causes an element to generate a block box.
+
+
+
+
+ This value causes an element (e.g., LI in HTML) to generate a principal block box and a marker box.
+
+
+
+
+ This value causes an element to generate an inline-level block container. The inside of an inline-block is formatted as a block box, and the element itself is formatted as an atomic inline-level box.
+
+
+
+
+ Either block or inline boxes, depending on context
+
+
+
+
+ Either block boxes or a marker box, depending on context. Properties apply to compact boxes based on their final status.
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ This value cause an element to behave like a table element
+
+
+
+
+ Ruby display type
+
+
+
+
+ RubyBase display type
+
+
+
+
+ RubyText display type
+
+
+
+
+ RubyBaseGroup display type
+
+
+
+
+ RubyTextGroup display type
+
+
+
+
+ This value causes an element to not appear in the formatting structure (i.e., in visual media the element generates no boxes and has no effect on layout). Descendant elements do not generate any boxes either; the element and its content are removed from the formatting structure entirely. This behavior cannot be overridden by setting the 'display' property on the descendants.
+
+
+
+
+ Grid display type
+
+
+
+
+ InlineGrid display type
+
+
+
+
+ Represents dominant-baseline types
+
+
+
+
+
+ If this property occurs on a block or inline-block element, then the user agent behavior depends on the value of the 'script' property. If the value of the script property is 'auto, the 'auto' value is equivalent to 'alphabetic' for horizontal 'writing-mode' values and 'central' for vertical 'writing-mode' values. If the value of the script property is other than 'auto', the 'auto' value is equivalent to 'use-script' Otherwise, if this property occurs on an inline-level element, then the baseline-identifier and the baseline-table components remain the same as those of the parent element. The baseline-table font-size also remains the same as the parent's one, unless the computed 'baseline-shift' value actually shifts the baseline; then the baseline-table font-size is set to the value of the 'font-size' property on this element. If there is no parent element, the dominant-baseline components are set as for the block elements.
+
+
+
+
+ The dominant baseline-identifier is set using the computed value of the 'script' property. The 'writing-mode' value, whether horizontal or vertical is used to select the baseline-table that correspond to that baseline-identifier. The baseline-table font-size component is set to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier, the baseline-table and the baseline-table font-size remain the same as that of the parent.
+
+
+
+
+ The dominant baseline-identifier and the baseline table remain the same, but the baseline-table font-size is changed to the value of the 'font-size' property on this element. This re-scales the baseline table for the current 'font-size'.
+
+
+
+
+ The dominant baseline-identifier is set to the 'alphabetic' baseline, the derived baseline-table is constructed using the 'alphabetic' baseline-table in the nominal font, and the baseline-table font-size is changed to the value of the 'font-size' property on this element. (The 'alphabetic' baseline is the standard baseline for Roman scripts.)
+
+
+
+
+ The dominant baseline-identifier is set to the 'hanging' baseline, the derived baseline- table is constructed using the 'hanging' baseline-table in the nominal font, and the baseline-table font-size is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to the 'ideographic' baseline, the derived baseline- table is constructed using the 'ideographic' baseline-table in the nominal font, and the baseline-table font-size is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to the 'mathematical' baseline, the derived baseline- table is constructed using the 'mathematical' baseline-table in the nominal font, and the baseline-table font-size is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to be 'central'. The derived baseline-table is constructed from the defined baselines in a baseline-table in the nominal font. That font baseline-table is chosen using the following priority order of baseline-table names: 'ideographic', 'alphabetic', 'hanging' and 'mathematical'. The baseline-table is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to be 'middle'. The derived baseline-table is constructed from the defined baselines in a baseline-table in the nominal font. That font baseline-table is chosen using the following priority order of baseline-table names: 'alphabetic', 'ideographic', 'hanging' and 'mathematical'. The baseline-table is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to be 'text-after-edge'. The derived baseline-table is constructed from the defined baselines in a baseline-table in the nominal font. That font baseline-table is chosen using the following priority order of baseline-table names: 'alphabetic', 'ideographic', 'hanging' and 'mathematical'. The baseline-table is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ The dominant baseline-identifier is set to be 'text-before-edge'. The derived baseline-table is constructed from the defined baselines in a baseline-table in the nominal font. That font baseline-table is chosen using the following priority order of baseline-table names: 'alphabetic', 'ideographic', 'hanging' and 'mathematical'. The baseline-table is changed to the value of the 'font-size' property on this element.
+
+
+
+
+ Represents drop-initial-after-adjust values
+
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'central' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'middle' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'after-edge' of the extended inline box of the element. This may include or not the line-height of the element, depending on the line-stacking-strategy.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'text-after-edge' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'ideographic' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'alphabetic' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'hanging' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'mathematical' baseline of the element.
+
+
+
+
+ Represents drop-initial-before-adjust values
+
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'before-edge' of the extended inline box of the element. This may include or not the line-height of the element, depending on the line-stacking-strategy.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'text-before-edge' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'central' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'middle' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'hanging' baseline of the element.
+
+
+
+
+ The alignment point is at the intersection of the end-edge of the element and the 'mathematical' baseline of the element.
+
+
+
+
+ Represents enumeration of the elevations.
+
+
+
+
+
+ Same as '-90deg'.
+
+
+
+
+ Same as '0deg'.
+
+
+
+
+ Same as '90deg'.
+
+
+
+
+ Adds 10 degrees to the current elevation.
+
+
+
+
+ Subtracts 10 degrees from the current elevation.
+
+
+
+
+ Represents enumeration of the empty-cells
+
+
+
+
+
+ Show empty cells
+
+
+
+
+ Hide empty cells
+
+
+
+
+ Represents fit values.
+
+
+
+
+
+ Scale the object's height and width independently so that the content just touches all edges of the containing box.
+
+
+
+
+ Do not scale the object.
+
+
+
+
+ Make the object as large as possible with its width = 'width' and height = 'height', while preserving its aspect ratio. Position the object as for the 'hidden' value.
+
+
+
+
+ Make the object as small as possible with its width >= 'width' and height >= 'height', while preserving its aspect ratio. Position the object as for the 'hidden' value.
+
+
+
+
+ Represents flex-direction values.
+
+
+
+
+
+ The flex container's main axis has the same orientation as the inline axis of the current writing mode (the primary direction that text is laid out in). The main-start and main-end directions are equivalent to the start and end directions, respectively, of the current writing mode.
+
+
+
+
+ Same as ‘row’, except the main-start and main-end directions are swapped.
+
+
+
+
+ The flex container's main axis has the same orientation as the block axis of the current writing mode (the primary direction that blocks are laid out in). The main-start and main-end directions are equivalent to the before and after directions, respectively, of the current writing mode.
+
+
+
+
+ Same as ‘column’, except the main-start and main-end directions are swapped.
+
+
+
+
+ Represents flex-wrap values.
+
+
+
+
+
+ The flex container is single-line. The cross-start direction is equivalent to either the start or before direction of the current writing mode, whichever is in the cross axis, and the cross-end direction is the opposite direction of cross-start.
+
+
+
+
+ The flex container is multi-line. The cross-start direction is equivalent to either the start or before direction of the current writing mode, whichever is in the cross axis, and the cross-end direction is the opposite direction of cross-start.
+
+
+
+
+ Same as ‘wrap’, except the cross-start and cross-end directions are swapped.
+
+
+
+
+ Represents enumeration of the float types.
+
+
+
+
+
+ The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property).
+
+
+
+
+ Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top.
+
+
+
+
+ The box is not floated.
+
+
+
+
+ Represents font-stretch values
+
+
+
+
+
+ Normal type.
+
+
+
+
+ UltraCondensed type
+
+
+
+
+ ExtraCondensed type
+
+
+
+
+ Condensed type
+
+
+
+
+ SemiCondensed type
+
+
+
+
+ SemiExpanded type
+
+
+
+
+ Expanded type
+
+
+
+
+ ExtraExpanded type
+
+
+
+
+ UltraExpanded type
+
+
+
+
+ Represents enumeration of the font-styles
+
+
+
+
+
+ Normal style
+
+
+
+
+ Italic style
+
+
+
+
+ Oblique style
+
+
+
+
+ Represent font variants
+
+
+
+
+
+ Normal font variants
+
+
+
+
+ SmallCaps font variants
+
+
+
+
+ Represents font-variant-alternates values
+
+
+
+
+
+ Normal type.
+
+
+
+
+ Stylistic type
+
+
+
+
+ HistoricalForms type
+
+
+
+
+ Styleset type
+
+
+
+
+ CharacterVariant type
+
+
+
+
+ Swash type
+
+
+
+
+ Ornaments type
+
+
+
+
+ Annotation type
+
+
+
+
+ Represents font-variant-caps.
+
+
+
+
+
+ None of the features listed below are enabled.
+
+
+
+
+ Enables display of small capitals (OpenType feature: smcp). Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters.
+
+
+
+
+ Enables display of small capitals for both upper and lowercase letters (OpenType features: c2sc, smcp).
+
+
+
+
+ Enables display of petite capitals (OpenType feature: pcap).
+
+
+
+
+ Enables display of petite capitals for both upper and lowercase letters (OpenType features: c2pc, pcap).
+
+
+
+
+ Enables display of titling capitals (OpenType feature: titl). Uppercase letter glyphs are often designed for use with lowercase letters. When used in all uppercase titling sequences they can appear too strong. Titling capitals are designed specifically for this situation.
+
+
+
+
+ Enables display of mixture of small capitals for uppercase letters with normal lowercase letters (OpenType feature: unic).
+
+
+
+
+ Represents font-variant-east-asian.
+
+
+
+
+
+ None of the features listed below are enabled.
+
+
+
+
+ Enables rendering of Jis78 forms (OpenType feature: jp78).
+
+
+
+
+ Enables rendering of Jis83 forms (OpenType feature: jp83).
+
+
+
+
+ Enables rendering of Jis90 forms (OpenType feature: jp90).
+
+
+
+
+ Enables rendering of JIS2004 forms (OpenType feature: jp04).
+
+
+
+
+ Enables rendering of simplified forms (OpenType feature: smpl).
+
+
+
+
+ Enables rendering of traditional forms (OpenType feature: trad).
+
+
+
+
+ Enables rendering of full-width variants (OpenType feature: fwid).
+
+
+
+
+ Enables rendering of proportionally-spaced variants (OpenType feature: pwid).
+
+
+
+
+ Enables display of ruby variant glyphs (OpenType feature: ruby). Since ruby text is generally smaller than the associated body text, font designers can design special glyphs for use with ruby that are more readable than scaled down versions of the default glyphs. Only glyph selection is affected, there is no associated font scaling or other change that affects line layout. The red ruby text below is shown with default glyphs (top) and with ruby variant glyphs (bottom). Note the slight difference in stroke thickness.
+
+
+
+
+ Represents font-variant-ligatures.
+
+
+
+
+
+ A value of ‘normal’ implies that common default features are enabled
+
+
+
+
+ A value of ‘none’ implies that all types of ligatures and contextual forms covered by this property are explicitly disabled
+
+
+
+
+ Enables display of common ligatures (OpenType features: liga, clig). For OpenType fonts, common ligatures are enabled by default.
+
+
+
+
+ Disables display of common ligatures (OpenType features: liga, clig).
+
+
+
+
+ Enables display of discretionary ligatures (OpenType feature: dlig). Which ligatures are discretionary, or optional, is decided by the type designer so authors will need to refer to the documentation of a given font to understand which ligatures are considered discretionary.
+
+
+
+
+ Disables display of discretionary ligatures (OpenType feature: dlig).
+
+
+
+
+ Enables display of historical ligatures (OpenType feature: hlig).
+
+
+
+
+ Disables display of historical ligatures (OpenType feature: hlig).
+
+
+
+
+ Enables display of contextual alternates (OpenType feature: calt). Although not strictly a ligature feature, like ligatures this feature is commonly used to harmonize the shapes of glyphs with the surrounding context. For OpenType fonts, this feature is on by default.
+
+
+
+
+ Disables display of contextual alternates (OpenType feature: calt).
+
+
+
+
+ Represents font-variant-numeric
+
+
+
+
+
+ None of the features listed below are enabled.
+
+
+
+
+ Enables display of lining numerals (OpenType feature: lnum).
+
+
+
+
+ Enables display of old-style numerals (OpenType feature: onum).
+
+
+
+
+ Enables display of proportional numerals (OpenType feature: pnum).
+
+
+
+
+ Enables display of tabular numerals (OpenType feature: tnum).
+
+
+
+
+ Enables display of lining diagonal fractions (OpenType feature: frac).
+
+
+
+
+ Enables display of lining stacked fractions (OpenType feature: afrc).
+
+
+
+
+ Enables display of forms used with ordinal numbers (OpenType feature: ordn).
+
+
+
+
+ Enables display of slashed zeros (OpenType feature: zero).
+
+
+
+
+ Represents font-variant-position.
+
+
+
+
+ Normal type.
+
+
+
+
+ The sub type.
+
+
+
+
+ Super type
+
+
+
+
+ Represents font weights
+
+
+
+
+
+ Normal font weight.
+
+
+
+
+ Bold font weight.
+
+
+
+
+ Bolder font weight.
+
+
+
+
+ Lighter font weight.
+
+
+
+
+ Represents generic voices
+
+
+
+
+
+ Male voice.
+
+
+
+
+ Female voice.
+
+
+
+
+ Child voice.
+
+
+
+
+ Represents gradient direction values.
+
+
+
+
+
+ To top left direction.
+
+
+
+
+ To top right direction.
+
+
+
+
+ To bottom left direction.
+
+
+
+
+ To bottom right direction.
+
+
+
+
+ Angle value should be specified separately.
+
+
+
+
+ Represents grid-align values
+
+
+
+
+
+ Aligns the starting edge of the Grid item’s margin box to the starting edge of the Grid item’s column.
+
+
+
+
+ Aligns the end edge of the Grid item’s margin box to the end edge of the Grid item’s column.
+
+
+
+
+ Places the center of the Grid item’s margin box at the center of the the Grid item’s column.
+
+
+
+
+ Ensures that the Grid item’s margin box is equal to the size of the Grid item’s column.
+
+
+
+
+ Represents grid-flow values
+
+
+
+
+
+ None type.
+
+
+
+
+ Rows type.
+
+
+
+
+ Columns type
+
+
+
+
+ Represents an enumeration of the hanging-punctuation types
+
+
+
+
+
+ No characters can hang.
+
+
+
+
+ An opening bracket or quote at the start of the first formatted line of an element hangs. This applies to all characters in the Unicode categories Ps, Pf, Pi.
+
+
+
+
+ A closing bracket or quote at the end of the last formatted line of an element hangs. This applies to all characters in the Unicode categories Pe, Pf, Pi.
+
+
+
+
+ A stop or comma at the end of a line hangs.
+
+
+
+
+ A stop or comma at the end of a line hangs if it does not otherwise fit prior to justification.
+
+
+
+
+ Represents an enumeration of the hyphens types
+
+
+
+
+
+ Words are not broken at line breaks, even if characters inside the word suggest line break points.
+
+
+
+
+ Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities. Characters can be explicit or conditional.
+
+
+
+
+ Words can be broken at appropriate hyphenation points either as determined by hyphenation characters inside the word or as determined automatically by a language-appropriate hyphenation resource. Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word.
+
+
+
+
+ Represents an enumeration of the ime-mode
+
+
+
+
+
+ No change is made to the current input method editor state. This is the default.
+
+
+
+
+ The IME state should be normal; this value can be used in a user style sheet to override the page setting.
+
+
+
+
+ The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it.
+
+
+
+
+ The input method editor is initially inactive, but the user may activate it if they wish.
+
+
+
+
+ The input method editor is disabled and may not be activated by the user.
+
+
+
+
+ Represents justify-content values.
+
+
+
+
+
+ Flex items are packed toward the start of the line. The main-start margin edge of the first flex item on the line is placed flush with the main-start edge of the line, and each subsequent flex item is placed flush with the preceding item.
+
+
+
+
+ Flex items are packed toward the end of the line. The main-end margin edge of the last flex item is placed flush with the main-end edge of the line, and each preceding flex item is placed flush with the subsequent item.
+
+
+
+
+ Flex items are packed toward the center of the line. The flex items on the line are placed flush with each other and aligned in the center of the line, with equal amounts of empty space between the main-start edge of the line and the first item on the line and between the main-end edge of the line and the last item on the line. (If the leftover free-space is negative, the flex items will overflow equally in both directions.)
+
+
+
+
+ Flex items are evenly distributed in the line. If the leftover free-space is negative or there is only a single flex item on the line, this value is identical to ‘flex-start’. Otherwise, the main-start margin edge of the first flex item on the line is placed flush with the main-start edge of the line, the main-end margin edge of the last flex item on the line is placed flush with the main-end edge of the line, and the remaining flex items on the line are distributed so that the empty space between any two adjacent items is the same.
+
+
+
+
+ Flex items are evenly distributed in the line, with half-size spaces on either end. If the leftover free-space is negative o r there is only a single flex item on the line, this value is identical to ‘center’. Otherwise, the flex items on the line are distributed such that the empty space between any two adjacent flex items on the line is the same, and the empty space before the first and after the last flex items on the line are half the size of the other empty spaces.
+
+
+
+
+ Represents an enumeration of the line-break types
+
+
+
+
+
+ The UA determines the set of line-breaking restrictions to use, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines.
+
+
+
+
+ Breaks text using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers.
+
+
+
+
+ Breaks text using the most common set of line-breaking rules.
+
+
+
+
+ Breaks text using the most stringent set of line-breaking rules.
+
+
+
+
+ Represents line-stacking-ruby types
+
+
+
+
+
+ The ruby annotation elements are ignored for line stacking.
+
+
+
+
+ The ruby annotation elements are considered for line stacking.
+
+
+
+
+ Represents line-stacking-shift types
+
+
+
+
+
+ In determining the stack-height, include the adjusted top-edge and bottom-edge of any characters that have a baseline-shift.
+
+
+
+
+ In determining the stack-height, include the unshifted top-edge and bottom-edge of any characters that have a baseline-shift.
+
+
+
+
+ Represents line-stacking-strategy types
+
+
+
+
+
+ The stack-height is the smallest value that contains the extended block progression dimension of all the inline elements on that line when those elements are properly aligned. Since the line spacing information is already included in the computation of the line box, these line boxes are simply stacked adjacent to one another in the formatted block to which they belong. The 'line-height' property value is taken into account for both the inline elements and the block elements. For inline elements, it defines the extended block progression dimension. For block elements, it defines the minimum extended block progression dimension.
+
+
+
+
+ The stack-height is determined by the block element 'line-height' property value. The 'line-height' property value is ignored for inline elements. For alignment purpose, this case is similar to the minimum extended block progression dimension case (strut model). This is the only line-stacking strategy that may cause inline boxes within the line to bleed before and after the line box because the line box is not constrained by its inline boxes.
+
+
+
+
+ The stack-height is the smallest value that contains the block progression dimension of all the inline elements on that line when those elements are properly aligned. The 'line-height' property value is taken into account only for the block elements.
+
+
+
+
+ The stack-height is the smallest multiple of the block element 'line-height' computed value that can contain the block progression of all the inline elements on that line when those elements are properly aligned. The 'line-height' property value is ignored for inline elements.
+
+
+
+
+ Represents list-style-position types
+
+
+
+
+
+ The marker box is outside the principal block box. The position of the list-item marker adjacent to floats is undefined in CSS 2.1. CSS 2.1 does not specify the precise location of the marker box or its position in the painting order, but does require that for list items whose 'direction' property is 'ltr' the marker box be on the left side of the content and for elements whose 'direction' property is 'rtl' the marker box be on the right side of the content. The marker box is fixed with respect to the principal block box's border and does not scroll with the principal block box's content. In CSS 2.1, a UA may hide the marker if the element's 'overflow' is other than 'visible'. (This is expected to change in the future.) The size or contents of the marker box may affect the height of the principal block box and/or the height of its first line box, and in some cases may cause the creation of a new line box. Note: This interaction may be more precisely defined in a future level of CSS.
+
+
+
+
+ The marker box is placed as the first inline box in the principal block box, before the element's content and before any :before pseudo-elements. CSS 2.1 does not specify the precise location of the marker box.
+
+
+
+
+ Represents enumeration of the list-style types
+
+
+
+
+
+ Disc type.
+
+
+
+
+ Cicrle type
+
+
+
+
+ Square type
+
+
+
+
+ Decimal numbers, beginning with 1.
+
+
+
+
+ Decimal numbers padded by initial zeros (e.g., 01, 02, 03, ..., 98, 99).
+
+
+
+
+ Lowercase roman numerals (i, ii, iii, iv, v, etc.).
+
+
+
+
+ Uppercase roman numerals (I, II, III, IV, V, etc.).
+
+
+
+
+ Lowercase classical Greek alpha, beta, gamma, ... (α, β, γ, ...)
+
+
+
+
+ Lowercase ascii letters (a, b, c, ... z).
+
+
+
+
+ Uppercase ascii letters (A, B, C, ... Z).
+
+
+
+
+ Traditional uppercase Armenian numbering.
+
+
+
+
+ Traditional Georgian numbering (an, ban, gan, ..., he, tan, in, in-an, ...).
+
+
+
+
+ Lowercase ascii letters (a, b, c, ... z).
+
+
+
+
+ Uppercase ascii letters (A, B, C, ... Z).
+
+
+
+
+ None type.
+
+
+
+
+ Represents margin boxes.
+
+
+
+
+
+ A fixed-size box defined by the intersection of the top and left margins of the page box
+
+
+
+
+ A variable-width box filling the top page margin between the top-left-corner and top-center margin boxes
+
+
+
+
+ A variable-width box centered horizontally between the page's left and right border edges and filling the page top margin between the top-left and top-right margin boxes
+
+
+
+
+ A variable-width box filling the top page margin between the top-center and top-right-corner margin boxes
+
+
+
+
+ A fixed-size box defined by the intersection of the top and right margins of the page box
+
+
+
+
+ A fixed-size box defined by the intersection of the bottom and left margins of the page box
+
+
+
+
+ A variable-width box filling the bottom page margin between the bottom-left-corner and bottom-center margin boxes
+
+
+
+
+ A variable-width box centered horizontally between the page's left and right border edges and filling the bottom page margin between the bottom-left and bottom-right margin boxes
+
+
+
+
+ A variable-width box filling the bottom page margin between the bottom-center and bottom-right-corner margin boxes
+
+
+
+
+ A fixed-size box defined by the intersection of the bottom and right margins of the page box
+
+
+
+
+ A variable-height box filling the left page margin between the top-left-corner and left-middle margin boxes
+
+
+
+
+ A variable-height box centered vertically between the page's top and bottom border edges and filling the left page margin between the left-top and left-bottom margin boxes
+
+
+
+
+ A variable-height box filling the left page margin between the left-middle and bottom-left-corner margin boxes
+
+
+
+
+ A variable-height box filling the right page margin between the top-right-corner and right-middle margin boxes
+
+
+
+
+ A variable-height box centered vertically between the page's top and bottom border edges and filling the right page margin between the right-top and right-bottom margin boxes
+
+
+
+
+ A variable-height box filling the right page margin between the right-middle and bottom-right-corner margin boxes
+
+
+
+
+ Represents marks
+
+
+
+
+
+ Crop type.
+
+
+
+
+ Cross type.
+
+
+
+
+ None type.
+
+
+
+
+ Represents enumeration of the marquee-direction types
+
+
+
+
+
+ Reverse direction.
+
+
+
+
+ Forward direction.
+
+
+
+
+ Represents enumeration of the marquee-speed types
+
+
+
+
+
+ Slow speed
+
+
+
+
+ Normal speed
+
+
+
+
+ Fast speed
+
+
+
+
+ Represents enumeration of the marquee-style types
+
+
+
+
+ Start completely off one side, scroll all the way across and completely off.
+
+
+
+
+ Start completely off one side, scroll in, and stop as soon as no more content is off that side.
+
+
+
+
+ Start with all overflow on one side, then scroll until there is no more overflow on that side. For the next loop, start with content overflowing on the other side (i.e., where the previous loop ended).
+
+
+
+
+ Represents an enumeration of the MediaTypes
+
+
+
+
+
+ Provides no media type.
+
+
+
+
+ Suitable for all devices.
+
+
+
+
+ Intended for braille tactile feedback devices.
+
+
+
+
+ Intended for paged braille printers.
+
+
+
+
+ Intended for handheld devices (typically small screen, limited bandwidth).
+
+
+
+
+ Intended for paged material and for documents viewed on screen in print preview mode. Please consult the section on paged media for information about formatting issues that are specific to paged media.
+
+
+
+
+ Intended for projected presentations, for example projectors. Please consult the section on paged media for information about formatting issues that are specific to paged media.
+
+
+
+
+ Intended primarily for color computer screens.
+
+
+
+
+ Intended for speech synthesizers. Note: CSS2 had a similar media type called 'aural' for this purpose. See the appendix on aural style sheets for details.
+
+
+
+
+ Intended for media using a fixed-pitch character grid (such as teletypes, terminals, or portable devices with limited display capabilities). Authors should not use pixel units with the "tty" media type.
+
+
+
+
+ Intended for television-type devices (low resolution, color, limited-scrollability screens, sound available).
+
+
+
+
+ Represents enumeration of object-fit types.
+
+
+
+
+
+ The replaced content is sized to fill the element's content box: the object's concrete object size is the element's used width and height.
+
+
+
+
+ The replaced content is sized to maintain its aspect ratio while fitting within the element's content box: its concrete object size is resolved as a contain constraint against the element's used width and height.
+
+
+
+
+ The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element's used width and height.
+
+
+
+
+ The replaced content is not resized to fit inside the element's content box: determine the object's concrete object size using the default sizing algorithm with no specified size, and a default object size equal to the replaced element's used width and height.
+
+
+
+
+ Size the content as if ‘none’ or ‘contain’ were specified, whichever would result in a smaller concrete object size.
+
+
+
+
+ Represents an enumeration of the overflows
+
+
+
+
+
+ This value indicates that content is not clipped, i.e., it may be rendered outside the block box.
+
+
+
+
+ This value indicates that the content is clipped and that no scrolling user interface should be provided to view the content outside the clipping region.
+
+
+
+
+ This value indicates that the content is clipped and that if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped. This avoids any problem with scrollbars appearing and disappearing in a dynamic environment. When this value is specified and the target medium is 'print', overflowing content may be printed.
+
+
+
+
+ The behavior of the 'auto' value is user agent-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes.
+
+
+
+
+ Represents an enumeration of the overflow-styles
+
+
+
+
+
+ Scrollbars are typically narrow strips inserted on one or two edges of an element and which often have arrows to click on and a “thumb” to drag up and down (or left and right) to move the contents of the element.
+
+
+
+
+ A panner is typically a rectangle shown in one corner of the element, with a smaller rectangle inside. The larger rectangle represents all the available content of the element and the smaller one the visible part. The smaller rectangle can be moved around by the user to move the content of the element accordingly.
+
+
+
+
+ The value ‘move’ refers to a method where the user can move the content of the element directly (rather than indirectly by moving a scrollbar or a panner). Typically, the mouse pointer changes into a hand or a cross of four arrows to indicate that the user can drag the content around with the mouse. Sometimes the user needs to explicitly activate the move mode and in that case he often can use both dragging (with the mouse) and key events to move the content.
+
+
+
+
+ The marquee effect (value ‘marquee’) consists of the content moving autonomously, without any user events to control it. A user who waits long enough will eventually see all the content that overflows.
+
+
+
+
+ Represents an enumeration of the overflow-wrap types
+
+
+
+
+
+ Lines may break only at allowed break points. However, the restrictions introduced by ‘word-break: keep-all’ may be relaxed to match ‘word-break: normal’ and the various hyphenation limit properties may be ignored if there are no otherwise-acceptable break points in the line.
+
+
+
+
+ An unbreakable "word" may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line. Shaping characters are still shaped as if the word were not broken, and grapheme clusters must together stay as one unit. No hyphenation character is inserted at the break point.
+
+
+
+
+ Represents an enumeration of the page breaks
+
+
+
+
+
+ Neither force nor forbid a page break before (after, inside) the generated box.
+
+
+
+
+ Always force a page break before (after) the generated box.
+
+
+
+
+ Avoid a page break before (after, inside) the generated box.
+
+
+
+
+ Force one or two page breaks before (after) the generated box so that the next page is formatted as a left page.
+
+
+
+
+ Force one or two page breaks before (after) the generated box so that the next page is formatted as a right page.
+
+
+
+
+ Represents page-orientation.
+
+
+
+
+
+ The page box will be set to the size and orientation of the page sheet chosen by the UA.
+
+
+
+
+ Specifies that the page's content be printed in landscape orientation. The page box is the same size as the page, and the longer sides are horizontal. If a 'length' or 'page-size' is not specified, the size of the page sheet is chosen by the UA.
+
+
+
+
+ Specifies that the page's content be printed in portrait orientation. The page box is the same size as the page, and the shorter sides are horizontal. If a 'length' or 'page-size' is not specified, the size of the page sheet is chosen by the UA.
+
+
+
+
+ Represents an enumeration of the page-policy
+
+
+
+
+
+ Takes the value of the counter or string at the beginning of the page (before applying style to the elements of the page, but after applying it to the @page context itself).
+
+
+
+
+ Takes the value after the first state change in the counter or string during processing of the page.
+
+
+
+
+ Takes the value following the final state change on the page.
+
+
+
+
+ Represents page-size.
+
+
+
+
+
+ The page box should be set to the size of ISO A5 media: 148mm wide and 210 mm high.
+
+
+
+
+ The page box should be set to the size of IS0 A4 media: 210 mm wide and 297 mm high.
+
+
+
+
+ The page box should be set to the size of ISO A3 media: 297mm wide and 420mm high.
+
+
+
+
+ The page box should be set to the size of ISO B3 media: 176mm wide by 250mm high.
+
+
+
+
+ The page box should be set to the size of ISO B4 media: 250mm wide by 353mm high.
+
+
+
+
+ The page box should be set to the size of North American letter media: 8.5 inches wide and 11 inches high
+
+
+
+
+ The page box should be set to the size of North American legal: 8.5 inches wide by 14 inches high.
+
+
+
+
+ The page box should be set to the size of North American ledger: 11 inches wide by 17 inches high.
+
+
+
+
+ Represents enumeration of the pitch types
+
+
+
+
+
+ x-low type.
+
+
+
+
+ The low type.
+
+
+
+
+ medium type.
+
+
+
+
+ high type.
+
+
+
+
+ x-high type.
+
+
+
+
+ Represents an enumeration of the position types
+
+
+
+
+
+ The box is a normal box, laid out according to the normal flow. The 'top', 'right', 'bottom', and 'left' properties do not apply.
+
+
+
+
+ The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position. When a box B is relatively positioned, the position of the following box is calculated as though B were not offset. The effect of 'position:relative' on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined.
+
+
+
+
+ The box's position (and possibly size) is specified with the 'top', 'right', 'bottom', and 'left' properties. These properties specify offsets with respect to the box's containing block. Absolutely positioned boxes are taken out of the normal flow. This means they have no impact on the layout of later siblings. Also, though absolutely positioned boxes have margins, they do not collapse with any other margins.
+
+
+
+
+ The box's position is calculated according to the 'absolute' model, but in addition, the box is fixed with respect to some reference. As with the 'absolute' model, the box's margins do not collapse with any other margins. In the case of handheld, projection, screen, tty, and tv media types, the box is fixed with respect to the viewport and does not move when scrolled. In the case of the print media type, the box is rendered on every page, and is fixed with respect to the page box, even if the page is seen through a viewport (in the case of a print-preview, for example). For other media types, the presentation is undefined. Authors may wish to specify 'fixed' in a media-dependent way. For instance, an author may want a box to remain at the top of the viewport on the screen, but not at the top of each printed page. The two specifications may be separated by using an @media rule, as in:
+
+
+
+
+ Represents an enumeration of refer to system fonts
+
+
+
+
+
+ The font used for captioned controls (e.g., buttons, drop-downs, etc.).
+
+
+
+
+ The font used to label icons.
+
+
+
+
+ The font used in menus (e.g., dropdown menus and menu lists).
+
+
+
+
+ The font used in dialog boxes.
+
+
+
+
+ The font used for labeling small controls.
+
+
+
+
+ The font used in window status bars.
+
+
+
+
+ Represents an enumeration of the relative-font-size
+
+
+
+
+
+ Larger size
+
+
+
+
+ Smaller size
+
+
+
+
+ Represents an enumeration of the repeat types
+
+
+
+
+
+ Repeat-X type.
+
+
+
+
+ Repeat-Y type.
+
+
+
+
+ Repeat type.
+
+
+
+
+ No-Repeat type.
+
+
+
+
+ Represents an enumeration of the resize
+
+
+
+
+
+ The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element.
+
+
+
+
+ The UA presents a bidirectional resizing mechanism to allow the user to adjust both the height and the width of the element.
+
+
+
+
+ The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element.
+
+
+
+
+ The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element.
+
+
+
+
+ Represents rest types
+
+
+
+
+
+ XWeak type
+
+
+
+
+ Weak type.
+
+
+
+
+ Medium type
+
+
+
+
+ Strong type
+
+
+
+
+ XStrong type
+
+
+
+
+ Represents enumeration of ruby-align types.
+
+
+
+
+
+ The user agent determines how the ruby contents are aligned. This is the initial value. The behavior recommended by [JLREQ] is for wide-cell ruby to be aligned in the 'distribute-space' mode:
+
+
+
+
+ The ruby text content is aligned with the start edge of the base.
+
+
+
+
+ The ruby text content is centered within the width of the base. If the length of the base is smaller than the length of the ruby text, then the base is centered within the width of the ruby text.
+
+
+
+
+ The ruby text content is aligned with the end edge of the base.
+
+
+
+
+ If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text.
+
+
+
+
+ If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text. If the width of the ruby text is at least the width of the base, then the same type of space distribution applies to the base. In other words, if the base is shorter than the ruby text, the base is distribute-space aligned. This type of alignment is described by [JLREQ].
+
+
+
+
+ If the ruby text is not adjacent to a line edge, it is aligned as in 'auto'. If it is adjacent to a line edge, then it is still aligned as in auto, but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base. This type of alignment is described by [JLREQ]. This type of alignment is relevant only to the scenario where the ruby text is longer than the ruby base. In the other scenarios, this is just 'auto'.
+
+
+
+
+ Represents enumeration of ruby-overhang types.
+
+
+
+
+
+ The ruby text can overhang text adjacent to the base on either side. [JLREQ] and [JIS4051] specify the categories of characters that ruby text can overhang. The user agent is free to follow those recommendations or specify its own classes of characters to overhang. This is the initial value.
+
+
+
+
+ The ruby text can only overhang the text that precedes it. That means, for example, that ruby cannot overhang text that is to the right of it in horizontal Ltr layout, and it cannot overhang text that is below it in vertical-ideographic layout.
+
+
+
+
+ The ruby text can only overhang the text that follows it. That means, for example, that ruby cannot overhang text that is to the left of it in horizontal Ltr layout, and it cannot overhang text that is above it in vertical-ideographic layout.
+
+
+
+
+ The ruby text cannot overhang any text adjacent to its base, only its own base.
+
+
+
+
+ Represents enumeration of ruby-position types.
+
+
+
+
+
+ The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems. This is the initial value.
+
+
+
+
+ The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most easily found in educational text.
+
+
+
+
+ Issue We replaced 'right' with 'inter-character', since that was its original intended purpose and such removes potential ambiguity with 'inline' or 'before'. Bopomofo ruby needs special handling by the implementation, if ruby is to always appear to the right. (Note that the user may also choose to position bopomofo ruby before the base, in which case they would use the normal 'before' setting.) See this thread following a request from the i18n WG.
+
+
+
+
+ Ruby text follows the ruby base with no special styling. The value can be used to disable ruby text positioning.
+
+
+
+
+ Represents an enumeration of the speak types
+
+
+
+
+
+ Suppresses aural rendering so that the element requires no time to render. Note, however, that descendants may override this value and will be spoken. (To be sure to suppress rendering of an element and its descendants, use the 'display' property).
+
+
+
+
+ Uses language-dependent pronunciation rules for rendering an element and its children.
+
+
+
+
+ Spells the text one letter at a time (useful for acronyms and abbreviations).
+
+
+
+
+ Represents speak-as types
+
+
+
+
+
+ Uses language-dependent pronunciation rules for rendering the element's content. For example, punctuation is not spoken as-is, but instead rendered naturally as appropriate pauses.
+
+
+
+
+ Spells the text one letter at a time (useful for acronyms and abbreviations). In languages where accented characters are rare, it is permitted to drop accents in favor of alternative unaccented spellings. As as example, in English, the word "rôle" can also be written as "role". A conforming implementation would thus be able to spell-out "rôle" as "R O L E".
+
+
+
+
+ Speak numbers one digit at a time, for instance, "twelve" would be spoken as "one two", and "31" as "three one".
+
+
+
+
+ Punctuation such as semicolons, braces, and so on is named aloud (i.e. spoken literally) rather than rendered naturally as appropriate pauses.
+
+
+
+
+ Punctuation is not rendered: neither spoken nor rendered as pauses.
+
+
+
+
+ Represents an enumeration of the speak header types
+
+
+
+
+
+ The header is spoken one time, before a series of cells.
+
+
+
+
+ The header is spoken before every pertinent cell.
+
+
+
+
+ Represents an enumeration of the speak numeral types
+
+
+
+
+
+ Speak the numeral as individual digits. Thus, "237" is spoken "Two Three Seven".
+
+
+
+
+ Speak the numeral as a full number. Thus, "237" is spoken "Two hundred thirty seven". Word representations are language-dependent.
+
+
+
+
+ Represents an enumeration of the speak-punctuation types
+
+
+
+
+
+ Punctuation such as semicolons, braces, and so on are to be spoken literally.
+
+
+
+
+ Punctuation is not to be spoken, but instead rendered naturally as various pauses.
+
+
+
+
+ Represents an enumeration of the speech-rate types
+
+
+
+
+
+ Same as 80 words per minute.
+
+
+
+
+ Same as 120 words per minute
+
+
+
+
+ Same as 180 - 200 words per minute.
+
+
+
+
+ Same as 300 words per minute.
+
+
+
+
+ Same as 500 words per minute.
+
+
+
+
+ Adds 40 words per minute to the current speech rate.
+
+
+
+
+ Subtracts 40 words per minutes from the current speech rate.
+
+
+
+
+ Represents an enumeration of the table-layout types
+
+
+
+
+
+ Use the fixed table layout algorithm
+
+
+
+
+ Use any automatic table layout algorithm
+
+
+
+
+ Represents an enumeration of the target-name
+
+
+
+
+
+ The name of the current frame, tab or window where the link resides. This value never causes a new destination to be created.
+
+
+
+
+ The name of the current tab (if there is one) or window. This value never causes a new destination to be created.
+
+
+
+
+ The name of the parent of the current frame. If the current frame has no parent this value is treated as 'root'. This value never causes a new destination to be created.
+
+
+
+
+ A new destination (see 'target-new') is always created.
+
+
+
+
+ A new modal window is temporarily created.
+
+
+
+
+ The target is displayed in the existing frame, window or tab of that name. If no such named destination exists, a new destination (see 'target-new') is created with that name.
+
+
+
+
+ Represents an enumeration of the target-new
+
+
+
+
+
+ The target is displayed in a new window.
+
+
+
+
+ The target is displayed in a new tab of an existing window.
+
+
+
+
+ No new destination is created. The target is not displayed.
+
+
+
+
+ Represents an enumeration of the target-position
+
+
+
+
+
+ The new destination tab (window) is placed above the current tab (window) respectively.
+
+
+
+
+ The new destination tab (window) is placed behind the current tab (window) respectively.
+
+
+
+
+ The new destination tab (window) is placed above all other tabs (windows) respectively.
+
+
+
+
+ The new destination tab (window) is placed behind all other tabs (windows) respectively.
+
+
+
+
+ Represents an enumeration of the text-align types
+
+
+
+
+
+ Left align
+
+
+
+
+ Right align
+
+
+
+
+ Center align
+
+
+
+
+ Justify align
+
+
+
+
+ Represents an enumeration of the text-align-last types
+
+
+
+
+
+ Auto type.
+
+
+
+
+ Start type
+
+
+
+
+ The end type.
+
+
+
+
+ Left type.
+
+
+
+
+ Right type
+
+
+
+
+ Center type
+
+
+
+
+ Justify type
+
+
+
+
+ Represents font weights
+
+
+
+
+
+ Within the element, each sequence of consecutive horizontal numbers that has as many or fewer characters than the integer given is treated as if it were in an anonymous inline box with ‘text-combine-horizontal: all’. For this property, a horizontal number is any character belonging to a Number category (N*) that does not belong to a vertical script.
+
+
+
+
+ Within the element, each sequence of consecutive ASCII digits (U+0030–U+0039) that has as many or fewer characters than the integer given is treated as if it were in an anonymous inline box with ‘text-combine-horizontal: all’.
+
+
+
+
+ Within the element, each sequence of consecutive horizontal letters that has as many or fewer characters than the integer given is treated as if it were in an anonymous inline box with ‘text-combine-horizontal: all’. For this property, a horizontal letter is any character belonging to a Letter category (L*) that does not belong to a vertical script.
+
+
+
+
+ Within the element, each sequence of Latin letters that has as many or fewer characters than the integer given is treated as if it were in an anonymous inline box with ‘text-combine-horizontal: all’. For this property, a Latin letter is any character belonging to a Letter category (L*) that also belongs to the Latin script.
+
+
+
+
+ Within the element, each sequence of consecutive horizontal digits and/or letters that has as many or fewer characters than the integer given is treated as if it were in an anonymous inline box with ‘text-combine-horizontal: all’.
+
+
+
+
+ Represents font weights
+
+
+
+
+
+ If the contents are wider than 1em, the UA must attempt to fit the contents within 1em, but may use any method to do so.
+
+
+
+
+ Compress the composition (horizontally) as a whole until it fits within 1em. Do not substitute alternate-width glyphs.
+
+
+
+
+ Attempt to substitute narrower glyphs as necessary to make the composition fit within 1em:
+ a two-character composition uses 1/2-em or proportional glyphs
+ a three-character composition uses 1/3-em glyphs (if the font supports this feature, else fall back to 1/2-em or proportional glyphs)
+ etc.
+
+
+
+
+ Do not compress the composition or perform any glyph substitution in order to make the composition fit within 1em. When combined with ‘use-glyphs’, however, this indicates to perform glyph substitution if possible per ‘use-glyphs’ but not to compress the glyphs if they do not fit the size requirements. This value may cause the glyphs to overflow the line significantly.
+
+
+
+
+ Represents an enumeration of the text-decoration types
+
+
+
+
+
+ Produces no text decoration.
+
+
+
+
+ Each line of text is underlined.
+
+
+
+
+ Each line of text has a line above it.
+
+
+
+
+ Each line of text has a line through the middle.
+
+
+
+
+ Text blinks (alternates between visible and invisible). Conforming user agents may simply not blink the text. Note that not blinking the text is one technique to satisfy checkpoint 3.3 of WAI-UAAG.
+
+
+
+
+ Represents an enumeration of the text-decoration-skip types
+
+
+
+
+
+ Skip nothing: text-decoration is drawn for all text content and for inline replaced elements.
+
+
+
+
+ Skip this element if it is an atomic inline (such as an image or inline-block).
+
+
+
+
+ Skip white space: this includes regular spaces (U+0020) and tabs (U+0009), as well as nbsp (U+00A0), ideographic space (U+3000), all fixed width spaces (such as U+2000–U+200A, U+202F and U+205F), and any adjacent letter-spacing or word-spacing.
+
+
+
+
+ Skip over where glyphs are drawn: interrupt the decoration line to let text show through where the text decoration would otherwise cross over a glyph. The UA may also skip a small distance to either side of the glyph outline.
+
+
+
+
+ The UA should place the start and end of the line inwards from the content edge of the decorating element so that, e.g. two underlined elements side-by-side do not appear to have a single underline. (This is important in Chinese, where underlining is a form of punctuation.).
+
+
+
+
+ Represents an enumeration of the text-decoration types
+
+
+
+
+
+ The border is a series of dots.
+
+
+
+
+ The border is a series of short line segments.
+
+
+
+
+ The border is a single line segment.
+
+
+
+
+ The border is two solid lines. The sum of the two lines and the space between them equals the value of 'border-width'.
+
+
+
+
+ The border is a wavy line.
+
+
+
+
+ Represents an enumeration of the text-decoration types
+
+
+
+
+
+ Draw marks over the text in horizontal typographic mode.
+
+
+
+
+ Draw marks under the text in horizontal typographic mode.
+
+
+
+
+ Draw marks to the right of the text in vertical typographic mode.
+
+
+
+
+ Draw marks to the left of the text in vertical typographic mode.
+
+
+
+
+ Represents an enumeration of the text-emphasis-style types
+
+
+
+
+
+ No emphasis marks.
+
+
+
+
+ The shape is filled with solid color.
+
+
+
+
+ The shape is hollow.
+
+
+
+
+ Display small circles as marks. The filled dot is U+2022 ‘•’, and the open dot is U+25E6 ‘◦’.
+
+
+
+
+ Display large circles as marks. The filled circle is U+25CF ‘●’, and the open circle is U+25CB ‘○’.
+
+
+
+
+ Display double circles as marks. The filled double-circle is U+25C9 ‘◉’, and the open double-circle is U+25CE ‘◎’.
+
+
+
+
+ Display triangles as marks. The filled triangle is U+25B2 ‘▲’, and the open triangle is U+25B3 ‘△’.
+
+
+
+
+ Display sesames as marks. The filled sesame is U+FE45 ‘﹅’, and the open sesame is U+FE46 ‘﹆’.
+
+
+
+
+ Represents enumeration of the text-height types
+
+
+
+
+
+ The block-progression dimension is based either on the em square determined by the element font-size property value or the cell-height (ascender + descender) related to the element font-size as chosen by the user agent.
+
+
+
+
+ The block-progression dimension is based on the em square as determined by the element font-size.
+
+
+
+
+ The block-progression dimension is based on the cell-height (ascender + descender) related to the element font-size.
+
+
+
+
+ The block-progression dimension is based on the maximum extents toward the before-edge and after-edge of the box obtained by considering all children elements located on the same line, ruby annotations (elements with 'display:ruby-text') and baseline shifted elements.
+
+
+
+
+ Represents an enumeration of the text-justify types
+
+
+
+
+
+ The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality.
+
+
+
+
+ Justification is disabled.
+
+
+
+
+ Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or Korean.
+
+
+
+
+ Justification primarily changes spacing at word separators and between characters in block scripts. This value is typically used for CJK languages.
+
+
+
+
+ Justification primarily changes spacing at word separators and between characters in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai.
+
+
+
+
+ Justification primarily changes spacing both at word separators and between characters in all scripts equally (except those in the connected and cursive categories). This value is sometimes used in e.g. Japanese.
+
+
+
+
+ Justification primarily stretches cursive scripts through the use of kashida or other calligraphic elongation. This value is optional for conformance to CSS3 Text. (UAs that do not support cursive elongation must treat the value as invalid.)
+
+
+
+
+ Represents an enumeration of the text-orientation types
+
+
+
+
+
+ In vertical writing modes, characters from horizontal-only scripts are set sideways, i.e. 90° clockwise from their standard orientation in horizontal text. Characters from vertical scripts are set with their intrinsic orientation. This corresponds to the "mixed" orientation mode in [UTR50].
+
+
+
+
+ In vertical writing modes, characters from horizontal-only scripts are rendered upright, i.e. in their standard horizontal orientation. Characters from vertical scripts are set with their intrinsic orientation and shaped normally. This corresponds to the "stacked" orientation mode in [UTR50]
+
+
+
+
+ In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90° clockwise.
+
+
+
+
+ In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90° counter-clockwise.
+
+
+
+
+ This value is equivalent to ‘sideways-right’ in ‘vertical-rl’ writing mode and equivalent to ‘sideways-left’ in ‘vertical-lr’ writing mode. It can be useful when setting horizontal script text vertically in a primarily horizontal-only document.
+
+
+
+
+ [SVG11] defines ‘glyph-orientation-vertical’ and ‘glyph-orientation-horizontal’ properties that were intended to control text orientation. These properties are deprecated and do not apply to non-SVG elements. If an implementation supports these properties, the ‘use-glyph-orientation’ value when set on SVG elements indicates that the SVG ‘glyph-orientation-vertical’ and ‘glyph-orientation-horizontal’ behavior control the layout of text. Such UAs must set ‘text-orientation: glyph-orientation’ on all SVG text content elements in their default UA style sheet for SVG. In all other contexts, and for implementations that do not support the glyph orientation properties, the ‘use-glyph-orientation’ behavior is the same as for ‘mixed-right’.
+
+
+
+
+ Represents an enumeration of the text-space-collapse types
+
+
+
+
+
+ This value directs user agents to collapse sequences of white space into a single character (or in some cases, no character).
+
+
+
+
+ This value prevents user agents from collapsing sequences of white space. Segment breaks such as line feeds and carriage returns are preserved as forced line breaks.
+
+
+
+
+ This value collapses consecutive spaces, but renders segment breaks as forced line breaks.
+
+
+
+
+ Represents an enumeration of the Text Transform types.
+
+
+
+
+
+ Puts the first character of each word in uppercase; other characters are unaffected.
+
+
+
+
+ Puts all characters of each word in uppercase.
+
+
+
+
+ Puts all characters of each word in lowercase.
+
+
+
+
+ No capitalization effects.
+
+
+
+
+ Puts all characters in fullwidth form. If the character does not have a corresponding fullwidth form, it is left as is. This value is typically used to typeset Latin characters and digits like ideographic characters.
+
+
+
+
+ Represents an enumeration of the text-underline-position types
+
+
+
+
+
+ The user agent may use any algorithm to determine the underline's position; however it must be placed at or below the alphabetic baseline.
+
+
+
+
+ The underline is positioned relative to the alphabetic baseline. In this case the underline is likely to cross some descenders.
+
+
+
+
+ In horizontal typographic modes, the underline is positioned relative to the under edge of the element's content box. In this case the underline usually does not cross the descenders. (This is sometimes called "accounting" underline.) If the underline affects descendants with a lower content edge, the user agent should shift the underline down further to the lowest underlined content box edge. The user agent may ignore elements with ‘vertical-align’ values given as lengths, percentages, ‘top’, or ‘bottom’ when making this adjustment. (Note that images that are not affected by the underline per ‘text-decoration-skip’ will not affect the position of the underline.)
+
+
+
+
+ In vertical typographic modes, the underline is aligned as for ‘below’, on the left edge of the text.
+
+
+
+
+ In vertical typographic modes, the underline is aligned as for ‘below’, except it is aligned to the right edge of the text. If this causes the underline to be drawn on the "over" side of the text, then an overline also switches sides and is drawn on the "under" side.
+
+
+
+
+ Represents enumeration of the timing-function types
+
+
+
+
+
+ The animation has the same speed from start to end
+
+
+
+
+ The animation has a slow start, then fast, before it ends slowly
+
+
+
+
+ The animation has a slow start
+
+
+
+
+ The animation has a slow end
+
+
+
+
+ The animation has both a slow start and a slow end
+
+
+
+
+ Define your own values in the cubic-bezier function
+
+
+
+
+ Represents transform-style types
+
+
+
+
+
+ Flat type.
+
+
+
+
+ Preserve3D type
+
+
+
+
+ Represents an enumeration of the unicode-bidi types
+
+
+
+
+
+ The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline elements, implicit reordering works across element boundaries.
+
+
+
+
+ If the element is inline, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the 'direction' property. Inside the element, reordering is done implicitly. This corresponds to adding a LRE (U+202A; for 'direction: ltr') or RLE (U+202B; for 'direction: rtl') at the start of the element and a PDF (U+202C) at the end of the element.
+
+
+
+
+ For inline elements this creates an override. For block container elements this creates an override for inline-level descendants not within another block container element. This means that inside the element, reordering is strictly in sequence according to the 'direction' property; the implicit part of the bidirectional algorithm is ignored. This corresponds to adding a LRO (U+202D; for 'direction: ltr') or RLO (U+202E; for 'direction: rtl') at the start of the element or at the start of each anonymous child block box, if any, and a PDF (U+202C) at the end of the element.
+
+
+
+
+ Represents an enumeration of the Vertical Align types.
+
+
+
+
+
+ Align the baseline of the box with the baseline of the parent box. If the box does not have a baseline, align the bottom margin edge with the parent's baseline.
+
+
+
+
+ Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.)
+
+
+
+
+ Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.)
+
+
+
+
+ Align the top of the aligned subtree with the top of the line box.
+
+
+
+
+ Align the top of the box with the top of the parent's content area
+
+
+
+
+ Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.
+
+
+
+
+ Align the bottom of the aligned subtree with the bottom of the line box.
+
+
+
+
+ Align the bottom of the box with the bottom of the parent's content area
+
+
+
+
+ Raise (positive value) or lower (negative value) the box by this distance (a percentage of the 'line-height' value). The value '0%' means the same as 'baseline'.
+
+
+
+
+ Raise (positive value) or lower (negative value) the box by this distance. The value '0cm' means the same as 'baseline'.
+
+
+
+
+ Represents an enumeration of the Visibility types.
+
+
+
+
+
+ The generated box is visible.
+
+
+
+
+ The generated box is invisible (fully transparent, nothing is drawn), but still affects layout. Furthermore, descendants of the element will be visible if they have 'visibility: visible'.
+
+
+
+
+ Please consult the section on dynamic row and column effects in tables. If used on elements other than rows, row groups, columns, or column groups, 'collapse' has the same meaning as 'hidden'.
+
+
+
+
+ Represents an enumeration of the voice-balance types.
+
+
+
+
+
+ Same as ‘-100’.
+
+
+
+
+ Same as ‘0’.
+
+
+
+
+ Same as ‘100’.
+
+
+
+
+ Moves the sound to the left, by subtracting 20 from the inherited ‘voice-balance’ value, and by clamping the resulting number to ‘-100’.
+
+
+
+
+ Moves the sound to the right, by adding 20 to the inherited ‘voice-balance’ value, and by clamping the resulting number to ‘100’.
+
+
+
+
+ Represents an enumeration of the Volume types.
+
+
+
+
+
+ No sound at all. The value '0' does not mean the same as 'silent'.
+
+
+
+
+ Same as '0'.
+
+
+
+
+ Same as '25'.
+
+
+
+
+ Same as '50'.
+
+
+
+
+ Same as '75'.
+
+
+
+
+ Same as '100'.
+
+
+
+
+ Represents an enumeration of the White-Space types.
+
+
+
+
+
+ This value directs user agents to collapse sequences of white space, and break lines as necessary to fill line boxes.
+
+
+
+
+ This value prevents user agents from collapsing sequences of white space. Lines are only broken at preserved newline characters.
+
+
+
+
+ This value collapses white space as for 'normal', but suppresses line breaks within text.
+
+
+
+
+ This value prevents user agents from collapsing sequences of white space. Lines are broken at preserved newline characters, and as necessary to fill line boxes.
+
+
+
+
+ This value directs user agents to collapse sequences of white space. Lines are broken at preserved newline characters, and as necessary to fill line boxes.
+
+
+
+
+ Represents an enumeration of the word-break types
+
+
+
+
+
+ Break lines according to their usual rules.
+
+
+
+
+ In addition to normal opportunities, lines may break between any two letters within words. Hyphenation is not applied. This option is used mostly in a context where the text is predominantly using CJK characters with few non-CJK excerpts and it is desired that the text be better distributed on each line.
+
+
+
+
+ Lines may break only at word separators and other explicit break opportunities. Otherwise this option is equivalent to ‘normal’. This option is mostly used where the presence of word separator characters still creates line-breaking opportunities, as in Korean.
+
+
+
+
+ Represents an enumeration of the word-wrap types
+
+
+
+
+
+ Lines may break only at allowed break points. However, the restrictions introduced by ‘word-break: keep-all’ may be relaxed to match ‘word-break: normal’ and the various hyphenation limit properties may be ignored if there are no otherwise-acceptable break points in the line.
+
+
+
+
+ An unbreakable "word" may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line. Shaping characters are still shaped as if the word were not broken, and grapheme clusters must together stay as one unit. No hyphenation character is inserted at the break point.
+
+
+
+
+ Represents an enumeration of the writing-mode types
+
+
+
+
+
+ Top-to-bottom block flow direction. The writing mode is horizontal.
+
+
+
+
+ Right-to-left block flow direction. The writing mode is vertical.
+
+
+
+
+ Left-to-right block flow direction. The writing mode is vertical.
+
+
+
+
+ Represents interface for all CSS properties
+
+
+
+
+
+ Undefined vendor
+
+
+
+
+ Microsoft vendor
+
+
+
+
+ Mozilla vendor
+
+
+
+
+ OperaSoftware vendor
+
+
+
+
+ AdvancedTelevisionStandardsCommittee vendor
+
+
+
+
+ TheWapForum vendor
+
+
+
+
+ Kde vendor.
+
+
+
+
+ Apple vendor
+
+
+
+
+ YesLogic vendor
+
+
+
+
+ AntennaHouse vendor
+
+
+
+
+ HewlettPackard vendor
+
+
+
+
+ RealObjects vendor
+
+
+
+
+ ResearchInMotion vendor
+
+
+
+
+ TallComponents vendor
+
+
+
+
+ Represents the CSS lexical unit interface.
+
+
+
+
+ Gets the integer value.
+
+ The unit value
+
+
+
+ Gets the float value.
+
+ The unit value
+
+
+
+ Gets the dimension unit text.
+
+ The unit value
+
+
+
+ Gets the name of the function.
+
+ The unit value
+
+
+
+ Gets the function parameters.
+
+ The unit value
+
+
+
+ Gets the string value.
+
+ The unit value
+
+
+
+ Gets the type of the lexical unit.
+
+
+ The type of the lexical unit.
+
+
+
+
+ Gets the first lexical unit.
+
+
+
+
+ Gets the next lexical unit.
+
+
+
+
+ Gets the previous lexical unit.
+
+
+
+
+ Represents base interface for handling properties during parsing CSS declarations.
+
+
+
+
+ Handling the CSS property.
+
+ The property name.
+ The instance of .
+ if set to true it's important.
+
+
+
+ Represents base interface for handling parts of the CSS document.
+
+
+
+
+ Starts the document.
+
+
+
+
+ Ends the document.
+
+
+
+
+ Starts the style rule.
+
+
+
+
+ Starts the media rule.
+
+ The media.
+
+
+
+ Starts the counter style rule.
+
+ The counter name.
+
+
+
+ Starts the font face rule.
+
+
+
+
+ Sets the namespace rule.
+
+ The prefix.
+ The namespace URI.
+
+
+
+ Starts the charset.
+
+ The encoding.
+
+
+
+ Starts the import rule.
+
+ The URL to external style.
+ The media.
+
+
+
+ Starts the page rule.
+
+
+
+
+ Starts the unknown rule.
+
+ The unknown rule text.
+
+
+
+ Ends the rule.
+
+
+
+
+ Processes the style sheet.
+
+ The style sheet.
+
+
+
+ Processes the selectors.
+
+ The selectors.
+
+
+
+ Represents an CSS errors that occur during application execution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Represents default class for handling CSS errors.
+
+
+
+
+ Represents the interface that must be implemented in order to be notified of CSS parser errors.
+
+
+
+
+ Called when warning is occured during parsing.
+
+ The exception.
+
+
+
+ Called when error is occured during parsing.
+
+ The exception.
+
+
+
+ Called when the fatal error is occured during parsing.
+
+ The exception.
+
+
+
+ Called when warning is occured during parsing.
+
+ The exception.
+
+
+
+ Called when error is occured during parsing.
+
+ The exception.
+
+
+
+ Called when the fatal error is occured during parsing.
+
+ The exception.
+
+
+
+ Gets the instance of the .
+
+
+
+
+ The Rect interface is used to represent any rect value. This interface reflects the values in the underlying style property. Hence, modifications made to the CssPrimitiveValue objects modify the style property.
+
+
+
+
+ This attribute is used for the top of the rect.
+
+
+
+
+ This attribute is used for the right of the rect.
+
+
+
+
+ This attribute is used for the bottom of the rect.
+
+
+
+
+ This attribute is used for the left of the rect.
+
+
+
+
+ Represents resource loading event arguments.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The URI path.
+
+
+
+ Gets or sets the URI.
+
+
+ The URI.
+
+
+
+
+ Represents resource loading result object.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+
+
+
+ Initializes a new instance of the class.
+
+ The resource data.
+ The encoding.
+
+
+
+ Gets the resource data.
+
+
+
+
+ Gets the encoding.
+
+
+
+
+ The RGBColor interface is used to represent any RGB color value. This interface reflects the values in the underlying style property. Hence, modifications made to the CssPrimitiveValue objects modify the style property.
+
+
+
+
+ Converts to the native color object.
+
+ The object.
+
+
+
+ This attribute is used for the red value of the RGB color.
+
+
+
+
+ This attribute is used for the green value of the RGB color.
+
+
+
+
+ This attribute is used for the blue value of the RGB color.
+
+
+
+
+ This attribute is used for the alpha value of the RGB color.
+
+
+
+
+ Represents a simple or a complex value. A CssValue object only occurs in a context of a CSS property.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stylable document.
+
+
+
+ The method provides a read only access to the computed values of an element
+
+ The element.
+ The pseudo element.
+ The computed style
+
+
+
+ Contains the current build version information.
+
+
+
+
+ The assembly version.
+
+
+
+
+ The file version.
+
+
+
+
+ The product title.
+
+
+
+
+ The major product version.
+
+
+
+
+ The minor product version.
+
+
+
+
+ Each interface element is represented by a BarProp object:
+
+
+
+
+ Returns true if the bar is visible; otherwise, returns false.
+
+
+ true if visible; otherwise, false.
+
+
+
+
+ The sequence of Documents in a browsing context is its session history. Each browsing context, including nested browsing contexts, has a distinct session history. A browsing context's session history consists of a flat list of session history entries. Each session history entry consists, at a minimum, of a URL, and each entry may in addition have a state object, a title, a Document object, form data, a scroll position, and other information associated with it.
+
+
+
+
+ Goes back or forward the specified number of steps in the joint session history.
+ A zero delta will reload the current page.
+ If the delta is out of range, does nothing.
+
+
+
+
+ Goes back or forward the specified number of steps in the joint session history.
+ A zero delta will reload the current page.
+ If the delta is out of range, does nothing.
+
+ The delta.
+
+
+
+ Goes back one step in the joint session history.
+ If there is no previous page, does nothing.
+
+
+
+
+ Goes forward one step in the joint session history.
+ If there is no next page, does nothing.
+
+
+
+
+ Pushes the given data onto the session history, with the given title, and, if provided and not null, the given URL.
+
+ The user data.
+ The title.
+
+
+
+ Pushes the given data onto the session history, with the given title, and, if provided and not null, the given URL.
+
+ The user data.
+ The data title.
+ The assigned URL.
+
+
+
+ Updates the current entry in the session history to have the given data, title, and, if provided and not null, URL.
+
+ The user data.
+ The user title.
+
+
+
+ Updates the current entry in the session history to have the given data, title, and, if provided and not null, URL.
+
+ The user data.
+ The data title.
+ The assigned URL.
+
+
+
+ Returns the number of entries in the joint session history.
+
+
+ The length.
+
+
+
+
+ Returns the current state object.
+
+
+ The state.
+
+
+
+
+ Location objects provide a representation of the address of the active document of their Document's browsing context, and allow the current entry of the browsing context's session history to be changed, by adding or replacing entries in the history object.
+
+
+
+
+ Navigates to the given page.
+
+ The URL to navigate.
+
+
+
+ Removes the current page from the session history and navigates to the given page.
+
+ The URL to navigate.
+
+
+
+ Reloads the current page.
+
+
+
+
+ A MimeType object represents a MIME type that is, or was, explicitly supported by a plugin.
+
+
+
+
+ The type attribute must return the valid MIME type with no parameters describing the MIME type.
+
+
+ The MIME type.
+
+
+
+
+ The description attribute must return user-agent-defined
+
+
+ The description.
+
+
+
+
+ The suffixes attribute must return user-agent-defined
+
+
+ The suffixes.
+
+
+
+
+ The enabledPlugin attribute must return the Plugin object that represents the plugin that explicitly supported the MIME type that this MimeType object represents when this object was last created or updated by PluginArray.refresh(), whichever happened most recently.
+
+
+ The enabled plugin.
+
+
+
+
+ A MimeTypeArray object represents the MIME types explicitly supported by plugins supported by the user agent, each of which is represented by a MimeType object.
+
+
+
+
+ The namedItem() method of a MimeTypeArray object must return null if the argument is not one of the object's supported property names, and otherwise must return the MimeType object that has a type equal to the method's argument.
+
+ The mime type name.
+
+ The .
+
+
+
+
+ The length attribute must return the number of MIME types explicitly supported by non-hidden plugins represented by the corresponding PluginArray object, if any.
+
+
+ The length.
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+
+
+
+
+ Represents the identity and state of the user agent (the client), and allows Web pages to register themselves as potential protocol and content handlers
+
+
+
+
+ Represents client identification interface
+
+
+
+
+ Returns constant false
+
+
+ Returns constant false
+
+
+
+
+ Must return the string "Mozilla"
+
+
+ The name of the application code.
+
+
+
+
+ Must return either the string "Netscape" or the full name of the browser, e.g. "Mellblom Browsernator"
+
+
+ The name of the application.
+
+
+
+
+ Must return either the string "4.0" or a string representing the version of the browser in detail, e.g. "1.0 (VMS; en-US) Mellblomenator/9000".
+
+
+ The application version.
+
+
+
+
+ Must return either the empty string or a string representing the platform on which the browser is executing, e.g. "MacIntel", "Win32", "FreeBSD i386", "WebTV OS".
+
+
+ The platform.
+
+
+
+
+ Must return the string "Gecko".
+
+
+ The product.
+
+
+
+
+ Must return the string used for the value of the "User-Agent" header in HTTP requests, or the empty string if no such header is ever sent.
+
+
+ The user agent.
+
+
+
+
+ Represents language preferences.
+
+
+
+
+ Returns a language tag representing the user's preferred language.
+
+
+ The language.
+
+
+
+
+ Represents browser state.
+
+
+
+
+ Returns false if the user agent is definitely offline (disconnected from the network). Returns true if the user agent might be online.
+ The events online and offline are fired when the value of this attribute changes.
+
+
+ true if online; otherwise, false.
+
+
+
+
+ Represents custom scheme and content handlers.
+
+
+
+
+ Registers a handler for the given scheme or content type, at the given URL, with the given title.
+
+ The scheme.
+ The handle URL.
+ The title.
+
+
+
+ Registers a handler for the given scheme or content type, at the given URL, with the given title.
+
+ Type of the MIME.
+ The handle URL.
+ The title.
+
+
+
+ Unregisters the protocol handler.
+
+ The scheme.
+ The handle URL.
+
+
+
+ Unregisters the content handler.
+
+ Type of the MIME.
+ The handle URL.
+
+
+
+ Represents plugins
+
+
+
+
+ The attribute must return a PluginArray object.
+
+
+ The plugins.
+
+
+
+
+ The attribute must return a MimeTypeArray object.
+
+
+ The MIME types.
+
+
+
+
+ The navigator.javaEnabled attribute must return true if the user agent supports a plugin that supports the MIME type "application/x-java-vm"
+
+
+ true if java si enabled; otherwise, false.
+
+
+
+
+ Represents manually releasing the storage mutex interface
+
+
+
+
+ If a script uses the document.cookie API, or the localStorage API, the browser will block other scripts from accessing cookies or storage until the first script finishes. [WEBSTORAGE]
+ Calling the navigator.yieldForStorageUpdates() method tells the user agent to unblock any other scripts that may be blocked, even though the script hasn't returned.
+
+
+
+
+ Returns false if setting a cookie will be ignored, and true otherwise
+
+
+ true if cookie is enabled; otherwise, false.
+
+
+
+
+ Represents a plugin object.
+
+
+
+
+ Returns the MimeType object for the given MIME type
+
+ The plugin name.
+
+ The .
+
+
+
+
+ Gets the plugin's name
+
+
+ The name.
+
+
+
+
+ Gets the plugin's description.
+
+
+ The description.
+
+
+
+
+ Returns the plugin library's filename, if applicable on the current platform.
+
+
+ The filename.
+
+
+
+
+ Returns the number of MIME types, represented by MimeType objects, supported by the plugin
+
+
+ The length.
+
+
+
+
+ Returns the specified MimeType object
+
+
+ The .
+
+ The index.
+
+ The .
+
+
+
+
+ A PluginArray object represents none, some, or all of the plugins supported by the user agent, each of which is represented by a Plugin object.
+
+
+
+
+ Updates the lists of supported plugins and MIME types for this page, and reloads the page if the lists have changed.
+
+ if set to true reload.
+
+
+
+ Returns the specified Plugin object
+
+ The plugin name.
+
+ The plugin instance.
+
+
+
+
+ Returns the number of plugins, represented by Plugin objects, that the user agent reports
+
+
+ The length.
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+
+
+
+
+ Represent common interface for Window object.
+
+
+
+
+ The interface is implemented by all Nodes in an implementation which supports the DOM Event Model.
+ Therefore, this interface can be obtained by using binding-specific casting methods on an instance of the Node interface.
+ The interface allows registration and removal of Event Listeners on an and dispatch of events to that .
+
+
+
+
+ This method allows the registration of event listeners on the event target.
+
+ The event type for which the user is registering
+ Takes an interface implemented by the user which contains the methods to be called when the event occurs.
+ If true, useCapture indicates that the user wishes to initiate capture.
+ After initiating capture, all events of the specified type will be dispatched to the registered
+
+ before being dispatched to any Event Targets beneath them in the tree.
+ Events which are bubbling upward through the tree will not trigger an designated to use capture.
+
+
+ If an is added to an while it is processing an event, it will not be triggered
+ by the current actions but may be triggered during a later stage of event flow, such as the bubbling phase.
+
+
+ If multiple identical Event Listeners are registered on the same with the same parameters the duplicate instances are discarded.
+ They do not cause the to be called twice and since they are discarded they do not need to be removed with the
+
+ method.
+
+
+
+
+
+ This method allows the dispatch of events into the implementations event model.
+
+ Specifies the event type, behavior, and contextual information to be used in processing the event.
+
+ The return value of indicates whether any of the listeners which handled the event called .
+ If was called the value is false, else the value is true.
+
+
+ Events dispatched in this manner will have the same capturing and bubbling behavior as events dispatched directly by the implementation.
+ The target of the event is the on which is called.
+
+
+
+
+ This method allows the removal of event listeners from the event target.
+ If an is removed from an while it is processing an event, it will not be triggered by the current actions.
+ Event Listeners can never be invoked after being removed.
+
+ Specifies the event type of the being removed.
+ The parameter indicates the to be removed.
+ Specifies whether the EventListener being removed was registered as a capturing listener or not.
+ If a listener was registered twice, one with capture and one without, each must be removed separately.
+ Removal of a capturing listener does not affect a non-capturing version of the same listener, and vice versa.
+
+
+
+ Represents interface that must be inherited by all element that is supported system event handling
+
+
+
+
+ Gets or sets event handler for OnAbort event.
+
+
+ The event handler for OnAbort event.
+
+
+
+
+ Gets or sets event handler for OnBlur event.
+
+
+ The event handler for OnBlur event.
+
+
+
+
+ Gets or sets event handler for OnCancel event.
+
+
+ The event handler for OnCancel event.
+
+
+
+
+ Gets or sets event handler for OnCanplay event.
+
+
+ The event handler for OnCanplay event.
+
+
+
+
+ Gets or sets event handler for OnCanPlayThrough event.
+
+
+ The event handler for OnCanPlayThrough event.
+
+
+
+
+ Gets or sets event handler for OnChange event.
+
+
+ The event handler for OnChange event.
+
+
+
+
+ Gets or sets event handler for OnClick event.
+
+
+ The event handler for OnClick event.
+
+
+
+
+ Gets or sets event handler for OnCueChange event.
+
+
+ The event handler for OnCueChange event.
+
+
+
+
+ Gets or sets event handler for OnDblClick event.
+
+
+ The event handler for OnDblClick event.
+
+
+
+
+ Gets or sets event handler for OnDurationChange event.
+
+
+ The event handler for OnDurationChange event.
+
+
+
+
+ Gets or sets event handler for OnEmptied event.
+
+
+ The event handler for OnEmptied event.
+
+
+
+
+ Gets or sets event handler for OnEnded event.
+
+
+ The event handler for OnEnded event.
+
+
+
+
+ Gets or sets event handler for OnError event.
+
+
+ The event handler for OnError event.
+
+
+
+
+ Gets or sets event handler for OnFocus event.
+
+
+ The event handler for OnFocus event.
+
+
+
+
+ Gets or sets event handler for OnInput event.
+
+
+ The event handler for OnInput event.
+
+
+
+
+ Gets or sets event handler for OnInvalid event.
+
+
+ The event handler for OnInvalid event.
+
+
+
+
+ Gets or sets event handler for OnKeyDown event.
+
+
+ The event handler for OnKeyDown event.
+
+
+
+
+ Gets or sets event handler for OnKeyPress event.
+
+
+ The event handler for OnKeyPress event.
+
+
+
+
+ Gets or sets event handler for OnKeyUp event.
+
+
+ The event handler for OnKeyUp event.
+
+
+
+
+ Gets or sets event handler for OnLoad event.
+
+
+ The event handler for OnLoad event.
+
+
+
+
+ Gets or sets event handler for OnLoadedData event.
+
+
+ The event handler for OnLoadedData event.
+
+
+
+
+ Gets or sets event handler for OnLoadedMetadata event.
+
+
+ The event handler for OnLoadedMetadata event.
+
+
+
+
+ Gets or sets event handler for OnLoadStart event.
+
+
+ The event handler for OnLoadStart event.
+
+
+
+
+ Gets or sets event handler for OnMouseDown event.
+
+
+ The event handler for OnMouseDown event.
+
+
+
+
+ Gets or sets event handler for OnMouseEnter event.
+
+
+ The event handler for OnMouseEnter event.
+
+
+
+
+ Gets or sets event handler for OnMouseLeave event.
+
+
+ The event handler for OnMouseLeave event.
+
+
+
+
+ Gets or sets event handler for OnMouseMove event.
+
+
+ The event handler for OnMouseMove event.
+
+
+
+
+ Gets or sets event handler for OnMouseOut event.
+
+
+ The event handler for OnMouseOut event.
+
+
+
+
+ Gets or sets event handler for OnMouseOver event.
+
+
+ The event handler for OnMouseOver event.
+
+
+
+
+ Gets or sets event handler for OnMouseUp event.
+
+
+ The event handler for OnMouseUp event.
+
+
+
+
+ Gets or sets event handler for OnMouseWheel event.
+
+
+ The event handler for OnMouseWheel event.
+
+
+
+
+ Gets or sets event handler for OnPause event.
+
+
+ The event handler for OnPause event.
+
+
+
+
+ Gets or sets event handler for OnPlay event.
+
+
+ The event handler for OnPlay event.
+
+
+
+
+ Gets or sets event handler for OnPlaying event.
+
+
+ The event handler for OnPlaying event.
+
+
+
+
+ Gets or sets event handler for OnProgress event.
+
+
+ The event handler for OnProgress event.
+
+
+
+
+ Gets or sets event handler for OnRateChange event.
+
+
+ The event handler for OnRateChange event.
+
+
+
+
+ Gets or sets event handler for OnReset event.
+
+
+ The event handler for OnReset event.
+
+
+
+
+ Gets or sets event handler for OnResize event.
+
+
+ The event handler for OnResize event.
+
+
+
+
+ Gets or sets event handler for OnScroll event.
+
+
+ The event handler for OnScroll event.
+
+
+
+
+ Gets or sets event handler for OnSeeked event.
+
+
+ The event handler for OnSeeked event.
+
+
+
+
+ Gets or sets event handler for OnSeeking event.
+
+
+ The event handler for OnSeeking event.
+
+
+
+
+ Gets or sets event handler for OnSelect event.
+
+
+ The event handler for OnSelect event.
+
+
+
+
+ Gets or sets event handler for OnShow event.
+
+
+ The event handler for OnShow event.
+
+
+
+
+ Gets or sets event handler for OnStalled event.
+
+
+ The event handler for OnStalled event.
+
+
+
+
+ Gets or sets event handler for OnSubmit event.
+
+
+ The event handler for OnSubmit event.
+
+
+
+
+ Gets or sets event handler for OnSuspend event.
+
+
+ The event handler for OnSuspend event.
+
+
+
+
+ Gets or sets event handler for OnTimeUpdate event.
+
+
+ The event handler for OnTimeUpdate event.
+
+
+
+
+ Gets or sets event handler for OnToggle event.
+
+
+ The event handler for OnToggle event.
+
+
+
+
+ Gets or sets event handler for OnVolumeChange event.
+
+
+ The event handler for OnVolumeChange event.
+
+
+
+
+ Gets or sets event handler for OnWaiting event.
+
+
+ The event handler for OnWaiting event.
+
+
+
+
+ Represents interface that must be inherited by window object
+
+
+
+
+ Gets or sets event handler
+
+
+ The after print event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The before print event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The before unload event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The hash change event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The message event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The offline event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The online event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The page hide event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The page show event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The pop state event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The storage event handler.
+
+
+
+
+ Gets or sets event handler
+
+
+ The unload event handler.
+
+
+
+
+ Allows authors to schedule timer-based callbacks.
+
+
+
+
+ Schedules a timeout to run handler after timeout milliseconds. Any arguments are passed straight through to the handler
+
+ The handler.
+ The timeout.
+ The arguments.
+
+ The handle
+
+
+
+
+ Cancels the timeout set with setTimeout() identified by handle
+
+ The handle.
+
+
+
+ Schedules a timeout to run handler every timeout milliseconds. Any arguments are passed straight through to the handler.
+
+ The handler.
+ The timeout.
+ The arguments.
+
+ The handle
+
+
+
+
+ Cancels the timeout set with setInterval() identified by handle
+
+ The handle.
+
+
+
+ Closes the browsing context.
+
+
+
+
+ The stop() method on Window objects should, if there is an existing attempt to navigate the browsing context and that attempt is not currently running the unload a document algorithm, cancel that navigation; then, it must abort the active document of the browsing context of the Window object on which it was invoked
+
+
+
+
+ The focus() method on the Window object, when invoked, provides a hint to the user agent that the script believes the user might be interested in the contents of the browsing context of the Window object on which the method was invoked.
+
+
+
+
+ The blur() method on the Window object, when invoked, provides a hint to the user agent that the script believes the user probably is not currently interested in the contents of the browsing context of the Window object on which the method was invoked, but that the contents might become interesting again in the future.
+
+
+
+
+ The open() method on Window objects provides a mechanism for navigating an existing browsing context or opening and navigating an auxiliary browsing context.
+
+ The URL to navigate.
+ The target.
+ The features.
+ if set to true replace.
+
+ The instance.
+
+
+
+
+ Displays a modal alert with the given message, and waits for the user to dismiss it
+
+ The message.
+
+
+
+ Displays a modal OK/Cancel prompt with the given message, waits for the user to dismiss it, and returns true if the user clicks OK and false if the user clicks Cancel.
+
+ The message.
+
+ Returns true if the user clicks OK and false if the user clicks Cancel
+
+
+
+
+ Displays a modal text field prompt with the given message, waits for the user to dismiss it, and returns the value that the user entered. If the user cancels the prompt, then returns null instead. If the second argument is present, then the given value is used as a default.
+
+ The message.
+ The default.
+
+ Returns the value that the user entered
+
+
+
+
+ Prompts the user to print the page.
+
+
+
+
+ Returns the Window object's browsing context's WindowProxy object.
+
+
+ The window.
+
+
+
+
+ Returns the Window object's browsing context's WindowProxy object.
+
+
+ The self.
+
+
+
+
+ The document attribute must return the Window object's newest Document object.
+
+
+ The document.
+
+
+
+
+ The name attribute of the Window object must, on getting, return the current name of the browsing context, and, on setting, set the name of the browsing context to the new value.
+
+
+ The name.
+
+
+
+
+ The location attribute of the Window interface must return the Location object for that Window object's Document.
+
+
+ The location.
+
+
+
+
+ The history attribute of the Window interface must return the object implementing the History interface for that Window object's newest Document.
+
+
+ The history.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ Returns the object.
+
+
+ The location bar.
+
+
+
+
+ For historical reasons, the status attribute on the Window object must, on getting, return the last string it was set to, and on setting, must set itself to the new value. When the Window object is created, the attribute must be set to the empty string. It does not do anything else.
+
+
+ The status.
+
+
+
+
+ The closed attribute on Window objects must return true if the Window object's browsing context has been discarded, and false otherwise
+
+
+ true if closed; otherwise, false.
+
+
+
+
+ Returns the Window object's browsing context's WindowProxy object.
+
+
+ The frames.
+
+
+
+
+ The length IDL attribute on the Window interface must return the number of child browsing contexts that are nested through elements that are in the Document that is the active document of that Window object, if that Window's browsing context shares the same event loop as the responsible document specified by the entry settings object accessing the IDL attribute; otherwise, it must return zero.
+
+
+ The length.
+
+
+
+
+ The top IDL attribute on the Window object of a Document in a browsing context b must return the WindowProxy object of its top-level browsing context (which would be its own WindowProxy object if it was a top-level browsing context itself), if it has one, or its own WindowProxy object otherwise (e.g. if it was a detached nested browsing context).
+
+
+ The top.
+
+
+
+
+ The opener IDL attribute on the Window object, on getting, must return the WindowProxy object of the browsing context from which the current browsing context was created (its opener browsing context), if there is one, if it is still available, and if the current browsing context has not disowned its opener; otherwise, it must return null. On setting, if the new value is null then the current browsing context must disown its opener; if the new value is anything else then the user agent must call the [[DefineOwnProperty]] internal method of the Window object, passing the property name "opener" as the property key, and the Property Descriptor { [[Value]]: value, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true } as the property descriptor, where value is the new value.
+
+
+ The opener.
+
+
+
+
+ The parent IDL attribute on the Window object of a Document in a browsing context b must return the WindowProxy object of the parent browsing context, if there is one (i.e. if b is a child browsing context), or the WindowProxy object of the browsing context b itself, otherwise (i.e. if it is a top-level browsing context or a detached nested browsing context).
+
+
+ The parent.
+
+
+
+
+ The frameElement object of a Document.
+
+
+ The frame element.
+
+
+
+
+ The navigator attribute of the Window interface must return an instance of the Navigator interface, which represents the identity and state of the user agent (the client), and allows Web pages to register themselves as potential protocol and content handlers:
+
+
+ The navigator.
+
+
+
+
+ Represents DOM derivation methods codes.
+
+
+
+
+ If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by restriction if complex types are involved, or a restriction if simple types are involved.
+
+
+
+
+ If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by extension.
+
+
+
+
+ If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union if simple types are involved.
+
+
+
+
+ If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list.
+
+
+
+
+ Represents DOM document position codes.
+
+
+
+
+ The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.
+
+
+
+
+ The second node precedes the reference node.
+
+
+
+
+ The node follows the reference node.
+
+
+
+
+ The node contains the reference node. A node which contains is always preceding, too.
+
+
+
+
+ The node is contained by the reference node. A node which is contained is always following, too.
+
+
+
+
+ The determination of preceding versus following is implementation-specific.
+
+
+
+
+ The DomConfiguration represents the configuration of a document and maintains a table of recognized parameters.
+
+
+
+
+ The DomConfiguration represents the configuration of a document and maintains a table of recognized parameters.
+
+
+
+
+ Set the value of a parameter.
+
+ The parameter name.
+ The value.
+
+
+
+ Return the value of a parameter if known.
+
+ The parameter name.
+
+ The parameter value
+
+
+
+
+ Check if setting a parameter to a specific value is supported.
+
+ The parameter name.
+ The value.
+
+ true if this instance [can set parameter] the specified name; otherwise, false.
+
+
+
+
+ The list of the parameters supported by this DomConfiguration object and for which at least one value can be set by the application.
+
+
+ The parameter names.
+
+
+
+
+ Represents 'error-handler' parameter name
+
+
+
+
+ Represents 'format-pretty-print' parameter name
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Set the value of a parameter.
+
+ The parameter name.
+ The value.
+
+
+
+
+ Return the value of a parameter if known.
+
+ The parameter name.
+
+ The parameter value
+
+
+
+
+
+ Check if setting a parameter to a specific value is supported.
+
+ The parameter name.
+ The value.
+
+ true if this instance [can set parameter] the specified name; otherwise, false.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ The list of the parameters supported by this DomConfiguration object and for which at least one value can be set by the application.
+
+
+ The parameter names.
+
+
+
+
+ Provides an ordered collection of DOMString values.
+
+
+
+
+ Test if a string is part of this DOMStringList
+
+ The string to look for.
+
+ True if the string has been found, false otherwise
+
+
+
+
+ Returns the indexth item in the collection. If index is greater than or equal to the number of DOMStrings in the list, this returns null
+
+
+ The .
+
+ The index.
+
+ Returns string by the index.
+
+
+
+
+ The number of DOMStrings in the list
+
+
+ The length.
+
+
+
+
+ An indicating the severity of the error
+
+
+
+
+ The severity of the error described by the DOMError is warning. A SEVERITY_WARNING will not cause the processing to stop, unless DOMErrorHandler.handleError() returns false.
+
+
+
+
+ The severity of the error described by the DOMError is error. A SEVERITY_ERROR may not cause the processing to stop if the error can be recovered, unless DOMErrorHandler.handleError() returns false.
+
+
+
+
+ The severity of the error described by the DOMError is fatal error. A SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return value of DOMErrorHandler.handleError() is ignored unless the implementation chooses to continue, in which case the behavior becomes undefined.
+
+
+
+
+ Represents DOM common exception class.
+
+
+
+
+ If index or size is negative, or greater than the allowed value.
+
+
+
+
+ If the specified range of text does not fit into a DOMString.
+
+
+
+
+ If any Node is inserted somewhere it doesn't belong.
+
+
+
+
+ If a Node is used in a different document than the one that created it (that doesn't support it).
+
+
+
+
+ If an invalid or illegal character is specified, such as in an XML name.
+
+
+
+
+ If data is specified for a Node which does not support data.
+
+
+
+
+ If an attempt is made to modify an object where modifications are not allowed.
+
+
+
+
+ If an attempt is made to reference a Node in a context where it does not exist.
+
+
+
+
+ If the implementation does not support the requested type of object or operation.
+
+
+
+
+ If an attempt is made to add an attribute that is already in use elsewhere.
+
+
+
+
+ If an attempt is made to use an object that is not, or is no longer, usable.
+
+
+
+
+ If an invalid or illegal string is specified.
+
+
+
+
+ If an attempt is made to modify the type of the underlying object.
+
+
+
+
+ If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
+
+
+
+
+ If a parameter or an operation is not supported by the underlying object.
+
+
+
+
+ If a call to a method such as insertBefore or removeChild would make the Node invalid with respect to "partial validity", this exception would be raised and the operation would not be done. This code is used in [DOM Level 3 Validation]. Refer to this specification for further information.
+
+
+
+
+ If the type of an object is incompatible with the expected type of the parameter associated to the object.
+
+
+
+
+ The operation is insecure.
+
+
+
+
+ A network error occurred.
+
+
+
+
+ The operation was aborted.
+
+
+
+
+ The given URL does not match another URL.
+
+
+
+
+ The quota has been exceeded.
+
+
+
+
+ The operation timed out.
+
+
+
+
+ The supplied node is incorrect or has an incorrect ancestor for this operation.
+
+
+
+
+ The object can not be cloned.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The DOM exception code.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception name.
+
+
+
+ Initializes a new instance of the class.
+
+ The DOM exception code.
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception name.
+ The message.
+
+
+
+ Gets the exception code.
+
+
+ The exception code.
+
+
+
+
+ Gets the exception name.
+
+
+ The exception name.
+
+
+
+
+ Gets a message that describes the current exception.
+
+
+
+
+ An indicating the severity of the error
+
+
+
+
+ The severity of the error described by the DOMError is warning. A SEVERITY_WARNING will not cause the processing to stop, unless DOMErrorHandler.handleError() returns false.
+
+
+
+
+ The severity of the error described by the DOMError is error. A SEVERITY_ERROR may not cause the processing to stop if the error can be recovered, unless DOMErrorHandler.handleError() returns false.
+
+
+
+
+ The severity of the error described by the DOMError is fatal error. A SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return value of DOMErrorHandler.handleError() is ignored unless the implementation chooses to continue, in which case the behavior becomes undefined.
+
+
+
+
+ processing phase type
+
+
+
+
+ The events not currently dispatched are in this phasel.
+
+
+
+
+ The event is currently being evaluated at the target .
+
+
+
+
+ The current event phase is the capturing phase.
+
+
+
+
+ The current event phase is the bubbling phase.
+
+
+
+
+ The interface provides a mechanism by which the user can create an of a type supported by the implementation.
+
+
+ It is expected that the interface will be implemented on the same object which implements the
+
+ interface in an implementation which supports the Event model.
+
+
+
+
+ Creates an of a type supported by the implementation.
+
+ The eventType parameter specifies the type of interface to be created.
+
+ If the interface specified is supported by the implementation this method will return a new
+ of the interface type requested.
+ If the is to be dispatched via the method the appropriate
+ method must be called after creation in order to initialize the 's values.
+
+ The method is used in creating s when it is either inconvenient
+ or unnecessary for the user to create an themselves.
+ In cases where the implementation provided is insufficient, users may supply their own
+ implementations for use with the method.
+
+
+ The newly created
+ NotSupportedErr: Raised if the implementation does not support the type of interface requested
+
+
+
+ The interface is used to provide contextual information about an errors that occurred during runtime.
+
+
+
+
+ The interface is used to provide contextual information about an event to the handler processing the event.
+
+
+ An object which implements the interface is generally passed as the first parameter to an event handler.
+ More specific context information is passed to event handlers by deriving additional interfaces from
+
+ which contain information directly relating to the type of event they accompany.
+ These derived interfaces are also implemented by the object passed to the event listener.
+
+
+
+
+ The method is used to initialize the value of an created through the
+ interface.
+
+ Specifies the event type. This type may be any event type currently defined in this specification or a new event type. The string must be an XML name.
+
+ Any new event type must not begin with any upper, lower, or mixed case version of the string "DOM".
+ This prefix is reserved for future DOM event sets.
+ It is also strongly recommended that third parties adding their own events use their own prefix to avoid confusion and lessen the probability of conflicts with other new events.
+
+ Specifies whether or not the event can bubble.
+ Specifies whether or not the event's default action can be prevented.
+
+ This method may only be called before the Event has been dispatched via the method,
+ though it may be called multiple times during that phase if necessary.
+ If called multiple times the final invocation takes precedence.
+ If called from a subclass of Event interface only the values specified in the initEvent method are modified, all other attributes are left unchanged.
+
+
+
+
+ If an event is cancelable, the method is used to signify that the event is to be canceled,
+ meaning any default action normally taken by the implementation as a result of the event will not occur.
+
+
+ If, during any stage of event flow, the method is called the event is canceled.
+ Any default action associated with the event will not occur.
+ Calling this method for a non-cancelable event has no effect.
+ Once has been called it will remain in effect throughout the remainder of the event's propagation.
+ This method may be used during any stage of event flow.
+
+
+
+
+ The method is used prevent further propagation of an event during event flow.
+
+
+ If this method is called by any the event will cease propagating through the tree.
+ The event will complete dispatch to all listeners on the current before event flow stops.
+ This method may be used during any stage of event flow.
+
+
+
+
+ Used to indicate whether or not an event is a bubbling event. If the event can bubble the value is true, else the value is false.
+
+
+ true if bubbles; otherwise, false.
+
+
+
+
+ Used to indicate whether or not an event can have its default action prevented. If the default action can be prevented the value is true, else the value is false.
+
+
+ true if cancelable; otherwise, false.
+
+
+
+
+ Used to indicate the whose s are currently being processed.
+ This is particularly useful during capturing and bubbling.
+
+
+ The current target.
+
+
+
+
+ Used to indicate which phase of event flow is currently being evaluated.
+
+
+ The event phase.
+
+
+
+
+ Used to indicate the to which the event was originally dispatched.
+
+
+ The target.
+
+
+
+
+ Used to specify the time (in milliseconds relative to the epoch) at which the event was created.
+ Due to the fact that some systems may not provide this information the value of timeStamp may be not available for all events.
+ When not available, a value of 0 will be returned.
+ Examples of epoch time are the time of the system start or 0:0:0 UTC 1st January 1970.
+
+
+
+
+ The name of the event (case-insensitive). The name must be an XML name.
+
+
+ The type.
+
+
+
+
+ Gets a value indicating whether event is trusted by context.
+
+
+ true if this instance is trusted; otherwise, false.
+
+
+
+
+ The message attribute must return the value it was initialized to. When the object is created, this attribute must be initialized to the empty string. It represents the error message.
+
+
+ The message.
+
+
+
+
+ The filename attribute must return the value it was initialized to. When the object is created, this attribute must be initialized to the empty string. It represents the absolute URL of the script in which the error originally occurred.
+
+
+ The filename.
+
+
+
+
+ The lineno attribute must return the value it was initialized to. When the object is created, this attribute must be initialized to zero. It represents the line number where the error occurred in the script.
+
+
+ The line no.
+
+
+
+
+ The colno attribute must return the value it was initialized to. When the object is created, this attribute must be initialized to zero. It represents the column number where the error occurred in the script.
+
+
+ The column no.
+
+
+
+
+ The error attribute must return the value it was initialized to. When the object is created, this attribute must be initialized to null. Where appropriate, it is set to the object representing the error (e.g. the exception object in the case of an uncaught DOM exception).
+
+
+ The error.
+
+
+
+
+ Represents common interface for supporting event handling
+
+
+
+
+ The interface is the primary method for handling events.
+ Users implement the interface and register their listener on an
+ using the method.
+ The users should also remove their from its after they have completed using the listener.
+
+
+ When a Node is copied using the cloneNode method the Event Listeners attached to the source Node are not attached to the copied Node.
+ If the user wishes the same Event Listeners to be added to the newly created copy the user must add them manually.
+
+
+
+
+ This method is called whenever an event occurs of the type for which the interface was registered.
+
+ The contains contextual information about the event.
+ It also contains the and methods which are used in determining the event's flow and default action.
+
+
+
+ The mutation event module is designed to allow notification of any changes
+ to the structure of a document, including attr and text modifications.
+ It may be noted that none of the mutation events listed are designated as cancelable.
+ This stems from the fact that it is very difficult to make use of existing DOM interfaces
+ which cause document modifications if any change to the document might or might not take place
+ due to cancelation of the related event. Although this is still a desired capability,
+ it was decided that it would be better left until the addition of transactions into the DOM.
+
+
+
+
+ The Attr interface represents an attribute in an Element object. Typically the allowable values for the attribute are defined in a schema associated with the document.
+
+
+
+
+ The Node interface is the primary datatype for the entire Document object Model. It represents a single node in the document tree.
+
+
+
+
+ Inserts the node newChild before the existing child node refChild. If refChild is null, insert newChild at the end of the list of children.
+ If newChild is a DocumentFragment object, all of its children are inserted, in the same order, before refChild. If the newChild is already in the tree, it is first removed.
+
+ The new child.
+ The ref child.
+
+ Returns inserted node
+
+
+
+
+ Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
+ If newChild is a DocumentFragment object, oldChild is replaced by all of the DocumentFragment children, which are inserted in the same order. If the newChild is already in the tree, it is first removed.
+
+ The new child.
+ The old child.
+
+ Returns node
+
+
+
+
+ Removes the child node indicated by oldChild from the list of children, and returns it.
+
+ The old child.
+
+ Returns node
+
+
+
+
+ Adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.
+
+ The new child.
+
+ Returns node
+
+
+
+
+ Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent (parentNode is null) and no user data.
+
+ if set to true [deep].
+
+ Returns node
+
+
+
+
+ Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CData sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes. This can be used to ensure that the DOM view of a document is the same as if it were saved and re-loaded, and is useful when operations (such as XPointer [XPointer] lookups) that depend on a particular document tree structure are to be used. If the parameter "normalize-characters" of the DomConfiguration object attached to the Node.ownerDocument is true, this method will also fully normalize the characters of the Text nodes.
+
+
+
+
+ Tests whether the DOM implementation implements a specific feature and that feature is supported by this node, as specified in DOM Features.
+
+ The feature.
+ The version.
+
+ true if the specified feature is supported; otherwise, false.
+
+
+
+
+ Compares the reference node, i.e. the node on which this method is being called, with a node, i.e. the one passed as a parameter, with regard to their position in the document and according to the document order.
+
+ The other.
+
+ Returns document position
+
+
+
+
+ Returns whether this node is the same node as the given one.
+ This method provides a way to determine whether two Node references returned by the implementation reference the same object. When two Node references are references to the same object, even if through a proxy, the references may be used completely interchangeably, such that all attributes have the same values and calling the same DOM method on either reference always has exactly the same effect.
+
+ The other.
+
+ true if [is same node] [the specified other]; otherwise, false.
+
+
+
+
+ Look up the prefix associated to the given namespace URI, starting from this node. The default namespace declarations are ignored by this method.
+ See Namespace Prefix Lookup for details on the algorithm used by this method.
+
+ The namespace URI.
+
+ Returns prefix
+
+
+
+
+ This method checks if the specified namespaceUri is the default namespace or not.
+
+ The namespace URI.
+
+ true if [is default namespace] [the specified namespace URI]; otherwise, false.
+
+
+
+
+ Look up the namespace URI associated to the given prefix, starting from this node.
+
+ The prefix.
+
+ Returns namespace URI
+
+
+
+
+ Tests whether two nodes are equal.
+ This method tests for equality of nodes, not sameness (i.e., whether the two nodes are references to the same object) which can be tested with Node.isSameNode(). All nodes that are the same will also be equal, though the reverse may not be true.
+
+ The argument.
+
+ true if [is equal node] [the specified arg]; otherwise, false.
+
+
+
+
+ Gets the feature.This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features.
+
+ The feature.
+ The version.
+
+ Returns feature
+
+
+
+
+ ssociate an object to a key on this node. The object can later be retrieved from this node by calling getUserData with the same key.
+
+ The user key.
+ The user data.
+ The handler.
+
+ Returns user data
+
+
+
+
+ Retrieves the object associated to a key on a this node. The object must first have been set to this node by calling setUserData with the same key.
+
+ The user key.
+
+ Returns user data
+
+
+
+
+ The name of this node, depending on its type.
+
+
+ The name of the node.
+
+
+
+
+ The value of this node, depending on its type.
+
+
+ The node value.
+
+
+
+
+ A code representing the type of the underlying object.
+
+
+ The type of the node.
+
+
+
+
+ The parent of this node. All nodes, except Attr, Document, DocumentFragment, Entity, and Notation may have a parent. However, if a node has just been created and not yet added to the tree, or if it has been removed from the tree, this is null.
+
+
+ The parent node.
+
+
+
+
+ A NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes..
+
+
+ The child nodes.
+
+
+
+
+ The first child of this node. If there is no such node, this returns null.
+
+
+ The first child.
+
+
+
+
+ The last child of this node. If there is no such node, this returns null.
+
+
+ The last child.
+
+
+
+
+ The node immediately preceding this node. If there is no such node, this returns null.
+
+
+ The previous sibling.
+
+
+
+
+ The node immediately following this node. If there is no such node, this returns null.
+
+
+ The next sibling.
+
+
+
+
+ A NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.
+
+
+ The attributes.
+
+
+
+
+ The Document object associated with this node. This is also the Document object used to create new nodes. When this node is a Document or a DocumentType which is not used with any Document yet, this is null.
+
+
+ The owner document.
+
+
+
+
+ Returns whether this node has any children.
+
+
+ true if this instance has child nodes; otherwise, false.
+
+
+
+
+ The namespace URI of this node, or null if it is unspecified.
+
+
+ The namespace URI.
+
+
+
+
+ The namespace prefix of this node, or null if it is unspecified. When it is defined to be null, setting it has no effect
+
+
+ The prefix.
+
+
+
+
+ Returns the local part of the qualified name of this node.
+ For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as Document.createElement(), this is always null.
+
+
+ The name of the local.
+
+
+
+
+ Returns whether this node (if it is an element) has any attributes.
+
+
+ true if this instance has attributes; otherwise, false.
+
+
+
+
+ The absolute base URI of this node or null if the implementation wasn't able to obtain an absolute URI.
+
+
+ The base URI.
+
+
+
+
+ This attribute returns the text content of this node and its descendants. When it is defined to be null, setting it has no effect. On setting, any possible children this node may have are removed and, if it the new string is not empty or null, replaced by a single Text node containing the string this attribute is set to.
+
+
+ The content of the text.
+
+
+
+
+ Returns the name of this attribute.
+
+
+ The name of this attribute.
+
+
+
+
+ True if this attribute was explicitly given a value in the instance document, false otherwise.
+
+
+ true if specified; otherwise, false.
+
+
+
+
+ On retrieval, the value of the attribute is returned as a string.
+
+
+ The value.
+
+
+
+
+ The Element node this attribute is attached to or null if this attribute is not in use.
+
+
+ The owner element.
+
+
+
+
+ The type information associated with this attribute.
+
+
+ The schema type information.
+
+
+
+
+ Returns whether this attribute is known to be of type ID (i.e. to contain an identifier for its owner element) or not.
+
+
+ true if this instance is id; otherwise, false.
+
+
+
+
+ Represents attribute collections.
+
+
+
+
+ Represents collections of nodes that can be accessed by name.
+
+
+
+
+ Retrieves a node specified by name.
+
+ The node name.
+ Returns node.
+
+
+
+ Adds a node using its nodeName attribute. If a node with that name is already present in this map, it is replaced by the new one. Replacing a node by itself has no effect.
+
+ The HTML node.
+
+ Returns node.
+
+
+
+
+ Removes a node specified by name.
+
+ The element name.
+
+ Removed node.
+
+
+
+
+ Retrieves a node specified by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns node.
+
+
+
+
+ Adds a node using its namespaceUri and localName. If a node with that namespace URI and that local name is already present in this map, it is replaced by the new one. Replacing a node by itself has no effect.
+
+ The html node.
+
+ Returns node.
+
+
+
+
+ Removes a node specified by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns node.
+
+
+
+
+ The number of nodes in this map.
+
+
+ The length.
+
+
+
+
+ Returns the indexth item in the map. If index is greater than or equal to the number of nodes in this map, this returns null.
+
+
+ The .
+
+ The index.
+
+ Returns node.
+
+
+
+
+ Gets the attribute.
+
+ The attribute name.
+
+ Returns attribute
+
+
+
+
+ Sets the attribute.
+
+ The argument.
+
+ Returns attribute
+
+
+
+
+ Removes the attribute.
+
+ The attribute name.
+
+ Returns attribute
+
+
+
+
+ Removes the attribute.
+
+ The attribute.
+
+ Returns attribute
+
+
+
+
+ Gets the attribute NS.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns attribute
+
+
+
+
+ Sets the attribute NS.
+
+ The argument.
+
+ Returns attribute
+
+
+
+
+ Removes the attribute NS.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns attribute
+
+
+
+
+ Determines whether collection contains the attribute whit specified name.
+
+ The attribute name.
+
+ true if [contains] [the specified name]; otherwise, false.
+
+
+
+
+ CData sections are used to escape blocks of text containing characters that would otherwise be regarded as markup.
+
+
+
+
+ The CharacterData extends Node with a set of attributes and methods for accessing character data in the DOM.
+
+
+
+
+ Extracts a range of data from the node.
+
+ The offset.
+ The count.
+
+ The text data
+
+
+
+
+ Append the string to the end of the character data of the node.
+
+ The argument.
+
+
+
+ Insert a string at the specified 16-bit unit offset.
+
+ The offset.
+ The argument.
+
+
+
+ Remove a range of 16-bit units from the node.
+
+ The offset.
+ The count.
+
+
+
+ Replace the characters starting at the specified 16-bit unit offset with the specified string.
+
+ The offset.
+ The count.
+ The argument.
+
+
+
+ The character data of the node that implements this interface.
+
+
+ The data.
+
+
+
+
+ The number of 16-bit units that are available through data and the substringData method below. This may have the value zero, i.e., CharacterData nodes may be empty.
+
+
+ The length.
+
+
+
+
+ Inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ''.
+
+
+
+
+ The Document represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.
+
+
+
+
+ DocumentTraversal contains methods that create iterators and
+ tree-walkers to traverse a node and its children in document order (depth
+ first, pre-order traversal, which is equivalent to the order in which the
+ start tags occur in the text representation of the document). In DOMs
+ which support the Traversal feature, DocumentTraversal will
+ be implemented by the same objects that implement the Document interface.
+ See also the Document object Model (DOM) Level 2 Traversal and Range Specification.
+ @since DOM Level 2
+
+
+
+
+ Create a new NodeIterator over the subtree rooted at the
+ specified node.
+
+ node which will be iterated together with its children.
+ The iterator is initially positioned just before this node. The
+ whatToShow flags and the filter, if any, are not
+ considered when setting this position. The root must not be
+ null.
+ flag specifies which node types may appear in
+ the logical view of the tree presented by the iterator. See the
+ description of NodeFilter for the set of possible
+ SHOW_ values.These flags can be combined using
+ OR.
+
+ NodeFilter to be used with this
+ TreeWalker, or null to indicate no filter.
+
+ The newly created NodeIterator.
+
+ NotSupportedErr: Raised if the specified root is
+ null.
+
+
+
+ Create a new TreeWalker over the subtree rooted at the
+ specified node.
+
+ node which will serve as the root for the
+ TreeWalker. The whatToShow flags and the
+ NodeFilter are not considered when setting this value;
+ any node type will be accepted as the root. The
+ currentNode of the TreeWalker is
+ initialized to this node, whether or not it is visible. The
+ root functions as a stopping point for traversal
+ methods that look upward in the document structure, such as
+ parentNode and nextNode. The root must
+ not be null.
+ flag specifies which node types may appear in
+ the logical view of the tree presented by the tree-walker. See the
+ description of NodeFilter for the set of possible
+ SHOW_ values.These flags can be combined using OR.
+
+ NodeFilter to be used with this
+ TreeWalker, or null to indicate no filter.
+
+ The newly created TreeWalker.
+
+ NotSupportedErr: Raised if the specified root is
+ null.
+
+
+
+ Creates an element of the type specified. Note that the instance returned implements the Element interface, so attributes can be specified directly on the returned object.
+
+ Name of the tag.
+
+ The .
+
+
+
+
+ Creates an empty DocumentFragment object.
+
+
+ The .
+
+
+
+
+ Creates a Text node given the specified string.
+
+ The text data.
+
+ The .
+
+
+
+
+ Creates a Comment node given the specified string.
+
+ The comment data.
+
+ The .
+
+
+
+
+ Creates a CDataSection node whose value is the specified string.
+
+ The CData data.
+
+ The .
+
+
+
+
+ Creates a ProcessingInstruction node given the specified name and data strings.
+
+ The target.
+ The instruction data.
+
+ The .
+
+
+
+
+ Creates an Attr of the given name.
+
+ The attribute name.
+
+ The .
+
+
+
+
+ Creates an EntityReference object. In addition, if the referenced entity is known, the child list of the EntityReference node is made the same as that of the corresponding Entity node.
+
+ The entity name.
+
+ The .
+
+
+
+
+ Creates a DocumentType node.
+
+ The document type name.
+ The public id.
+ The system id.
+ The internal subset.
+
+ The .
+
+
+
+
+ Returns a NodeList of all the Elements in document order with a given tag name and are contained in the document.
+
+ The tagname.
+
+ Returns nodes.
+
+
+
+
+ Imports a node from another document to this document, without altering or removing the source node from the original document; this method creates a new copy of the source node.
+
+ The imported node.
+ if set to true [deep].
+
+ The .
+
+
+
+
+ Creates an element of the given qualified name and namespace URI.
+
+ The namespace URI.
+ Name of the qualified.
+
+ The .
+
+
+
+
+ Creates an attribute of the given qualified name and namespace URI.
+
+ The namespace URI.
+ Name of the qualified.
+
+ The .
+
+
+
+
+ Returns a NodeList of all the Elements with a given local name and namespace URI in document order.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns nodes
+
+
+
+
+ Returns the Element that has an ID attribute with the given value. If no such element exists, this returns null. If more than one element has an ID attribute with that value, what is returned is undefined.
+
+ The element id.
+
+ The .
+
+
+
+
+ Attempts to adopt a node from another document to this document.
+
+ The source.
+
+ Adopted node
+
+
+
+
+ This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form. As a consequence, this method updates the replacement tree of EntityReference nodes and normalizes Text nodes, as defined in the method Node.normalize().
+
+
+
+
+ Rename an existing node of type ELEMENT_NODE or ATTRIBUTE_NODE.
+
+ The node to rename.
+ The namespace URI.
+ Name of the qualified.
+
+ The .
+
+
+
+
+ Open a document stream for writing. If a document exists in the target, this method clears it.
+ Note: This method and the ones following allow a user to add to or replace the structure model of a document using strings of unparsed HTML. At the time of writing alternate methods for providing similar functionality for both HTML and XML documents were being considered (see [DOM Level 3 Load and Save]).
+
+
+
+
+ Closes a document stream opened by open() and forces
+ rendering.
+
+
+
+
+ Write a string of text to a document stream opened by
+ open(). Note that the function will produce a document
+ which is not necessarily driven by a DTD and therefore might be
+ produce an invalid result in the context of the document.
+
+ The string to be parsed into some structure in the
+ document structure model.
+
+
+
+ Write a string of text followed by a newline character to a document
+ stream opened by open(). Note that the function will
+ produce a document which is not necessarily driven by a DTD and
+ therefore might be produce an invalid result in the context of the
+ document
+
+ The string to be parsed into some structure in the
+ document structure model.
+
+
+
+ The Document Type Declaration associated with this document.
+
+
+ The document type.
+
+
+
+
+ The DOMImplementation object that handles this document.
+
+
+ The DOMImplementation object.
+
+
+
+
+ This is a convenience attribute that allows direct access to the child node that is the document element of the document.
+
+
+ The document element.
+
+
+
+
+ An attribute specifying the encoding used for this document at the time of the parsing. This is null when it is not known, such as when the Document was created in memory.
+
+
+ The input encoding.
+
+
+
+
+ An attribute specifying, as part of the XML declaration, the encoding of this document. This is null when unspecified or when it is not known, such as when the Document was created in memory.
+
+
+ The XML encoding.
+
+
+
+
+ An attribute specifying, as part of the XML declaration, whether this document is standalone. This is false when unspecified.
+
+
+ true if [XML standalone]; otherwise, false.
+
+
+
+
+ An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if this document supports the "XML" feature, the value is "1.0". If this document does not support the "XML" feature, the value is always null.
+
+
+ The XML version.
+
+
+
+
+ An attribute specifying whether error checking is enforced or not. When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DomException on DOM operations or report errors while using Document.normalizeDocument(). In case of error, the behavior is undefined. This attribute is true by default.
+
+
+ true if [strict error checking]; otherwise, false.
+
+
+
+
+ The location of the document or null if undefined or if the Document was created using DOMImplementation.createDocument.
+
+
+ The document URI.
+
+
+
+
+ Gets the DOM config. The configuration used when Document.normalizeDocument() is invoked.
+
+
+ The DOM configuration.
+
+
+
+
+ A document is always set to one of three modes: no-quirks mode, the default; quirks mode, used typically for legacy documents; and limited-quirks mode. Unless stated otherwise, a document must be in no-quirks mode.
+
+
+ The quirks mode.
+
+
+
+
+ Returns a fragment of HTML or XML that represents the element's contents.
+ Can be set, to replace the contents of the element with nodes parsed from the given string.
+
+
+ The inner HTML.
+
+
+
+
+ Returns a fragment of HTML or XML that represents the element and its contents.
+ Can be set, to replace the element with nodes parsed from the given string.
+
+
+ The outer HTML.
+
+
+
+
+ DocumentFragment is a "lightweight" or "minimal" Document object. It is very common to want to be able to extract a portion of a document's tree or to create a new fragment of a document.
+
+
+
+
+ The DocumentType provides an interface to the list of entities that are defined for the document
+
+
+
+
+ The name of DTD; i.e., the name immediately following the DOCTYPE keyword.
+
+
+ The name of DTD.
+
+
+
+
+ A NamedNodeMap containing the general entities, both external and internal, declared in the DTD.
+
+
+ The entities.
+
+
+
+
+ A NamedNodeMap containing the notations declared in the DTD.
+
+
+ The notations.
+
+
+
+
+ The public identifier of the external subset.
+
+
+ The public identifier.
+
+
+
+
+ The system identifier of the external subset. This may be an absolute URI or not.
+
+
+ The system identifier.
+
+
+
+
+ The internal subset as a string, or null if there is none.
+
+
+ The internal subset.
+
+
+
+
+ DOMError is an interface that describes an error.
+
+
+
+
+ The severity of the error, either SEVERITY_WARNING, SEVERITY_ERROR, or SEVERITY_FATAL_ERROR.
+
+
+ The severity of the error.
+
+
+
+
+ An implementation specific string describing the error that occurred.
+
+
+ The message.
+
+
+
+
+ A DOMString indicating which related data is expected in relatedData. Users should refer to the specification of the error in order to find its DOMString type and relatedData definitions if any.
+
+
+ The type.
+
+
+
+
+ The related platform dependent exception if any.
+
+
+ The related exception.
+
+
+
+
+ The related DOMError.type dependent data if any.
+
+
+ The related data.
+
+
+
+
+ The location of the error.
+
+
+ The location.
+
+
+
+
+ DOMErrorHandler is a callback interface that the DOM implementation can call when reporting errors that happens while processing XML data, or when doing some other processing (e.g. validating a document). A DOMErrorHandler object can be attached to a Document using the "error-handler" on the DomConfiguration interface. If more than one error needs to be reported during an operation, the sequence and numbers of the errors passed to the error handler are implementation dependent.
+
+
+
+
+ This method is called on the error handler when an error occurs.
+ If an exception is thrown from this method, it is considered to be equivalent of returning true
+
+ The error.
+
+ True if error was handled
+
+
+
+
+ The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.
+
+
+
+
+ Test if the DOM implementation implements a specific feature and version, as specified in DOM Features.
+
+ The feature.
+ The version.
+
+ true if the specified feature has feature; otherwise, false.
+
+
+
+
+ Creates an empty DocumentType node. Entity declarations and notations are not made available. Entity reference expansions and default attribute additions do not occur.
+
+ Name of the qualified.
+ The public id.
+ The system id.
+
+ The .
+
+
+
+
+ Creates a DOM Document object of the specified type with its document element.
+
+ The namespace URI.
+ Name of the qualified.
+ The doctype.
+
+ Returns document.
+
+
+
+
+ This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features.
+
+ The feature.
+ The version.
+
+ Returns a specialized object which implements the feature
+
+
+
+
+ The DomImplementationList provides an ordered collection of DOM implementations, without defining or constraining how this collection is implemented. The items in the DomImplementationList are accessible via an integral index, starting from 0.
+
+
+
+
+ Returns the indexth item in the collection.
+
+
+ The .
+
+ The index.
+
+ The .
+
+
+
+
+ The number of DOMImplementations in the list. The range of valid child node indices is 0 to length-1 inclusive.
+
+
+ The length.
+
+
+
+
+ This permits a DOM implementer to supply one or more implementations, based upon requested features and versions, as specified in DOM Features.
+
+
+
+
+ A method to request the first DOM implementation that supports the specified features.
+
+ The features.
+
+ The .
+
+
+
+
+ A method to request a list of DOM implementations that support the specified features and versions, as specified in DOM Features.
+
+ The features.
+
+ The .
+
+
+
+
+ DOMLocator describes a location (e.g. where an error occurred).
+
+
+
+
+ The line number this locator is pointing to, or -1 if there is no column number available.
+
+
+ The line number.
+
+
+
+
+ The column number this locator is pointing to, or -1 if there is no column number available.
+
+
+ The column number.
+
+
+
+
+ The byte offset into the input source this locator is pointing to or -1 if there is no byte offset available.
+
+
+ The byte offset.
+
+
+
+
+ The UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646], offset into the input source this locator is pointing to or -1 if there is no UTF-16 offset available.
+
+
+ The UTF16 offset.
+
+
+
+
+ The node this locator is pointing to, or null if no node is available.
+
+
+ The related node.
+
+
+
+
+ The URI this locator is pointing to, or null if no URI is available.
+
+
+ The URI.
+
+
+
+
+ Represents DOM name object
+
+
+
+
+ Gets the name of the local.
+
+
+ The name of the local.
+
+
+
+
+ Gets the name.
+
+
+ The name.
+
+
+
+
+ Gets the namespace URI.
+
+
+ The namespace URI.
+
+
+
+
+ Gets or sets the prefix.
+
+
+ The prefix.
+
+
+
+
+ The Element interface represents an element in an HTML or XML document.
+
+
+
+
+ The ElementTraversal interface is a set of read-only attributes which allow an author to easily navigate between elements in a document. In conforming implementations of Element Traversal, all objects that implement Element must also implement the ElementTraversal interface.
+
+
+
+
+ Returns the first child element node of this element. null if this element has no child elements.
+
+
+ The first child element.
+
+
+
+
+ Returns the last child element node of this element. null if this element has no child elements.
+
+
+ The last child element.
+
+
+
+
+ Returns the previous sibling element node of this element. null if this element has no element sibling nodes that come before this one in the document tree.
+
+
+ The previous sibling element.
+
+
+
+
+ Returns the next sibling element node of this element. null if this element has no element sibling nodes that come after this one in the document tree.
+
+
+ The next sibling element.
+
+
+
+
+ Returns the current number of element nodes that are children of this element. 0 if this element has no child nodes that are of nodeType 1.
+
+
+ The child element count.
+
+
+
+
+ Retrieves an attribute value by name.
+
+ The name of the attribute to retrieve.
+
+ Returns attribute value
+
+
+
+
+ Adds a new attribute. If an attribute with that name is already present in the element, its value is changed to be that of the value parameter
+
+ The attribute name.
+ The value.
+
+
+
+ Removes an attribute by name.
+
+ The attribute name.
+
+
+
+ Retrieves an attribute node by name.
+
+ The attribute name.
+
+ Returns attribute value
+
+
+
+
+ Adds a new attribute node. If an attribute with that name (nodeName) is already present in the element, it is replaced by the new one.
+
+ The new attr.
+
+ Returns attribute
+
+
+
+
+ Removes the specified attribute node.
+
+ The old attr.
+
+ Returns attribute
+
+
+
+
+ Returns a NodeList of all descendant Elements with a given tag name, in document order.
+
+ The tag name.
+
+ Returns attribute
+
+
+
+
+ Retrieves an attribute value by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns attribute
+
+
+
+
+ Adds a new attribute. If an attribute with the same local name and namespace URI is already present on the element, its prefix is changed to be the prefix part of the qualifiedName, and its value is changed to be the value parameter.
+
+ The namespace URI.
+ Name of the qualified.
+ The value.
+
+
+
+ Removes an attribute by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+
+
+ Retrieves an Attr node by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns attribute
+
+
+
+
+ Adds a new attribute. If an attribute with that local name and that namespace URI is already present in the element, it is replaced by the new one.
+
+ The new attr.
+
+ Returns attribute
+
+
+
+
+ Returns a NodeList of all the descendant Elements with a given local name and namespace URI in document order.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns elements
+
+
+
+
+ Returns true when an attribute with a given name is specified on this element or has a default value, false otherwise.
+
+ The attribute name.
+
+ true if the specified name has attribute; otherwise, false.
+
+
+
+
+ Returns true when an attribute with a given local name and namespace URI is specified on this element or has a default value, false otherwise.
+
+ The namespace URI.
+ Name of the local.
+
+ true if the specified namespace URI has attribute NS; otherwise, false.
+
+
+
+
+ If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
+
+ The attribute name.
+ if set to true [is id].
+
+
+
+ If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
+
+ The namespace URI.
+ Name of the local.
+ if set to true [is id].
+
+
+
+ If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
+
+ The id attr.
+ if set to true [is id].
+
+
+
+ The name of the element.
+
+
+ The name of the tag.
+
+
+
+
+ The type information associated with this element.
+
+
+ The schema type information.
+
+
+
+
+ Returns a fragment of HTML or XML that represents the element's contents.
+ Can be set, to replace the contents of the element with nodes parsed from the given string.
+
+
+ The inner HTML.
+
+
+
+
+ Returns a fragment of HTML or XML that represents the element and its contents.
+ Can be set, to replace the element with nodes parsed from the given string.
+
+
+ The outer HTML.
+
+
+
+
+ Represents a known entity, either parsed or unparsed, in an XML document.
+
+
+
+
+ The public identifier associated with the entity if specified, and null otherwise.
+
+
+ The public identifier.
+
+
+
+
+ The system identifier associated with the entity if specified, and null otherwise. This may be an absolute URI or not.
+
+
+ The system identifier.
+
+
+
+
+ For unparsed entities, the name of the notation for the entity. For parsed entities, this is null.
+
+
+ The name of the notation.
+
+
+
+
+ An attribute specifying the encoding used for this entity at the time of parsing, when it is an external parsed entity. This is null if it an entity from the internal subset or if it is not known.
+
+
+ The input encoding.
+
+
+
+
+ An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity. This is null otherwise.
+
+
+ The XML encoding.
+
+
+
+
+ An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity. This is null otherwise.
+
+
+ The XML version.
+
+
+
+
+ EntityReference nodes may be used to represent an entity reference in the tree.
+
+
+
+
+ Provides an ordered collection of parallel pairs of name and namespace values (which could be null values).
+ The items in the NameList are accessible via an integral index, starting from 0.
+
+
+
+
+ Returns the indexth name item in the collection..
+
+ The index.
+
+ The name at the indexth position in the NameList, or null if there is no name for the specified index or if the index is out of range
+
+
+
+
+ Returns the indexth namespaceUri item in the collection..
+
+ The index.
+
+ The name at the indexth position in the NameList, or null if there is no name for the specified index or if the index is out of range
+
+
+
+
+ Test if a name is part of this NameList.
+
+ The elment name.
+
+ true if [contains] [the specified STR]; otherwise, false.
+
+
+
+
+ Test if the pair namespaceUri/name is part of this NameList.
+
+ The namespace URI.
+ The element name.
+
+ true if the pair namespaceUri/name has been found; otherwise, false.
+
+
+
+
+ The number of pairs (name and namespaceUri) in the list. The range of valid child node indices is 0 to length-1 inclusive.
+
+
+ The length.
+
+
+
+
+ The NodeList provides the abstraction of an ordered collection of nodes.
+
+
+
+
+ Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.
+
+
+ The .
+
+ The index.
+
+ Returns node.
+
+
+
+
+ The number of nodes in the list.
+
+
+ The length.
+
+
+
+
+ Represents a notation declared in the DTD.
+
+
+
+
+ The public identifier of this notation. If the public identifier was not specified, this is null.
+
+
+ The public identifier.
+
+
+
+
+ The system identifier of this notation. If the system identifier was not specified, this is null. This may be an absolute URI or not.
+
+
+ The system identifier.
+
+
+
+
+ The ProcessingInstruction represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document.
+
+
+
+
+ The target of this processing instruction.
+
+
+ The target.
+
+
+
+
+ The content of this processing instruction.
+
+
+ The data.
+
+
+
+
+ The Text interface inherits from CharacterData and represents the textual content (termed character data in XML) of an Element or Attr.
+
+
+
+
+ Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.
+
+ The offset.
+
+ The .
+
+
+
+
+ Replaces the text of the current node and all logically-adjacent text nodes with the specified text. All logically-adjacent text nodes are removed including the current node unless it was the recipient of the replacement text.
+
+ The content.
+
+ The .
+
+
+
+
+ Returns whether this text node contains element content whitespace, often abusively called "ignorable whitespace".
+
+
+ true if this instance is element content whitespace; otherwise, false.
+
+
+
+
+ Returns all text of Text nodes logically-adjacent text nodes to this node, concatenated in document order.
+
+
+ The whole text.
+
+
+
+
+ The TypeInfo represents a type referenced from Element or Attr nodes, specified in the schemas associated with the document.
+
+
+
+
+ This method returns if there is a derivation between the reference type definition, i.e. the TypeInfo on which the method is being called, and the other type definition, i.e. the one passed as parameters.
+
+ the namespace of the other type definition
+ the name of the other type definition.
+ the type of derivation and conditions applied between two types, as described in the list of constants provided in this interface.
+
+ If the document's schema is a DTD or no schema is associated with the document, this method will always return false. If the document's schema is an XML Schema, the method will true if the reference type definition is derived from the other type definition according to the derivation parameter. If the value of the parameter is 0 (no bit is set to 1 for the derivationMethod parameter), the method will return true if the other type definition can be reached by recursing any combination of {base type definition}, {item type definition}, or {member type definitions} from the reference type definition.
+
+
+
+
+ The name of a type declared for the associated element or attribute, or null if unknown.
+
+
+ The name of the type.
+
+
+
+
+ Gets the type namespace.The namespace of the type declared for the associated element or attribute or null if the element does not have declaration or if no namespace information is available.
+
+
+ The type namespace.
+
+
+
+
+ Provides a handler that gets called when the node the object is associated to is being cloned, imported, or renamed.
+
+
+
+
+ This method is called whenever the node for which this handler is registered is imported or cloned.
+
+ Specifies the type of operation that is being performed on the node.
+ Specifies the key for which this handler is being called.
+ Specifies the data for which this handler is being called.
+ Specifies the node being cloned, adopted, imported, or renamed. This is null when the node is being deleted.
+ Specifies the node newly created if any, or null.
+
+
+
+ Integer parser mode constants
+
+
+
+
+ Create a synchronous LSParser.
+
+
+
+
+ Create an asynchronous LSParser.
+
+
+
+
+ DOMImplementationLS contains the factory methods for creating Load and Save objects.
+
+
+
+
+ Create a new LSParser. The newly constructed parser may then be configured by means of its DomConfiguration object, and used to parse documents by means of its parse method.
+
+ The syncronization mode.
+ Type of the schema.
+
+ The instance of the LS Parser.
+
+
+
+
+ Create a new LSSerializer object.
+
+
+ The instance of the LS Serializer.
+
+
+
+
+ Create a new empty input source object where LSInput.characterStream, LSInput.byteStream, LSInput.stringData LSInput.systemId, LSInput.publicId, LSInput.baseURI, and LSInput.encoding are null, and LSInput.certifiedText is false.
+
+
+ The instance of the LS Input source.
+
+
+
+
+ Create a new empty output destination object where LSOutput.characterStream, LSOutput.byteStream, LSOutput.systemId, LSOutput.encoding are null.
+
+
+ The instance of the LS Output source.
+
+
+
+
+ This interface represents an input source for data.
+
+
+
+
+ An attribute of a language and binding dependent type that represents a stream of 16-bit units. The application must encode the stream using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when using character streams. If an XML declaration is present, the value of the encoding attribute will be ignored.
+
+
+ The character stream.
+
+
+
+
+ An attribute of a language and binding dependent type that represents a stream of bytes.
+ If the application knows the character encoding of the byte stream, it should set the encoding attribute. Setting the encoding in this way will override any encoding specified in an XML declaration in the data.
+
+
+ The byte stream.
+
+
+
+
+ String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of the encoding attribute will be ignored.
+
+
+ The string data.
+
+
+
+
+ The system identifier, a URI reference [IETF RFC 2396], for this input source. The system identifier is optional if there is a byte stream, a character stream, or string data. It is still useful to provide one, since the application will use it to resolve any relative URIs and can include it in error messages and warnings. (The LSParser will only attempt to fetch the resource identified by the URI reference if there is no other input available in the input source.)
+ If the application knows the character encoding of the object pointed to by the system identifier, it can set the encoding using the encoding attribute.
+ If the specified system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the DOM implementation will attempt to resolve the relative URI with the baseURI as the base, if that fails, the behavior is implementation dependent.
+
+
+ The system identifier.
+
+
+
+
+ The public identifier for this input source. This may be mapped to an input source using an implementation dependent mechanism (such as catalogues or other mappings). The public identifier, if specified, may also be reported as part of the location information when errors are reported.
+
+
+ The public identifier.
+
+
+
+
+ The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for resolving a relative systemId to an absolute URI.
+ If, when used, the base URI is itself a relative URI, an empty string, or null, the behavior is implementation dependent.
+
+
+ The base URI.
+
+
+
+
+ The character encoding, if known. The encoding must be a string acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3 "Character Encoding in Entities").
+
+
+ The encoding.
+
+
+
+
+ If set to true, assume that the input is certified (see section 2.13 in [XML 1.1]) when parsing [XML 1.1].
+
+
+ true if [certified text]; otherwise, false.
+
+
+
+
+ This interface represents a load event object that signals the completion of a document load.
+
+
+
+
+ The document that finished loading.
+
+
+ The new document.
+
+
+
+
+ The input source that was parsed.
+
+
+ The input source.
+
+
+
+
+ This interface represents an output destination for data.
+ This interface allows an application to encapsulate information about an output destination in a single object, which may include a URI, a byte stream (possibly with a specified encoding), a base URI, and/or a character stream.
+
+
+
+
+ An attribute of a language and binding dependent type that represents a writable stream to which 16-bit units can be output.
+
+
+ The character stream.
+
+
+
+
+ An attribute of a language and binding dependent type that represents a writable stream of bytes.
+
+
+ The byte stream.
+
+
+
+
+ The system identifier, a URI reference [IETF RFC 2396], for this output destination.
+ If the system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the behavior is implementation dependent.
+
+
+ The system identifier.
+
+
+
+
+ The character encoding to use for the output. The encoding must be a string acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3 "Character Encoding in Entities"), it is recommended that character encodings registered (as charsets) with the Internet Assigned Numbers Authority [IANA-CHARSETS] should be referred to using their registered names.
+
+
+ The encoding.
+
+
+
+
+ An interface to an object that is able to build, or augment, a DOM tree from various input sources.
+
+
+
+
+ Parse an XML document from a resource identified by a LSInput.
+
+ The input source.
+
+ The instance.
+
+
+
+
+ Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), the behavior is not defined by this specification, future versions of this specification may define the behavior.
+
+ The page URI.
+
+ The instance.
+
+
+
+
+ Parse an XML fragment from a resource identified by a LSInput and insert the content into an existing document at the position specified with the context and action arguments. When parsing the input stream, the context node (or its parent, depending on where the result will be inserted) is used for resolving unbound namespace prefixes. The context node's ownerDocument node (or the node itself if the node of type DOCUMENT_NODE) is used to resolve default attributes and entity references.
+
+ The input source.
+ The context argument.
+ The action.
+
+ Return the node that is the result of the parse operation. If the result is more than one top-level node, the first one is returned.
+
+
+
+
+ Abort the loading of the document that is currently being loaded by the LSParser. If the LSParser is currently not busy, a call to this method does nothing.
+
+
+
+
+ The DomConfiguration object used when parsing an input source. This DomConfiguration is specific to the parse operation. No parameter values from this DomConfiguration object are passed automatically to the DomConfiguration object on the Document that is created, or used, by the parse operation. The DOM application is responsible for passing any needed parameter values from this DomConfiguration object to the DomConfiguration object referenced by the Document object.
+
+
+ The DOM configuration.
+
+
+
+
+ When a filter is provided, the implementation will call out to the filter as it is constructing the DOM tree structure. The filter can choose to remove elements from the document being constructed, or to terminate the parsing early.
+ The filter is invoked after the operations requested by the DomConfiguration parameters have been applied. For example, if "validate" is set to true, the validation is done before invoking the filter.
+
+
+ The filter.
+
+
+
+
+ true if the LSParser is asynchronous, false if it is synchronous.
+
+
+ true if asynchronous; otherwise, false.
+
+
+
+
+ true if the LSParser is currently busy loading a document, otherwise false.
+
+
+ true if busy; otherwise, false.
+
+
+
+
+ LSParserFilters provide applications the ability to examine nodes as they are being constructed while parsing. As each node is examined, it may be modified or removed, or the entire parse may be terminated early.
+
+
+
+
+ The parser will call this method after each Element start tag has been scanned, but before the remainder of the Element is processed. The intent is to allow the element, including any children, to be efficiently skipped. Note that only element nodes are passed to the startElement function.
+
+ The element argument.
+
+ - FilterAccept if the Element should be included in the DOM document being built.
+ - FilterReject if the Element and all of its children should be rejected.
+ - FilterSkip if the Element should be skipped. All of its children are inserted in place of the skipped Element node.
+ - FilterInterrupt if the filter wants to stop the processing of the document. Interrupting the processing of the document does no longer guarantee that the resulting DOM tree is XML well-formed. The Element is rejected.
+
+
+
+
+ This method will be called by the parser at the completion of the parsing of each node. The node and all of its descendants will exist and be complete. The parent node will also exist, although it may be incomplete, i.e. it may have additional children that have not yet been parsed. Attribute nodes are never passed to this function.
+
+ The node argument.
+
+ - FilterAccept if this Node should be included in the DOM document being built.
+ - FilterReject if the Node and all of its children should be rejected.
+ - FilterSkip if the Node should be skipped and the Node should be replaced by all the children of the Node.
+ - FilterInterrupt if the filter wants to stop the processing of the document. Interrupting the processing of the document does no longer guarantee that the resulting DOM tree is XML well-formed. The Node is accepted and will be the last completely parsed node.
+
+
+
+
+ Tells the LSParser what types of nodes to show to the method LSParserFilter.acceptNode. If a node is not shown to the filter using this attribute, it is automatically included in the DOM document being built. See NodeFilter for definition of the constants. The constants ShowAttribute, ShowDocument, ShowDocumentType, ShowNotation, ShowEntity, and ShowDocumentFragment are meaningless here. Those nodes will never be passed to LSParserFilter.acceptNode.
+ The constants used here are defined in [DOM Level 2 Traversal and Range].
+
+
+ The what to show.
+
+
+
+
+ This interface represents a progress event object that notifies the application about progress as a document is parsed.
+
+
+
+
+ The input source that is being parsed.
+
+
+ The input source.
+
+
+
+
+ The current position in the input source, including all external entities and other resources that have been read.
+
+
+ The position.
+
+
+
+
+ The total size of the document including all external resources, this number might change as a document is being parsed if references to more external resources are seen.
+
+
+ The total size.
+
+
+
+
+ LSResourceResolver provides a way for applications to redirect references to external resources.
+
+
+
+
+ Allow the application to resolve external resources.
+ The LSParser will call this method before opening any external resource, including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element (however, the top-level document entity is not passed to this method). The application may then request that the LSParser resolve the external resource itself, that it use an alternative URI, or that it use an entirely different input source.
+ Application writers can use this method to redirect external system identifiers to secure and/or local URI, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).
+
+ The type of the resource being resolved.
+ The namespace URI.
+ The public identifier.
+ The system identifier.
+ The base URI.
+
+ A object describing the new input source, or null to request that the parser open a regular URI connection to the resource.
+
+
+
+
+ A LSSerializer provides an API for serializing (writing) a DOM document out into XML. The XML data is written to a string or an output stream. Any changes or fixups made during the serialization affect only the serialized data. The Document object and its children are never altered by the serialization operation.
+
+
+
+
+ Serialize the specified node as described above in the general description of the LSSerializer interface. The output is written to the supplied LSOutput.
+ When writing to a LSOutput, the encoding is found by looking at the encoding information that is reachable through the LSOutput and the item to be written (or its owner document) in this order:
+
+ The node argument.
+ The destination.
+
+ Returns true if node succeeded serialized, otherwise false
+
+
+
+
+ A convenience method that acts as if LSSerializer.write was called with a LSOutput with no encoding specified and LSOutput.systemId set to the uri argument.
+
+ The node argument.
+ The specified URI.
+
+ Returns true if node succeeded serialized, otherwise false
+
+
+
+
+ Serialize the specified node as described above in the general description of the LSSerializer interface. The output is written to a DOMString that is returned to the caller. The encoding used is the encoding of the DOMString type, i.e. UTF-16. Note that no Byte Order Mark is generated in a DOMString object.
+
+ The node argument.
+
+ Returns serialized string.
+
+
+
+
+ The DomConfiguration object used by the LSSerializer when serializing a DOM node.
+
+
+ The DOM configuration.
+
+
+
+
+ The end-of-line sequence of characters to be used in the XML being written out. Any string is supported, but XML treats only a certain set of characters sequence as end-of-line (See section 2.11, "End-of-Line Handling" in [XML 1.0], if the serialized content is XML 1.0 or section 2.11, "End-of-Line Handling" in [XML 1.1], if the serialized content is XML 1.1). Using other character sequences than the recommended ones can result in a document that is either not serializable or not well-formed).
+
+
+ The new line.
+
+
+
+
+ When the application provides a filter, the serializer will call out to the filter before serializing each Node. The filter implementation can choose to remove the node from the stream or to terminate the serialization early.
+ The filter is invoked after the operations requested by the DomConfiguration parameters have been applied. For example, CData sections won't be passed to the filter if "cdata-sections" is set to false.
+
+
+ The filter.
+
+
+
+
+ LSSerializerFilters provide applications the ability to examine nodes as they are being serialized and decide what nodes should be serialized or not. The LSSerializerFilter interface is based on the NodeFilter interface defined in [DOM Level 2 Traversal and Range].
+
+
+
+
+ Filters are objects that know how to "filter out" nodes. If a
+ NodeIterator or TreeWalker is given a
+ NodeFilter, it applies the filter before it returns the next
+ node. If the filter says to accept the node, the traversal logic returns
+ it; otherwise, traversal looks for the next node and pretends that the
+ node that was rejected was not there.
+ The DOM does not provide any filters. NodeFilter is just an
+ interface that users can implement to provide their own filters.
+ NodeFilters do not need to know how to traverse from node
+ to node, nor do they need to know anything about the data structure that
+ is being traversed. This makes it very easy to write filters, since the
+ only thing they have to know how to do is evaluate a single node. One
+ filter may be used with a number of different kinds of traversals,
+ encouraging code reuse.
+ See also the Document object Model (DOM) Level 2 Traversal and Range Specification.
+ @since DOM Level 2
+
+
+
+
+ Test whether a specified node is visible in the logical view of a
+ TreeWalker or NodeIterator. This function
+ will be called by the implementation of TreeWalker and
+ NodeIterator; it is not normally called directly from
+ user code. (Though you could do so if you wanted to use the same
+ filter to guide your own application logic.)
+
+ node to check to see if it passes the filter or not.
+
+ A constant to determine whether the node is accepted,
+ rejected, or skipped, as defined above.
+
+
+
+
+ Tells the LSSerializer what types of nodes to show to the filter. If a node is not shown to the filter using this attribute, it is automatically serialized. See NodeFilter for definition of the constants. The constants ShowDocument, ShowDocumentType, ShowDocumentFragment, ShowNotation, and ShowEntity are meaningless here, such nodes will never be passed to a LSSerializerFilter.
+
+
+ The what to show.
+
+
+
+
+ Parser or write operations may throw an LsException if the processing is stopped
+
+
+
+
+ If an attempt was made to load a document, or an XML Fragment, using LSParser and the processing has been stopped.
+
+
+
+
+ If an attempt was made to serialize a Node using LSSerializer and the processing has been stopped.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception code.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception code.
+ The message.
+
+
+
+ An integer indicating the type of error generated
+
+
+ The type code.
+
+
+
+
+ A set of possible actions for the parseWithContext method.
+
+
+
+
+ Append the result of the parse operation as children of the context node. For this action to work, the context node must be an Element or a DocumentFragment.
+
+
+
+
+ Replace all the children of the context node with the result of the parse operation. For this action to work, the context node must be an Element, a Document, or a DocumentFragment.
+
+
+
+
+ Insert the result of the parse operation as the immediately preceding sibling of the context node. For this action to work the context node's parent must be an Element or a DocumentFragment.
+
+
+
+
+ Insert the result of the parse operation as the immediately following sibling of the context node. For this action to work the context node's parent must be an Element or a DocumentFragment.
+
+
+
+
+ Replace the context node with the result of the parse operation. For this action to work, the context node must have a parent, and the parent must be an Element or a DocumentFragment.
+
+
+
+
+ Constants returned by startElement and acceptNode.
+
+
+
+
+ Accept the node.
+
+
+
+
+ Reject the node and its children.
+
+
+
+
+ Skip this single node. The children of this node will still be considered.
+
+
+
+
+ Interrupt the normal processing of the document.
+
+
+
+
+ Represents collections of nodes that can be accessed by name.
+
+ The type of the .
+
+
+
+ Initializes a new instance of the class.
+
+ The name comparison.
+
+
+
+ Removes the node at.
+
+ The index.
+
+ The removed instance.
+
+
+
+
+ Called when node was inserted.
+
+ The instance.
+
+
+
+ Called when node was removed.
+
+ The instance.
+
+
+
+ Adds the node.
+
+ The instance.
+
+ The instance.
+
+
+
+
+ Retrieves a node specified by name.
+
+ The node name.
+
+ Returns node.
+
+
+
+
+ Adds a node using its nodeName attribute. If a node with that name is already present in this map, it is replaced by the new one. Replacing a node by itself has no effect.
+
+ The HTML node.
+
+ Returns node.
+
+
+
+
+ Removes a node specified by name.
+
+ The element name.
+
+ Removed node.
+
+
+
+
+ Retrieves a node specified by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns node.
+
+
+
+
+ Adds a node using its namespaceUri and localName. If a node with that namespace URI and that local name is already present in this map, it is replaced by the new one. Replacing a node by itself has no effect.
+
+ The html node.
+ Returns node.
+
+
+
+ Removes a node specified by local name and namespace URI.
+
+ The namespace URI.
+ Name of the local.
+
+ Returns node.
+
+
+
+
+ Returns an enumerator that iterates through the collection
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ The number of nodes in this map.
+
+
+ The length.
+
+
+
+
+ Returns the indexth item in the map. If index is greater than or equal to the number of nodes in this map, this returns null.
+
+ The index.
+ Returns node.
+
+
+
+ Defines the types of HTML node.
+
+
+
+
+ An Element.
+
+
+
+
+ An Attribute.
+
+
+
+
+ A Text node.
+
+
+
+
+ A CDataSection.
+
+
+
+
+ An EntityReference.
+
+
+
+
+ An Entity.
+
+
+
+
+ A ProcessingInstruction.
+
+
+
+
+ A Comment.
+
+
+
+
+ A Document.
+
+
+
+
+ A DocumentType.
+
+
+
+
+ A DocumentFragment.
+
+
+
+
+ A Notation.
+
+
+
+
+ A declaration.
+
+
+
+
+ Represents DOM UserDataHandler operation type codes.
+
+
+
+
+ The node is cloned, using Node.cloneNode().
+
+
+
+
+ The node is imported, using Document.importNode().
+
+
+
+
+ The node is deleted.
+
+
+
+
+ The node is renamed, using Document.renameNode().
+
+
+
+
+ The node is adopted, using Document.adoptNode().
+
+
+
+
+ A document is always set to one of three modes: no-quirks mode, the default; quirks mode, used typically for legacy documents; and limited-quirks mode. Unless stated otherwise, a document must be in no-quirks mode.
+
+
+
+
+ The no-quirks mode
+
+
+
+
+ The quirks mode
+
+
+
+
+ limited-quirks mode
+
+
+
+
+ Iterators are used to step through a set of nodes, e.g. the
+ set of nodes in a NodeList, the document subtree governed by
+ a particular Node, the results of a query, or any other set
+ of nodes. The set of nodes to be iterated is determined by the
+ implementation of the NodeIterator. DOM Level 2 specifies a
+ single NodeIterator implementation for document-order
+ traversal of a document subtree. Instances of these iterators are created
+ by calling DocumentTraversal.createNodeIterator().
+ See also the Document object Model (DOM) Level 2 Traversal and Range Specification.
+ @since DOM Level 2
+
+
+
+
+ Iterators are used to step through a set of nodes, e.g. the
+ set of nodes in a NodeList, the document subtree governed by
+ a particular Node, the results of a query, or any other set
+ of nodes. The set of nodes to be iterated is determined by the
+ implementation of the NodeIterator. DOM Level 2 specifies a
+ single NodeIterator implementation for document-order
+ traversal of a document subtree. Instances of these iterators are created
+ by calling DocumentTraversal.createNodeIterator().
+ See also the Document object Model (DOM) Level 2 Traversal and Range Specification.
+ @since DOM Level 2
+
+
+
+
+ The root node of the NodeIterator, as specified when it
+ was created.
+
+
+ The root node.
+
+
+
+
+ This attribute determines which node types are presented via the
+ iterator. The available set of constants is defined in the
+ NodeFilter interface. Nodes not accepted by
+ whatToShow will be skipped, but their children may still
+ be considered. Note that this skip takes precedence over the filter,
+ if any.
+
+
+ The what to show.
+
+
+
+
+ The NodeFilter used to screen nodes.
+
+
+ The node filter.
+
+
+
+
+ Returns the next node in the set and advances the position of the
+ iterator in the set. After a NodeIterator is created,
+ the first call to nextNode() returns the first node in
+ the set.
+
+
+ The next Node in the set being iterated over, or
+ null if there are no more members in that set.
+
+ InvalidStateErr: Raised if this method is called after the
+ detach method was invoked.
+
+
+
+ Returns the previous node in the set and moves the position of the
+ NodeIterator backwards in the set.
+
+
+ The previous Node in the set being iterated over,
+ or null if there are no more members in that set.
+
+ InvalidStateErr: Raised if this method is called after the
+ detach method was invoked.
+
+
+
+ Detaches the NodeIterator from the set which it iterated
+ over, releasing any computational resources and placing the iterator
+ in the INVALID state. After detach has been invoked,
+ calls to nextNode or previousNode will
+ raise the exception InvalidStateErr.
+
+
+
+
+ The root node of the NodeIterator, as specified when it
+ was created.
+
+
+ The root node.
+
+
+
+
+ The current reference node.
+
+
+ The reference node.
+
+
+
+
+ This attribute determines which node types are presented via the
+ iterator. The available set of constants is defined in the
+ NodeFilter interface. Nodes not accepted by
+ whatToShow will be skipped, but their children may still
+ be considered. Note that this skip takes precedence over the filter,
+ if any.
+
+
+ The what to show.
+
+
+
+
+ The NodeFilter used to screen nodes.
+
+
+ The filter.
+
+
+
+
+ The value of this flag determines whether the children of entity
+ reference nodes are visible to the iterator. If false, they and
+ their descendants will be rejected. Note that this rejection takes
+ precedence over whatToShow and the filter. Also note
+ that this is currently the only situation where
+ NodeIterators may reject a complete subtree rather than
+ skipping individual nodes.
+ To produce a view of the document that has entity references
+ expanded and does not expose the entity reference node itself, use
+ the whatToShow flags to hide the entity reference node
+ and set expandEntityReferences to true when creating the
+ iterator. To produce a view of the document that has entity reference
+ nodes but no entity expansion, use the whatToShow flags
+ to show the entity reference node and set
+ expandEntityReferences to false.
+
+
+ true if [expand entity references]; otherwise, false.
+
+
+
+
+ TreeWalker objects are used to navigate a document tree or
+ subtree using the view of the document defined by their
+ whatToShow flags and filter (if any). Any function which
+ performs navigation using a TreeWalker will automatically
+ support any view defined by a TreeWalker.
+ Omitting nodes from the logical view of a subtree can result in a
+ structure that is substantially different from the same subtree in the
+ complete, unfiltered document. Nodes that are siblings in the
+ TreeWalker view may be children of different, widely
+ separated nodes in the original view. For instance, consider a
+ NodeFilter that skips all nodes except for Text nodes and
+ the root node of a document. In the logical view that results, all text
+ nodes will be siblings and appear as direct children of the root node, no
+ matter how deeply nested the structure of the original document.
+ See also the Document object Model (DOM) Level 2 Traversal and Range Specification.
+ @since DOM Level 2
+
+
+
+
+ Moves to and returns the closest visible ancestor node of the current
+ node. If the search for parentNode attempts to step
+ upward from the TreeWalker's root node, or
+ if it fails to find a visible ancestor node, this method retains the
+ current position and returns null.
+
+
+ The new parent node, or null if the current node
+ has no parent in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the first visible child of the
+ current node, and returns the new node. If the current node has no
+ visible children, returns null, and retains the current
+ node.
+
+
+ The new node, or null if the current node has no
+ visible children in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the last visible child of the
+ current node, and returns the new node. If the current node has no
+ visible children, returns null, and retains the current
+ node.
+
+
+ The new node, or null if the current node has no
+ children in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the previous sibling of the
+ current node, and returns the new node. If the current node has no
+ visible previous sibling, returns null, and retains the
+ current node.
+
+
+ The new node, or null if the current node has no
+ previous sibling. in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the next sibling of the current
+ node, and returns the new node. If the current node has no visible
+ next sibling, returns null, and retains the current node.
+
+
+ The new node, or null if the current node has no
+ next sibling. in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the previous visible node in
+ document order relative to the current node, and returns the new
+ node. If the current node has no previous node, or if the search for
+ previousNode attempts to step upward from the
+ TreeWalker's root node, returns
+ null, and retains the current node.
+
+
+ The new node, or null if the current node has no
+ previous node in the TreeWalker's logical view.
+
+
+
+
+ Moves the TreeWalker to the next visible node in document
+ order relative to the current node, and returns the new node. If the
+ current node has no next node, or if the search for nextNode attempts
+ to step upward from the TreeWalker's root
+ node, returns null, and retains the current node.
+
+
+ The new node, or null if the current node has no
+ next node in the TreeWalker's logical view.
+
+
+
+
+ The root node of the TreeWalker, as specified
+ when it was created.
+
+
+ The root.
+
+
+
+
+ This attribute determines which node types are presented via the
+ TreeWalker. The available set of constants is defined in
+ the NodeFilter interface. Nodes not accepted by
+ whatToShow will be skipped, but their children may still
+ be considered. Note that this skip takes precedence over the filter,
+ if any.
+
+
+ The what to show.
+
+
+
+
+ The filter used to screen nodes.
+
+
+ The filter.
+
+
+
+
+ The node at which the TreeWalker is currently positioned.
+ Alterations to the DOM tree may cause the current node to no longer
+ be accepted by the TreeWalker's associated filter.
+ currentNode may also be explicitly set to any node,
+ whether or not it is within the subtree specified by the
+ root node or would be accepted by the filter and
+ whatToShow flags. Further traversal occurs relative to
+ currentNode even if it is not part of the current view,
+ by applying the filters in the requested direction; if no traversal
+ is possible, currentNode is not changed.
+
+
+ The current node.
+
+ NotSupportedErr: Raised if an attempt is made to set
+ currentNode to null.
+
+
+
+ Filters are objects that know how to "filter out" nodes.
+
+
+
+
+ Accept the node. Navigation methods defined for
+ NodeIterator or TreeWalker will return this
+ node.
+
+
+
+
+ Reject the node. Navigation methods defined for
+ NodeIterator or TreeWalker will not return
+ this node. For TreeWalker, the children of this node
+ will also be rejected. NodeIterators treat this as a
+ synonym for FilterSkip.
+
+
+
+
+ Skip this single node. Navigation methods defined for
+ NodeIterator or TreeWalker will not return
+ this node. For both NodeIterator and
+ TreeWalker, the children of this node will still be
+ considered.
+
+
+
+
+ Show all Nodes.
+
+
+
+
+ Show Element nodes.
+
+
+
+
+ Show Attr nodes. This is meaningful only when creating an
+ iterator or tree-walker with an attribute node as its
+ root; in this case, it means that the attribute node
+ will appear in the first position of the iteration or traversal.
+ Since attributes are never children of other nodes, they do not
+ appear when traversing over the document tree.
+
+
+
+
+ Show Text nodes.
+
+
+
+
+ Show CDataSection nodes.
+
+
+
+
+ Show EntityReference nodes.
+
+
+
+
+ Show Entity nodes. This is meaningful only when creating
+ an iterator or tree-walker with an Entity node as its
+ root; in this case, it means that the Entity
+ node will appear in the first position of the traversal. Since
+ entities are not part of the document tree, they do not appear when
+ traversing over the document tree.
+
+
+
+
+ Show ProcessingInstruction nodes.
+
+
+
+
+ Show Comment nodes.
+
+
+
+
+ Show Document nodes.
+
+
+
+
+ Show DocumentType nodes.
+
+
+
+
+ Show DocumentFragment nodes.
+
+
+
+
+ Show Notation nodes. This is meaningful only when creating
+ an iterator or tree-walker with a Notation node as its
+ root; in this case, it means that the
+ Notation node will appear in the first position of the
+ traversal. Since notations are not part of the document tree, they do
+ not appear when traversing over the document tree.
+
+
+
+
+ Test whether a specified node is visible in the logical view of a
+ TreeWalker or NodeIterator. This function
+ will be called by the implementation of TreeWalker and
+ NodeIterator; it is not normally called directly from
+ user code. (Though you could do so if you wanted to use the same
+ filter to guide your own application logic.)
+
+ node to check to see if it passes the filter or not.
+
+ a constant to determine whether the node is accepted,
+ rejected, or skipped, as defined above.
+
+
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.Common.dll b/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.Common.dll
new file mode 100644
index 0000000..8fc9942
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.Common.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.dll b/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.dll
new file mode 100644
index 0000000..16bc680
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/Autodesk.AutoCAD.Interop.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy40.dll b/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy40.dll
new file mode 100644
index 0000000..cd010c3
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy4064.dll b/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy4064.dll
new file mode 100644
index 0000000..b4fe866
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/FCCNetClientProxy4064.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/FMSNetTicket40.dll b/OriginAutoCAD_chint/bin/Debug/FMSNetTicket40.dll
new file mode 100644
index 0000000..498e187
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/FMSNetTicket40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/FSCNetClientProxy40.dll b/OriginAutoCAD_chint/bin/Debug/FSCNetClientProxy40.dll
new file mode 100644
index 0000000..8592e74
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/FSCNetClientProxy40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/Gma.QrCodeNet.Encoding.Net35.dll b/OriginAutoCAD_chint/bin/Debug/Gma.QrCodeNet.Encoding.Net35.dll
new file mode 100644
index 0000000..80a1141
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/Gma.QrCodeNet.Encoding.Net35.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/MyProgressBar.dll b/OriginAutoCAD_chint/bin/Debug/MyProgressBar.dll
new file mode 100644
index 0000000..8f4582c
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/MyProgressBar.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Catalog.xml b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Catalog.xml
new file mode 100644
index 0000000..cd55c65
--- /dev/null
+++ b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Catalog.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Client.Configuration.Section.xsd b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Client.Configuration.Section.xsd
new file mode 100644
index 0000000..7d99281
--- /dev/null
+++ b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.Client.Configuration.Section.xsd
@@ -0,0 +1,311 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.dll b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.dll
new file mode 100644
index 0000000..473ca83
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/Oracle.ManagedDataAccess.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll
new file mode 100644
index 0000000..f9bf879
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll.config b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll.config
new file mode 100644
index 0000000..87ebee5
--- /dev/null
+++ b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.dll.config
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/OriginAutoCAD_chint/bin/Debug/OriginAutocad.pdb b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.pdb
new file mode 100644
index 0000000..b7bfc4d
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/OriginAutocad.pdb differ
diff --git a/OriginAutoCAD_chint/bin/Debug/PdfSharp.dll b/OriginAutoCAD_chint/bin/Debug/PdfSharp.dll
new file mode 100644
index 0000000..150bb10
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/PdfSharp.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding40.dll b/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding40.dll
new file mode 100644
index 0000000..9b94db5
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding4064.dll b/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding4064.dll
new file mode 100644
index 0000000..b4c662e
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcMemNetBinding4064.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcMemNetBindingInterface40.dll b/OriginAutoCAD_chint/bin/Debug/TcMemNetBindingInterface40.dll
new file mode 100644
index 0000000..c169b40
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcMemNetBindingInterface40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding40.dll b/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding40.dll
new file mode 100644
index 0000000..faa238a
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding4064.dll b/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding4064.dll
new file mode 100644
index 0000000..4671756
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcServerNetBinding4064.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcServerNetBindingInterface40.dll b/OriginAutoCAD_chint/bin/Debug/TcServerNetBindingInterface40.dll
new file mode 100644
index 0000000..d8399fc
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcServerNetBindingInterface40.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationStrong.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationStrong.dll
new file mode 100644
index 0000000..339f8d3
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationStrong.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationTypes.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationTypes.dll
new file mode 100644
index 0000000..30390d5
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaAdministrationTypes.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentStrong.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentStrong.dll
new file mode 100644
index 0000000..590305a
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentStrong.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentTypes.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentTypes.dll
new file mode 100644
index 0000000..1fe3405
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCadBomAlignmentTypes.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCadStrong.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCadStrong.dll
new file mode 100644
index 0000000..8dff4bc
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCadStrong.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCadTypes.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCadTypes.dll
new file mode 100644
index 0000000..3820403
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCadTypes.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaClient.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaClient.dll
new file mode 100644
index 0000000..70e5f22
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaClient.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCommon.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCommon.dll
new file mode 100644
index 0000000..f406077
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCommon.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCoreStrong.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCoreStrong.dll
new file mode 100644
index 0000000..c827995
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCoreStrong.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaCoreTypes.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaCoreTypes.dll
new file mode 100644
index 0000000..1e1b4f9
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaCoreTypes.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaFMS.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaFMS.dll
new file mode 100644
index 0000000..7d8e295
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaFMS.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaFMS64.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaFMS64.dll
new file mode 100644
index 0000000..a74c3fb
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaFMS64.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaQueryStrong.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaQueryStrong.dll
new file mode 100644
index 0000000..9cfd730
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaQueryStrong.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaQueryTypes.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaQueryTypes.dll
new file mode 100644
index 0000000..2434e6a
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaQueryTypes.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/TcSoaStrongModel.dll b/OriginAutoCAD_chint/bin/Debug/TcSoaStrongModel.dll
new file mode 100644
index 0000000..ff1440c
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/TcSoaStrongModel.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/accoremgd.dll b/OriginAutoCAD_chint/bin/Debug/accoremgd.dll
new file mode 100644
index 0000000..0307440
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/accoremgd.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/acdbmgd.dll b/OriginAutoCAD_chint/bin/Debug/acdbmgd.dll
new file mode 100644
index 0000000..2464ab7
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/acdbmgd.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/acmgd.dll b/OriginAutoCAD_chint/bin/Debug/acmgd.dll
new file mode 100644
index 0000000..46a8b5d
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/acmgd.dll differ
diff --git a/OriginAutoCAD_chint/bin/Debug/log4net.dll b/OriginAutoCAD_chint/bin/Debug/log4net.dll
new file mode 100644
index 0000000..ffc57e1
Binary files /dev/null and b/OriginAutoCAD_chint/bin/Debug/log4net.dll differ
diff --git a/OriginAutoCAD_chint/clientx/AppXCredentialManager.cs b/OriginAutoCAD_chint/clientx/AppXCredentialManager.cs
new file mode 100644
index 0000000..6ad8fff
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXCredentialManager.cs
@@ -0,0 +1,146 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+
+
+using System;
+using System.IO;
+
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Soa;
+using Teamcenter.Soa.Common;
+using Teamcenter.Soa.Client;
+using Teamcenter.Soa.Exceptions;
+
+namespace Teamcenter.ClientX
+{
+
+/**
+ * The CredentialManager is used by the Teamcenter Services framework to get the
+ * user's credentials when challanged by the server. This can occur after a period
+ * of inactivity and the server has timed-out the user's session, at which time
+ * the client application will need to re-authenitcate. The framework will
+ * call one of the getCredentials methods (depending on circumstances) and will
+ * send the SessionService.login service request. Upon successfull completion of
+ * the login service request. The last service request (one that cuased the challange)
+ * will be resent.
+ *
+ * The framework will also call the setUserPassword setGroupRole methods when ever
+ * these credentials change, thus allowing this implementation of the CredentialManager
+ * to cache these values so prompting of the user is not requried for re-authentication.
+ *
+ */
+public class AppXCredentialManager : CredentialManager
+{
+
+ private String name = null;
+ private String password = null;
+ private String group = ""; // default group
+ private String role = ""; // default role
+ private String discriminator = "SoaAppX"; // always connect same user
+ // to same instance of server
+
+ /**
+ * Return the type of credentials this implementation provides,
+ * standard (user/password) or Single-Sign-On. In this case
+ * Standard credentials are returned.
+ *
+ * @see com.teamcenter.soa.client.CredentialManager#getCredentialType()
+ */
+ public int CredentialType
+ {
+ get { return SoaConstants.CLIENT_CREDENTIAL_TYPE_STD; }
+ }
+
+ /**
+ * Prompt's the user for credentials.
+ * This method will only be called by the framework when a login attempt has
+ * failed.
+ *
+ * @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidCredentialsException)
+ */
+ public string[] GetCredentials(InvalidCredentialsException e)
+ //throws CanceledOperationException
+ {
+ Console.WriteLine(e.Message);
+ return PromptForCredentials();
+ }
+
+ /**
+ * Return the cached credentials.
+ * This method will be called when a service request is sent without a valid
+ * session ( session has expired on the server).
+ *
+ * @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidUserException)
+ */
+ public String[] GetCredentials(InvalidUserException e)
+ //throws CanceledOperationException
+ {
+ // Have not logged in yet, shoult not happen but just in case
+ if (name == null) return PromptForCredentials();
+
+ // Return cached credentials
+ String[] tokens = { name, password, group, role, discriminator };
+ return tokens;
+ }
+
+ /**
+ * Cache the group and role
+ * This is called after the SessionService.setSessionGroupMember service
+ * operation is called.
+ *
+ * @see com.teamcenter.soa.client.CredentialManager#setGroupRole(java.lang.String,
+ * java.lang.String)
+ */
+ public void SetGroupRole(String group, String role)
+ {
+ this.group = group;
+ this.role = role;
+ }
+
+ /**
+ * Cache the User and Password
+ * This is called after the SessionService.login service operation is called.
+ *
+ * @see com.teamcenter.soa.client.CredentialManager#setUserPassword(java.lang.String,
+ * java.lang.String, java.lang.String)
+ */
+ public void SetUserPassword(String user, String password, String discriminator)
+ {
+ this.name = user;
+ this.password = password;
+ this.discriminator = discriminator;
+ }
+
+
+ public String[] PromptForCredentials()
+ //throws CanceledOperationException
+ {
+ try
+ {
+ Console.WriteLine("Please enter user credentials (return to quit):");
+ Console.Write("User Name: ");
+ name = Console.ReadLine();
+
+ if (name.Length == 0)
+ throw new CanceledOperationException("");
+
+ Console.Write("Password: ");
+ password = Console.ReadLine();
+ }
+ catch (IOException e)
+ {
+ String message = "Failed to get the name and password.\n" + e.Message;
+ Console.WriteLine(message);
+ throw new CanceledOperationException(message);
+ }
+
+ String[] tokens = { name, password, group, role, discriminator };
+ return tokens;
+ }
+
+}
+}
diff --git a/OriginAutoCAD_chint/clientx/AppXDeletedObjectListener.cs b/OriginAutoCAD_chint/clientx/AppXDeletedObjectListener.cs
new file mode 100644
index 0000000..d051a7f
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXDeletedObjectListener.cs
@@ -0,0 +1,38 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.Soa.Client.Model;
+
+namespace Teamcenter.ClientX
+{
+
+/**
+ * Implementation of the DeleteListener, simply prints out list of all objects
+ * that are deleted.
+ *
+ */
+public class AppXDeletedObjectListener : DeleteListener
+{
+
+ public void ModelObjectDelete(string[] uids)
+ {
+ if (uids.Length == 0)
+ return;
+
+ System.Console.WriteLine("");
+ System.Console.WriteLine("Deleted Objects handled in com.teamcenter.clientx.AppXDeletedObjectListener.modelObjectDelete");
+ System.Console.WriteLine("The following objects have been deleted from the server and removed from the client data model:");
+ for (int i = 0; i < uids.Length; i++)
+ {
+ System.Console.WriteLine(" " + uids[i]);
+ }
+
+ }
+
+}
+}
diff --git a/OriginAutoCAD_chint/clientx/AppXExceptionHandler.cs b/OriginAutoCAD_chint/clientx/AppXExceptionHandler.cs
new file mode 100644
index 0000000..824c9ad
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXExceptionHandler.cs
@@ -0,0 +1,101 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+
+using System;
+using System.IO;
+
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Soa.Client;
+using Teamcenter.Soa.Exceptions;
+
+namespace Teamcenter.ClientX
+{
+
+
+ /**
+ * Implementation of the ExceptionHandler. For ConnectionExceptions (server
+ * temporarily down .etc) prompts the user to retry the last request. For other
+ * exceptions convert to a RunTime exception.
+ */
+ public class AppXExceptionHandler : ExceptionHandler
+ {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.teamcenter.soa.client.ExceptionHandler#handleException(com.teamcenter.schemas.soa._2006_03.exceptions.InternalServerException)
+ */
+ public void HandleException(InternalServerException ise)
+ {
+ Console.WriteLine("");
+ Console.WriteLine("*****");
+ Console.WriteLine("Exception caught in com.teamcenter.clientx.AppXExceptionHandler.handleException(InternalServerException).");
+
+
+ if (ise is ConnectionException)
+ {
+ // ConnectionException are typically due to a network error (server
+ // down .etc) and can be recovered from (the last request can be sent again,
+ // after the problem is corrected).
+ Console.Write("\nThe server returned an connection error.\n" + ise.Message
+ + "\nDo you wish to retry the last service request?[y/n]");
+ }
+ else if (ise is ProtocolException)
+ {
+ // ProtocolException are typically due to programming errors
+ // (content of HTTP
+ // request is incorrect). These are generally can not be
+ // recovered from.
+ Console.Write("\nThe server returned an protocol error.\n" + ise.Message
+ + "\nThis is most likely the result of a programming error."
+ + "\nDo you wish to retry the last service request?[y/n]");
+ }
+ else
+ {
+ Console.WriteLine("\nThe server returned an internal server error.\n"
+ + ise.Message
+ + "\nThis is most likely the result of a programming error."
+ + "\nA RuntimeException will be thrown.");
+ throw new SystemException(ise.Message);
+ }
+
+ try
+ {
+ String retry = Console.ReadLine();
+ // If yes, return to the calling SOA client framework, where the
+ // last service request will be resent.
+ if (retry.ToLower().Equals("y") || retry.ToLower().Equals("yes"))
+ return;
+
+ throw new SystemException("The user has opted not to retry the last request");
+ }
+ catch (IOException e)
+ {
+ Console.Error.WriteLine("Failed to read user response.\nA RuntimeException will be thrown.");
+ throw new SystemException(e.Message);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.teamcenter.soa.client.ExceptionHandler#handleException(com.teamcenter.soa.exceptions.CanceledOperationException)
+ */
+ public void HandleException(CanceledOperationException coe)
+ {
+ Console.WriteLine("");
+ Console.WriteLine("*****");
+ Console.WriteLine("Exception caught in com.teamcenter.clientx.AppXExceptionHandler.handleException(CanceledOperationException).");
+
+ // Expecting this from the login tests with bad credentials, and the
+ // AnyUserCredentials class not
+ // prompting for different credentials
+ throw new SystemException(coe.Message);
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/clientx/AppXPartialErrorListener.cs b/OriginAutoCAD_chint/clientx/AppXPartialErrorListener.cs
new file mode 100644
index 0000000..644a63b
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXPartialErrorListener.cs
@@ -0,0 +1,68 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.Soa.Client.Model;
+
+
+namespace Teamcenter.ClientX
+{
+
+/**
+ * Implementation of the PartialErrorListener. Print out any partial errors
+ * returned.
+ *
+ */
+public class AppXPartialErrorListener : PartialErrorListener
+{
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.teamcenter.soa.client.model.PartialErrorListener#handlePartialError(com.teamcenter.soa.client.model.ErrorStack[])
+ */
+ public void HandlePartialError(ErrorStack[] stacks)
+ {
+ if (stacks.Length == 0) return;
+
+ Console.WriteLine("");
+ Console.WriteLine("*****");
+ Console.WriteLine("Partial Errors caught in com.teamcenter.clientx.AppXPartialErrorListener.");
+
+
+ for (int i = 0; i < stacks.Length; i++)
+ {
+ ErrorValue[] errors = stacks[i].ErrorValues;
+ Console.Write("Partial Error for ");
+
+ // The different service implementation may optionally associate
+ // an ModelObject, client ID, or nothing, with each partial error
+ if (stacks[i].HasAssociatedObject() )
+ {
+ Console.WriteLine("object "+ stacks[i].AssociatedObject.Uid);
+ }
+ else if (stacks[i].HasClientId())
+ {
+ Console.WriteLine("client id "+ stacks[i].ClientId);
+ }
+ else if (stacks[i].HasClientIndex())
+ {
+ Console.WriteLine("client index " + stacks[i].ClientIndex);
+ }
+
+ // Each Partial Error will have one or more contributing error messages
+ for (int j = 0; j < errors.Length; j++)
+ {
+ Console.WriteLine(" Code: " + errors[j].Code + "\tSeverity: "
+ + errors[j].Level + "\t" + errors[j].Message);
+ }
+ }
+
+ }
+
+}
+}
diff --git a/OriginAutoCAD_chint/clientx/AppXRequestListener.cs b/OriginAutoCAD_chint/clientx/AppXRequestListener.cs
new file mode 100644
index 0000000..fe84a9a
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXRequestListener.cs
@@ -0,0 +1,42 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.Soa.Client;
+
+
+namespace Teamcenter.ClientX
+{
+
+ /**
+ * This implemenation of the RequestListener, logs each service request
+ * to the console.
+ *
+ */
+ public class AppXRequestListener : RequestListener
+ {
+
+
+ /**
+ * Called before each request is sent to the server.
+ */
+ public void ServiceRequest(ServiceInfo info)
+ {
+ // will log the service name when done
+ }
+
+ /**
+ * Called after each response from the server.
+ * Log the service operation to the console.
+ */
+ public void ServiceResponse(ServiceInfo info)
+ {
+ Console.WriteLine(info.Id + ": " + info.Service + "." + info.Operation);
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/clientx/AppXUpdateObjectListener.cs b/OriginAutoCAD_chint/clientx/AppXUpdateObjectListener.cs
new file mode 100644
index 0000000..5865ee6
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/AppXUpdateObjectListener.cs
@@ -0,0 +1,48 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+namespace Teamcenter.ClientX
+{
+
+
+/**
+ * Implementation of the ChangeListener. Print out all objects that have been updated.
+ *
+ */
+public class AppXUpdateObjectListener : ChangeListener
+{
+
+ public void ModelObjectChange(ModelObject[] objects)
+ {
+ if (objects.Length == 0) return;
+ System.Console.WriteLine("");
+ System.Console.WriteLine("Modified Objects handled in com.teamcenter.clientx.AppXUpdateObjectListener.modelObjectChange");
+ System.Console.WriteLine("The following objects have been updated in the client data model:");
+ for (int i = 0; i < objects.Length; i++)
+ {
+ String uid = objects[i].Uid;
+ String type = objects[i].GetType().Name;
+ String name = "";
+ if (objects[i].GetType().Name.Equals("WorkspaceObject"))
+ {
+ ModelObject wo = objects[i];
+ try
+ {
+ name = wo.GetProperty("object_string").StringValue;
+ }
+ catch (NotLoadedException /*e*/) {} // just ignore
+ }
+ System.Console.WriteLine(" " + uid + " " + type + " " + name);
+ }
+ }
+
+}
+}
diff --git a/OriginAutoCAD_chint/clientx/Session.cs b/OriginAutoCAD_chint/clientx/Session.cs
new file mode 100644
index 0000000..a86569f
--- /dev/null
+++ b/OriginAutoCAD_chint/clientx/Session.cs
@@ -0,0 +1,278 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+
+
+
+using System;
+using System.Collections;
+using System.Net;
+
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Services.Strong.Core._2006_03.Session;
+using Teamcenter.Soa;
+using Teamcenter.Soa.Client;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+
+namespace Teamcenter.ClientX
+{
+
+
+ public class Session
+ {
+ /**
+ * Single instance of the Connection object that is shared throughtout
+ * the application. This Connection object is needed whenever a Service
+ * stub is instantiated.
+ */
+ private static Connection connection;
+
+ /**
+ * The credentialManager is used both by the Session class and the Teamcenter
+ * Services Framework to get user credentials.
+ *
+ */
+ private static AppXCredentialManager credentialManager;
+
+ /**
+ * Create an instance of the Session with a connection to the specified
+ * server.
+ *
+ * Add implementations of the ExceptionHandler, PartialErrorListener,
+ * ChangeListener, and DeleteListeners.
+ *
+ * @param host Address of the host to connect to, http://serverName:port/tc
+ */
+ public Session(String host)
+ {
+ // Create an instance of the CredentialManager, this is used
+ // by the SOA Framework to get the user's credentials when
+ // challanged by the server (sesioin timeout on the web tier).
+ credentialManager = new AppXCredentialManager();
+
+
+
+ // Create the Connection object, no contact is made with the server
+ // until a service request is made
+ connection = new Connection(host, new CookieCollection(), credentialManager, SoaConstants.REST,
+ SoaConstants.HTTP, false);
+
+
+ // Add an ExceptionHandler to the Connection, this will handle any
+ // InternalServerException, communication errors, xml marshalling errors
+ // .etc
+ connection.ExceptionHandler = new AppXExceptionHandler();
+
+ // While the above ExceptionHandler is required, all of the following
+ // Listeners are optional. Client application can add as many or as few Listeners
+ // of each type that they want.
+
+ // Add a Partial Error Listener, this will be notified when ever a
+ // a service returns partial errors.
+ connection.ModelManager.AddPartialErrorListener(new AppXPartialErrorListener());
+
+ // Add a Change Listener, this will be notified when ever a
+ // a service returns model objects that have been updated.
+ //connection.ModelManager.AddChangeListener(new AppXUpdateObjectListener());
+
+ // Add a Delete Listener, this will be notified when ever a
+ // a service returns objects that have been deleted.
+ // connection.ModelManager.AddDeleteListener(new AppXDeletedObjectListener());
+
+ // Add a Request Listener, this will be notified before and after each
+ // service request is sent to the server.
+ Connection.AddRequestListener(new AppXRequestListener());
+ }
+
+ /**
+ * Get the single Connection object for the application
+ *
+ * @return connection
+ */
+ public static Connection getConnection()
+ {
+ return connection;
+ }
+
+ /**
+ * Login to the Teamcenter Server
+ *
+ */
+ public User login()
+ {
+ // Get the service stub
+ SessionService sessionService = SessionService.getService(connection);
+
+ try
+ {
+ // Prompt for credentials until they are right, or until user
+ // cancels
+ String[] credentials = credentialManager.PromptForCredentials();
+ while (true)
+ {
+ try
+ {
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+
+ LoginResponse resp = sessionService.Login(credentials[0], credentials[1],
+ credentials[2], credentials[3],"",credentials[4]);
+
+ return resp.User;
+ }
+ catch (InvalidCredentialsException e)
+ {
+ credentials = credentialManager.GetCredentials(e);
+ }
+ }
+ }
+ // User canceled the operation, don't need to tell him again
+ catch (CanceledOperationException /*e*/) {}
+
+ // Exit the application
+ //System.exit(0);
+ return null;
+ }
+ public User mylogin(string username,string password,string usergroup,string userrole)
+ {
+ // Get the service stub
+ SessionService sessionService = SessionService.getService(connection);
+ try
+ {
+ while (true)
+ {
+ try
+ {
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ LoginResponse resp = sessionService.Login(username, password,usergroup, userrole, "zh_CN", System.Guid.NewGuid().ToString("N"));
+ //LoginResponse resp = sessionService.Login(username, password, usergroup, userrole, "", "");
+ return resp.User;
+ }
+ catch (InvalidCredentialsException e)
+ {
+ return null;
+ }
+ }
+ }
+ // User canceled the operation, don't need to tell him again
+ catch (CanceledOperationException /*e*/) { }
+
+ // Exit the application
+ //System.exit(0);
+ return null;
+ }
+ /**
+ * Terminate the session with the Teamcenter Server
+ *
+ */
+ public void logout()
+ {
+ // Get the service stub
+ SessionService sessionService = SessionService.getService(connection);
+ try
+ {
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ sessionService.Logout();
+ }
+ catch (ServiceException /*e*/) { }
+ }
+
+ /**
+ * Print some basic information for a list of objects
+ *
+ * @param objects
+ */
+ public static void printObjects(ModelObject[] objects)
+ {
+ if(objects == null)
+ return;
+
+
+ // Ensure that the referenced User objects that we will use below are loaded
+ getUsers( objects );
+
+ Console.WriteLine("Name\t\tOwner\t\tLast Modified");
+ Console.WriteLine("====\t\t=====\t\t=============");
+ for (int i = 0; i < objects.Length; i++)
+ {
+ if(!(objects[i] is WorkspaceObject ))
+ continue;
+
+ WorkspaceObject wo = (WorkspaceObject)objects[i];
+ try
+ {
+ String name = wo.Object_string;
+ User owner = (User) wo.Owning_user;
+ DateTime lastModified =wo.Last_mod_date;
+
+ Console.WriteLine(name + "\t" + owner.User_name + "\t" + lastModified.ToString());
+ }
+ catch (NotLoadedException e)
+ {
+ // Print out a message, and skip to the next item in the folder
+ // Could do a DataManagementService.getProperties call at this point
+ Console.WriteLine(e.Message);
+ Console.WriteLine("The Object Property Policy ($TC_DATA/soa/policies/Default.xml) is not configured with this property.");
+ }
+ }
+
+ }
+
+
+ private static void getUsers(ModelObject[] objects)
+ {
+ if(objects == null)
+ return;
+
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ ArrayList unKnownUsers = new ArrayList();
+ for (int i = 0; i < objects.Length; i++)
+ {
+ if(!(objects[i] is WorkspaceObject ))
+ continue;
+
+ WorkspaceObject wo = (WorkspaceObject)objects[i];
+
+ User owner = null;
+ try
+ {
+ owner = (User) wo.Owning_user;
+ String userName = owner.User_name;
+ }
+ catch (NotLoadedException /*e*/)
+ {
+ if(owner != null)
+ unKnownUsers.Add(owner);
+ }
+ }
+ User[] users = new User[unKnownUsers.Count];
+ unKnownUsers.CopyTo( users );
+ String[] attributes = { "user_name" };
+
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ dmService.GetProperties(users, attributes);
+
+
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/dll截图.png b/OriginAutoCAD_chint/dll截图.png
new file mode 100644
index 0000000..c270391
Binary files /dev/null and b/OriginAutoCAD_chint/dll截图.png differ
diff --git a/OriginAutoCAD_chint/form/ErrMes2.Designer.cs b/OriginAutoCAD_chint/form/ErrMes2.Designer.cs
new file mode 100644
index 0000000..2d2d020
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMes2.Designer.cs
@@ -0,0 +1,83 @@
+namespace HelloTeamcenter.form
+{
+ partial class ErrMes2
+ {
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.checkedListBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
+ this.SuspendLayout();
+ //
+ // checkedListBox1
+ //
+ this.checkedListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkedListBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.checkedListBox1.Location = new System.Drawing.Point(8, 8);
+ this.checkedListBox1.Margin = new System.Windows.Forms.Padding(17, 16, 17, 16);
+ this.checkedListBox1.Multiline = true;
+ this.checkedListBox1.Name = "checkedListBox1";
+ this.checkedListBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.checkedListBox1.Size = new System.Drawing.Size(825, 264);
+ this.checkedListBox1.TabIndex = 0;
+ this.checkedListBox1.WordWrap = false;
+ this.checkedListBox1.TextChanged += new System.EventHandler(this.checkedListBox1_TextChanged);
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.Location = new System.Drawing.Point(370, 286);
+ this.button1.Margin = new System.Windows.Forms.Padding(4);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(100, 29);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "确定";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // ErrMes2
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(845, 328);
+ this.Controls.Add(this.checkedListBox1);
+ this.Controls.Add(this.button1);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "ErrMes2";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "上传结果如下";
+ this.Load += new System.EventHandler(this.ErrMes2_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.TextBox checkedListBox1;
+ private System.ComponentModel.BackgroundWorker backgroundWorker1;
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/ErrMes2.cs b/OriginAutoCAD_chint/form/ErrMes2.cs
new file mode 100644
index 0000000..238f033
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMes2.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HelloTeamcenter.form
+{
+ public partial class ErrMes2 : Form
+ {
+ public ErrMes2()
+ {
+ InitializeComponent();
+ }
+
+ public void getSelectedFiles(string uploadBeanList)
+ {
+ checkedListBox1.Clear();
+ checkedListBox1.Text = uploadBeanList;
+ ShowDialog();
+ return;
+ }
+
+ private void checkedListBox1_TextChanged(object sender, EventArgs e)
+ {
+
+ }
+ private void button1_Click(object sender, EventArgs e)
+ {
+ Dispose();
+ }
+
+ private void ErrMes2_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/ErrMes2.resx b/OriginAutoCAD_chint/form/ErrMes2.resx
new file mode 100644
index 0000000..59099f2
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMes2.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/ErrMessage.Designer.cs b/OriginAutoCAD_chint/form/ErrMessage.Designer.cs
new file mode 100644
index 0000000..262149f
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMessage.Designer.cs
@@ -0,0 +1,98 @@
+namespace HelloTeamcenter.form
+{
+ partial class ErrMessage
+ {
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.checkedListBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
+ this.SuspendLayout();
+ //
+ // checkedListBox1
+ //
+ this.checkedListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkedListBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.checkedListBox1.Location = new System.Drawing.Point(8, 8);
+ this.checkedListBox1.Margin = new System.Windows.Forms.Padding(17, 16, 17, 16);
+ this.checkedListBox1.Multiline = true;
+ this.checkedListBox1.Name = "checkedListBox1";
+ this.checkedListBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.checkedListBox1.Size = new System.Drawing.Size(825, 264);
+ this.checkedListBox1.TabIndex = 0;
+ this.checkedListBox1.TextChanged += new System.EventHandler(this.checkedListBox1_TextChanged);
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.Location = new System.Drawing.Point(268, 285);
+ this.button1.Margin = new System.Windows.Forms.Padding(4);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(100, 29);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "继续";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button2.Location = new System.Drawing.Point(451, 285);
+ this.button2.Margin = new System.Windows.Forms.Padding(4);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(100, 29);
+ this.button2.TabIndex = 2;
+ this.button2.Text = "中止";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // ErrMessage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(845, 328);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.checkedListBox1);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "ErrMessage";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "以下对象在TC中不存在";
+ this.Load += new System.EventHandler(this.ErrMessage_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox checkedListBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.ComponentModel.BackgroundWorker backgroundWorker1;
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/ErrMessage.cs b/OriginAutoCAD_chint/form/ErrMessage.cs
new file mode 100644
index 0000000..c849dc5
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMessage.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HelloTeamcenter.form
+{
+ public partial class ErrMessage : Form
+ {
+
+ List res = new List();
+ public ErrMessage()
+ {
+ InitializeComponent();
+ }
+
+ public List getSelectedFiles(List uploadBeanList)
+ {
+ checkedListBox1.Clear();
+ StringBuilder errInfo = new StringBuilder();
+ for (int i=0;i< uploadBeanList.Count; i++)
+ {
+ errInfo.Append(uploadBeanList[i]);
+ errInfo.Append("\r\n");
+ }
+ checkedListBox1.Text = errInfo.ToString();
+ ShowDialog();
+ return res;
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ //foreach (object obj in checkedListBox1.CheckedItems)
+ //{
+ // res.Add((string)obj);
+ //}
+ res.Add("1");
+ Dispose();
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ res.Clear();
+ Dispose();
+ }
+
+ //private void checkBox1_CheckedChanged(object sender, EventArgs e)
+ //{
+ // bool b = checkBox1.Checked;
+ // int size = checkedListBox1.Items.Count;
+ // for (int i = 0; i < size; i++)
+ // {
+ // checkedListBox1.SetItemChecked(i, b);
+ // }
+ //}
+
+ private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+
+ }
+
+ private void checkedListBox1_TextChanged(object sender, EventArgs e)
+ {
+
+ }
+
+ private void ErrMessage_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/ErrMessage.resx b/OriginAutoCAD_chint/form/ErrMessage.resx
new file mode 100644
index 0000000..59099f2
--- /dev/null
+++ b/OriginAutoCAD_chint/form/ErrMessage.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/Login.Designer.cs b/OriginAutoCAD_chint/form/Login.Designer.cs
new file mode 100644
index 0000000..8ca2893
--- /dev/null
+++ b/OriginAutoCAD_chint/form/Login.Designer.cs
@@ -0,0 +1,221 @@
+namespace HelloTeamcenter.form
+{
+ partial class Login
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Login));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.textBox5 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(540, 36);
+ this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(75, 15);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "连接到: ";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(540, 87);
+ this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(75, 15);
+ this.label2.TabIndex = 2;
+ this.label2.Text = "用户名: ";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(540, 132);
+ this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(76, 15);
+ this.label3.TabIndex = 3;
+ this.label3.Text = "密 码: ";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(540, 178);
+ this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(75, 15);
+ this.label4.TabIndex = 4;
+ this.label4.Text = "所在组: ";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(540, 220);
+ this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(76, 15);
+ this.label5.TabIndex = 5;
+ this.label5.Text = "角 色: ";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(609, 31);
+ this.textBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(159, 25);
+ this.textBox1.TabIndex = 6;
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(609, 78);
+ this.textBox2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(159, 25);
+ this.textBox2.TabIndex = 7;
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(609, 123);
+ this.textBox3.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.PasswordChar = '*';
+ this.textBox3.Size = new System.Drawing.Size(159, 25);
+ this.textBox3.TabIndex = 8;
+ //
+ // textBox4
+ //
+ this.textBox4.Location = new System.Drawing.Point(609, 171);
+ this.textBox4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(159, 25);
+ this.textBox4.TabIndex = 9;
+ //
+ // textBox5
+ //
+ this.textBox5.Location = new System.Drawing.Point(609, 215);
+ this.textBox5.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.textBox5.Name = "textBox5";
+ this.textBox5.Size = new System.Drawing.Size(159, 25);
+ this.textBox5.TabIndex = 10;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(543, 267);
+ this.button1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(100, 29);
+ this.button1.TabIndex = 11;
+ this.button1.Text = "登录";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(669, 267);
+ this.button2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(100, 29);
+ this.button2.TabIndex = 12;
+ this.button2.Text = "取消";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = global::HelloTeamcenter.Properties.Resources.login;
+ this.pictureBox1.Location = new System.Drawing.Point(9, 15);
+ this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(511, 249);
+ this.pictureBox1.TabIndex = 0;
+ this.pictureBox1.TabStop = false;
+ //
+ // Login
+ //
+ this.AcceptButton = this.button1;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(787, 310);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.textBox5);
+ this.Controls.Add(this.textBox4);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.pictureBox1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "Login";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "登录";
+ this.TopMost = true;
+ this.Load += new System.EventHandler(this.Login_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ public System.Windows.Forms.PictureBox pictureBox1;
+ public System.Windows.Forms.Label label1;
+ public System.Windows.Forms.Label label2;
+ public System.Windows.Forms.Label label3;
+ public System.Windows.Forms.Label label4;
+ public System.Windows.Forms.Label label5;
+ public System.Windows.Forms.TextBox textBox1;
+ public System.Windows.Forms.TextBox textBox2;
+ public System.Windows.Forms.TextBox textBox3;
+ public System.Windows.Forms.TextBox textBox4;
+ public System.Windows.Forms.TextBox textBox5;
+ public System.Windows.Forms.Button button1;
+ public System.Windows.Forms.Button button2;
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/Login.cs b/OriginAutoCAD_chint/form/Login.cs
new file mode 100644
index 0000000..661c701
--- /dev/null
+++ b/OriginAutoCAD_chint/form/Login.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Windows.Forms;
+
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+using System.IO;
+
+
+namespace HelloTeamcenter.form
+{
+ public partial class Login : Form
+ {
+ public Login()
+ {
+ InitializeComponent();
+ }
+
+ public string m_WebAddress = "http://10.128.10.203:7001/tc";
+ public string username = "";
+ public string password = "";
+ public string usergroup = "";
+ public string userrole = "";
+ public Document appodc;
+
+ private void Login_Load(object sender, EventArgs e)
+ {
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ Editor ed = appodc.Editor;
+ ed.WriteMessage("login文件路径:" + tempdir + "\n");
+ string loginfile = tempdir + "\\login.ini";
+ if (File.Exists(loginfile))
+ {
+ StreamReader sr = new StreamReader(loginfile);
+ string line;
+ if ((line = sr.ReadLine()) != null)
+ {
+
+ string[] ans = line.Split('|');
+ for (int i = 0; i < ans.Length; i++)
+ {
+ if (i == 0)
+ m_WebAddress = ans[i].ToString();
+ if (i == 1)
+ username = ans[i].ToString();
+ if(i==2)
+ password = ans[i].ToString();
+ if (i == 3)
+ usergroup = ans[i].ToString();
+ if (i == 4)
+ userrole = ans[i].ToString();
+ }
+ }
+ sr.Close();
+ }
+ textBox1.Text = m_WebAddress;
+ textBox2.Text = username;
+ textBox3.Text = password;
+ textBox4.Text = usergroup;
+ textBox4.Text = userrole;
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/Login.resx b/OriginAutoCAD_chint/form/Login.resx
new file mode 100644
index 0000000..96d7ea3
--- /dev/null
+++ b/OriginAutoCAD_chint/form/Login.resx
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+
+
+ AAABAAEAECAAAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
+ AAD///8A///////////0bm5ubm5ub/Rs6IjoiEzv9G6Pd4d3Tm/0bP/3f/dM7/Ru/45v905v9Gz/jO/3
+ TO/0bn/2b/dOb/Rs5///90zv9G5ubm/3Tm/0bPeIf/bs7/Rub///fm5v9Gzs53zs7O/0xsbGxsbGz/RE
+ RERERERP//////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//
+
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/OpenFromTC.Designer.cs b/OriginAutoCAD_chint/form/OpenFromTC.Designer.cs
new file mode 100644
index 0000000..64b5bce
--- /dev/null
+++ b/OriginAutoCAD_chint/form/OpenFromTC.Designer.cs
@@ -0,0 +1,135 @@
+namespace HelloTeamcenter.form
+{
+ partial class OpenFromTC
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpenFromTC));
+ this.label1 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+ this.treeView1 = new System.Windows.Forms.TreeView();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 333);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(79, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "数据集名称:";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(105, 329);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.ReadOnly = true;
+ this.textBox1.Size = new System.Drawing.Size(197, 20);
+ this.textBox1.TabIndex = 2;
+ this.textBox1.TabStop = false;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(446, 324);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 25);
+ this.button1.TabIndex = 3;
+ this.button1.Tag = "";
+ this.button1.Text = "确定";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(446, 355);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 25);
+ this.button2.TabIndex = 4;
+ this.button2.Text = "查找->";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // imageList1
+ //
+ this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+ this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList1.Images.SetKeyName(0, "autocad_01.ico");
+ this.imageList1.Images.SetKeyName(1, "FOLDER.ICO");
+ this.imageList1.Images.SetKeyName(2, "FOLDEROP.ICO");
+ this.imageList1.Images.SetKeyName(3, "item.ico");
+ this.imageList1.Images.SetKeyName(4, "itemrev.ico");
+ this.imageList1.Images.SetKeyName(5, "mail.ico");
+ this.imageList1.Images.SetKeyName(6, "Newstuff_Folder.png");
+ this.imageList1.Images.SetKeyName(7, "tai.ico");
+ //
+ // treeView1
+ //
+ this.treeView1.ImageIndex = 7;
+ this.treeView1.ImageList = this.imageList1;
+ this.treeView1.Location = new System.Drawing.Point(14, 13);
+ this.treeView1.Name = "treeView1";
+ this.treeView1.SelectedImageIndex = 7;
+ this.treeView1.Size = new System.Drawing.Size(509, 304);
+ this.treeView1.TabIndex = 5;
+ this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseDoubleClick);
+ //
+ // OpenFromTC
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(538, 386);
+ this.Controls.Add(this.treeView1);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "OpenFromTC";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "打开";
+ this.TopMost = true;
+ this.Load += new System.EventHandler(this.OpenFromTC_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ public System.Windows.Forms.Label label1;
+ public System.Windows.Forms.TextBox textBox1;
+ public System.Windows.Forms.Button button1;
+ public System.Windows.Forms.Button button2;
+ public System.Windows.Forms.ImageList imageList1;
+ public System.Windows.Forms.TreeView treeView1;
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/OpenFromTC.cs b/OriginAutoCAD_chint/form/OpenFromTC.cs
new file mode 100644
index 0000000..f4f91dd
--- /dev/null
+++ b/OriginAutoCAD_chint/form/OpenFromTC.cs
@@ -0,0 +1,443 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+
+
+public struct ALLOBJECT
+{
+ public TreeNode treenode;
+ public WorkspaceObject workobject;
+ public string name;
+ public string uid;
+}
+
+namespace HelloTeamcenter.form
+{
+ public partial class OpenFromTC : Form
+ {
+ public List alllist = new List();
+ public List folderlist = new List();
+ public List itemlist = new List();
+ public List itemvisionlist = new List();
+ public List datasetlist = new List();
+ public OpenFromTC()
+ {
+ InitializeComponent();
+ }
+ public Document appodc;
+ public User user;
+ public bool first = true;
+ public Folder home = null;
+ Editor ed;
+ private void OpenFromTC_Load(object sender, EventArgs e)
+ {
+ ed = appodc.Editor;
+ treeView1.Nodes.Clear();
+ TreeNode rootnode = new TreeNode("Home", 7, 7);
+ treeView1.Nodes.Add(rootnode);
+
+ WorkspaceObject[] contents = null;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ try
+ {
+ home = user.Home_folder;
+ }
+ catch (NotLoadedException ex)
+ {
+ ed.WriteMessage(ex.Message);
+ return;
+ }
+ try
+ {
+ ModelObject[] objects = { home };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = home.Contents;
+ }
+ catch (NotLoadedException ex) { ed.WriteMessage(ex.Message); }
+ //ALLOBJECT topobject = new ALLOBJECT();
+ //topobject.treenode = rootnode;
+ //topobject.workobject = home;
+ //alllist.Add(topobject);
+ //folderlist.Add(topobject);
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects = { childobj };
+ String[] attributes = { "object_string" ,"object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Folder fl = childobj as Folder;
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ alllist.Add(perobject);
+ folderlist.Add(perobject);
+ }
+ else if (type == "Item" || type == "D5Product"
+ || type == "D5AsmPart" || type == "D5Part"
+ || type == "D5StdFasteners" || type == "D5CommonParts")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ alllist.Add(perobject);
+ itemlist.Add(perobject);
+ }
+ }
+ foreach(TreeNode ch in rootnode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+
+ private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+ {
+ //MessageBox.Show("获得");
+ TreeNode nownode = this.treeView1.SelectedNode;
+
+ getChild(nownode);
+ foreach (TreeNode ch in nownode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+
+ private void getChild(TreeNode nownode)
+ {
+ nownode.Nodes.Clear();
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ WorkspaceObject[] contents = null;
+ //dmService.GetProperties(objects, attributes);
+ string nodetext = nownode.Text;
+ int imageindex = nownode.SelectedImageIndex;
+ List templist = new List();
+ if (imageindex == 1)
+ {
+ foreach (ALLOBJECT perobject in folderlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Folder fl = perobject.workobject as Folder;
+ ModelObject[] objects = { fl };
+ string[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = fl.Contents;
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects1 = { childobj };
+ String[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Folder infl = childobj as Folder;
+
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ templist.Add(inperobject);
+ folderlist.Add(inperobject);
+ }
+ else if (type == "Item" || type == "D5Product"
+ || type == "D5AsmPart" || type == "D5Part"
+ || type == "D5StdFasteners" || type == "D5CommonParts")
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ templist.Add(inperobject);
+ itemlist.Add(inperobject);
+ }
+ }
+ break;
+ }
+ }
+ if (templist.Count > 0 && templist != null)
+ {
+ alllist.AddRange(templist);
+ templist.Clear();
+ }
+ return;
+
+ }
+ else if (imageindex == 3)
+ {
+ foreach (ALLOBJECT perobject in itemlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Item item = perobject.workobject as Item;
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { item };
+ string[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = item.Revision_list;
+ for (int i = 0; i < itemrevisionlist.Length; i++)
+ {
+ ItemRevision itemrevision = itemrevisionlist[i] as ItemRevision;
+ ModelObject[] objects1 = { itemrevision };
+ string[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = itemrevision.Object_string;
+ string type = itemrevision.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = itemrevision;
+ TreeNode childnode = new TreeNode(name, 4, 4);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ templist.Add(inperobject);
+ itemvisionlist.Add(inperobject);
+ }
+ break;
+ }
+ }
+ if (templist.Count > 0 && templist != null)
+ {
+ alllist.AddRange(templist);
+ templist.Clear();
+ }
+ return;
+ }
+ else if (imageindex == 4)
+ {
+ foreach (ALLOBJECT perobject in itemvisionlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ ItemRevision itemrevision = perobject.workobject as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = { "D5DWG", "Folder" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1,myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "Folder")
+ {
+ Folder infold = otherSideData.OtherSideObjects[k] as Folder;
+
+ ModelObject[] objects = { infold };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = infold.Object_string;
+ string type = infold.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = infold;
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ templist.Add(inperobject);
+ folderlist.Add(inperobject);
+ }
+ else
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects = { dateset };
+ String[] attributes = { "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = dateset.Object_string;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = dateset;
+ inperobject.name = name;
+ TreeNode childnode = new TreeNode(name, 0, 0);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ templist.Add(inperobject);
+ datasetlist.Add(inperobject);
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ if (templist.Count > 0 && templist != null)
+ {
+ alllist.AddRange(templist);
+ templist.Clear();
+ }
+ return;
+ }
+ else if (imageindex == 6)
+ {
+
+ }
+ else if(imageindex == 7)
+ {
+ alllist.Clear();
+ folderlist.Clear();
+ itemlist.Clear();
+ itemvisionlist.Clear();
+ datasetlist.Clear();
+ try
+ {
+ ModelObject[] objects = { home };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = home.Contents;
+ }
+ catch (NotLoadedException ex) { ed.WriteMessage(ex.Message); }
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects = { childobj };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Folder fl = childobj as Folder;
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ alllist.Add(perobject);
+ folderlist.Add(perobject);
+ }
+ else if (type == "Item" || type == "D5Product"
+ || type == "D5AsmPart" || type == "D5Part"
+ || type == "D5StdFasteners" || type == "D5CommonParts")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ alllist.Add(perobject);
+ itemlist.Add(perobject);
+ }
+ }
+ foreach (TreeNode ch in nownode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/OpenFromTC.resx b/OriginAutoCAD_chint/form/OpenFromTC.resx
new file mode 100644
index 0000000..afde822
--- /dev/null
+++ b/OriginAutoCAD_chint/form/OpenFromTC.resx
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+ EAAAAk1TRnQBSQFMAgEBCAEAARQBAAEUAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AFQAQ/ycA
+ AZoCGgHwBQAQ/wMAAvANAAEEEAABGgHwARoBmgHlAVkBUgF5AfAEABD/AgABtAGtAc8BtQHvAgcBvAgA
+ AuwCBwEAAQMB+wEAAwcEAAIaAcMBGgLDAaABeQFZATIBmQGYAbwB8AEAAf8OAAH/AgABzweLAa4B9wHv
+ AQcEAALsAv8BAAEDAfsBAAL/AQcEAAGaAsMBGgL2AcMBeQI4AVgBVgFQAZgB8AH/DewBAAH/AgABzwGL
+ CYoBkgQAAuwC/wEAAQMB+wEAAv8BBwQAAXoDoAEaAvYBmgJZAVgBeAJQAfAB/wHsCwcB7AEAAf8CAAHP
+ ArIBrAeKAa4EAALsAv8BAAEDAfsBAAL/AQcEAAF6AuUBegJSAZkBGgGaAVkBmQGYAVYBUAHwAf8B7AED
+ AwcDAwMHAQMB7AEAAf8CAAHPAawFsgSKAZEBvAMAAQQB7AL/BAAC/wEHAwAB8AGaAXoB5QF6ATECUgEc
+ AZkBmgEaAZgBVwFWAfAB/wHsAfsBAwEHAQMDAAEDAQcBAwEHAewBAAH/AgABtQGtBbMDsgGzAa4BBwQA
+ AewI/wHsAwAB8AHDAfYBwwF6AVkBOAFYAngBHAGYAZkBmAF4AfAB/wHsAv8BAwEAAv8B+wEAAQMCBwHs
+ AQAB/wIAAbUBtAG7AroGswGRAQcEAAEDAQAG/wHsAgMCAAHwAZoCwwF6AjgBWAFXAVABSgFyAXMBHAGZ
+ AfAB/wHsAfsBBwEAAf8B+wP/AQABAwEHAewBAAH/AgABBwG0Aa0CtAEJAbsEugG0Ae8FAAEDAQAE/wHs
+ AgMB7AIAAfABmgF6AZoBegJZAnkBVgFQAXIBBwMAAf8B7AEHAQAB+wP/AfsC/wEAAQMB7AEAAf8CAAG1
+ AZkBkAGYAbMBtAEJAhkCCQG1AQcGAAEDAQAC/wHsAgMEAAHwARoBegF5AZkBoAFYAVkBmQJWARwEAAH/
+ AewBAAP/AfsD/wH7Af8BAAHsAQAB/wEAAbsBtAF5AZkBeQG0AgkEtAG1CAABAwIAAgMHAAHwArwBmQF5
+ AZkBeAJWAXgEAAH/AewC/wH7A/8B+wP/AfsCAAH/AgAB7wF+AV4BWAEcA7QB1gIJAQcJAAMDAewBAQcA
+ AbwB8AEIAZgBeAKYAZkBBwQAAf8N7AEAAf8CAAKZAnkBtQHvAwACtQEHDQABAQcAAfABvALwAbwBBwK8
+ BQAQ/wIAAQcBGgGRArwRAAEEAgABAQgABLwB8AcAEP8EAAHvHAAO8CoAARoB8AG8AfAEAAHvCYEB/wOB
+ AfAmAAGZARoBegFTAVkBUgF0AQcDAAGyAbkD2gO5AdoBuQH0AtoBuQG8IwACkwFMAXoDoAHlATEBMgFS
+ AZkCAAGyAtoCswLZAbMBiwGzAfQBswHUAbkBvA7sBAAM7AIAAfACmQEbAf8BmgH2AsMCoAExATgBMgF0
+ AgABsgOzBtkB9AHZArMBvAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewEAAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsB7AIAAbwBGgHDAv8BmQH/AvYCwwE3AjgBeQIAAbIBswGyAtkBuAHbAbkB2wGyAfQB2QGy
+ AbkBvAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewDAAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwEA
+ AewBAAG8AZoBoALDAZoB9gP/AfYBNwI4AXkCAAGyAdkBsgG4AbIBuAGKAbIBgQGyAfQB2QGyAbkBvAHs
+ Af8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewDAAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB7AEAAewBAAG8
+ AXkDoAFSAZkCwwEaAZoBegI4AXkCAAGyAdkBuAK5AbgB2QGyAYoB2QH0AdkBsgG5AbwB7AH/AQcB+wEH
+ AfsBBwH7AQcB+wEHAfsBBwHsAgAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBAALsAQAB8AF6AuUBegFT
+ AVIBcwF0AbwB9AH2AXoBWQGZAgABsgLaAbMC3AG5AbgB2QG7Af8BuwGzAdoBvAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsBBwH7AewCAAHsCv8B7AEAAQcB7AEAARoBmQN6AVkBMQErAUsBUgKZAZoCegIAAYEDswGQ
+ AYoBgQKzAbsBigG6ArMBBwHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewCAA3sAfsB7AEAAXQBwwH2
+ AsMBegFZATgBMgFMAZkBGgUAAboB2wK6AdoBugKRAdoBuwS6AQcB7AH/AfsBBwH7AQcB+wEHAfsBBwH7
+ AQcB+wHsAwAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBBwHsAQABdAHDAfYC/wGaAzgBUgcAAbkC2wGz
+ BNkBuAHyAf8B8gHbAdoBvAHsDP8B7AMAAewB/wH7AQcB+wEHAfsBBwX/AewBAAF6AsMC9gEaAfsCOAFS
+ BwABswTbAQkC3AIJAfQC2wHaAbwB7AEHAfsBBwH7AQcB+wEHBuwDAAHsAf8BBwH7AQcB+wEHAf8G7AEA
+ AnoCoAJ6AVkB+wE4AXkHAAGzAdsB3AcJAfQBCQHcAdsBvAEAAewBBwH7AQcB+wEHAewKAAHsBf8B7AcA
+ AnoBWQLlAcMBegJZAZkHAAG5CRkB9AMZAfACAAXsDAAF7AkAAfABGgFSAlkCegFTAXkRAAHwKAAC8AoA
+ AUIBTQE+BwABPgMAASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EAAv8CAAT/Af4BHwIAAecB/wHA
+ AQMB4AEPAgABwAE/AcABAwGAAQECAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHA
+ AQEBwAEDBAABwAEBAYABAQQAAcABAQHAAQEEAAHAAQEB4AEDAQABBwIAAcABAQHwAQcBAAEPAgABgAED
+ AfgBBwHAAQ8CAAHAAQMB/AEHAeABDwIAAcAB4wH+AScB4AEfAgABwQL/AWcB8AF/AgAB9wP/AYABAQX/
+ AYcBgAEABP8B/AEDAYABAAGAAQEB4AEAAeABAQGAAgABAQHAAgABAQGAAgABAQHAAgABAQGAAgABAQGA
+ AgABAQGAAgABAQGAAgABAQGAAgABAQMAAQEBgAIAAQEDAAEBAYACAAEBAwABDwGAAgABAQGAAgABPwGA
+ AgABAQGAAgABPwGAAgABAwGAAQEBAAE/AYABAAGAAf8BwAF/AQABPwGAAQABwQH/AeAB/wGAAT8B/wHv
+ BP8B8wH/Cw==
+
+
+
+
+
+ AAABAAEAECAAAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
+ AAD///8A///////////0bm5ubm5ub/Rs6IjoiEzv9G6Pd4d3Tm/0bP/3f/dM7/Ru/45v905v9Gz/jO/3
+ TO/0bn/2b/dOb/Rs5///90zv9G5ubm/3Tm/0bPeIf/bs7/Rub///fm5v9Gzs53zs7O/0xsbGxsbGz/RE
+ RERERERP//////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//
+
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/SaveToTC.Designer.cs b/OriginAutoCAD_chint/form/SaveToTC.Designer.cs
new file mode 100644
index 0000000..4dbfe99
--- /dev/null
+++ b/OriginAutoCAD_chint/form/SaveToTC.Designer.cs
@@ -0,0 +1,120 @@
+namespace HelloTeamcenter.form
+{
+ partial class SaveToTC
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SaveToTC));
+ this.treeView1 = new System.Windows.Forms.TreeView();
+ this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+ this.button1 = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.SuspendLayout();
+ //
+ // treeView1
+ //
+ this.treeView1.ImageIndex = 7;
+ this.treeView1.ImageList = this.imageList1;
+ this.treeView1.Location = new System.Drawing.Point(12, 13);
+ this.treeView1.Name = "treeView1";
+ this.treeView1.SelectedImageIndex = 7;
+ this.treeView1.Size = new System.Drawing.Size(491, 323);
+ this.treeView1.TabIndex = 6;
+ this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseDoubleClick);
+ //
+ // imageList1
+ //
+ this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+ this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList1.Images.SetKeyName(0, "autocad_01.ico");
+ this.imageList1.Images.SetKeyName(1, "FOLDER.ICO");
+ this.imageList1.Images.SetKeyName(2, "FOLDEROP.ICO");
+ this.imageList1.Images.SetKeyName(3, "item.ico");
+ this.imageList1.Images.SetKeyName(4, "itemrev.ico");
+ this.imageList1.Images.SetKeyName(5, "mail.ico");
+ this.imageList1.Images.SetKeyName(6, "Newstuff_Folder.png");
+ this.imageList1.Images.SetKeyName(7, "tai.ico");
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(428, 342);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 25);
+ this.button1.TabIndex = 7;
+ this.button1.Text = "保存";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 348);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(63, 13);
+ this.label1.TabIndex = 8;
+ this.label1.Text = "Item类型:";
+ //
+ // comboBox1
+ //
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "Item"});
+ this.comboBox1.Location = new System.Drawing.Point(83, 345);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(242, 21);
+ this.comboBox1.TabIndex = 9;
+ //
+ // SaveToTC
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(515, 385);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.treeView1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "SaveToTC";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "保存";
+ this.Load += new System.EventHandler(this.SaveToTC_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ public System.Windows.Forms.TreeView treeView1;
+ public System.Windows.Forms.ImageList imageList1;
+ public System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label1;
+ public System.Windows.Forms.ComboBox comboBox1;
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/SaveToTC.cs b/OriginAutoCAD_chint/form/SaveToTC.cs
new file mode 100644
index 0000000..d0f752b
--- /dev/null
+++ b/OriginAutoCAD_chint/form/SaveToTC.cs
@@ -0,0 +1,438 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+
+using HelloTeamcenter.hello;
+
+
+namespace HelloTeamcenter.form
+{
+ public partial class SaveToTC : Form
+ {
+ public Document appdoc;
+ public User user;
+ public bool first = true;
+ public Folder home = null;
+ Editor ed;
+
+ public List folderlist = new List();
+ public List itemlist = new List();
+ public List itemvisionlist = new List();
+ public List datasetlist = new List();
+
+ public OriginBTL btlinfo;
+ public List bomlist;
+ public Hashtable itemtypetable;
+
+ public string xmlpath = "";
+
+ public SaveToTC()
+ {
+ InitializeComponent();
+ }
+
+ private void SaveToTC_Load(object sender, EventArgs e)
+ {
+ ed = appdoc.Editor;
+ treeView1.Nodes.Clear();
+
+ //读取Item类型.xml信息
+ OriginItemType originitemtype = new OriginItemType();
+ originitemtype.getType(this.xmlpath);
+ this.itemtypetable = originitemtype.Itemtypetable;
+
+ foreach (DictionaryEntry de in itemtypetable)
+ {
+ this.comboBox1.Items.Add(de.Key.ToString());
+ }
+
+ OriginReadXml originreadxml = new OriginReadXml();
+ OriginTypeRule origintyperule = originreadxml.OriginReadRuleXML(xmlpath);
+ OriginTool origintool = new OriginTool();
+ string itemtype = origintool.getItemType(btlinfo, origintyperule);
+
+
+ if (this.comboBox1.Items.Contains(itemtype))
+ this.comboBox1.SelectedText = itemtype;
+ else
+ {
+ this.comboBox1.Items.Add(itemtype);
+ this.comboBox1.SelectedText = itemtype;
+ }
+
+ TreeNode rootnode = new TreeNode("Home", 7, 7);
+ treeView1.Nodes.Add(rootnode);
+
+ WorkspaceObject[] contents = null;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ try
+ {
+ home = user.Home_folder;
+ }
+ catch (NotLoadedException ex)
+ {
+ MessageBox.Show(ex.Message);
+ return;
+ }
+ try
+ {
+ ModelObject[] objects = { home };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = home.Contents;
+ }
+ catch (NotLoadedException ex) { MessageBox.Show(ex.Message); }
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects = { childobj };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Folder fl = childobj as Folder;
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ }
+ folderlist.Add(perobject);
+ }
+ else if (type == "Item" || this.itemtypetable.ContainsValue(type)) //需要替换类型
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ rootnode.Nodes.Add(childnode);
+ itemlist.Add(perobject);
+ }
+ }
+ foreach (TreeNode ch in rootnode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+
+ //这边是加载Item类型.xml文件的信息
+ ////Tool tool = new Tool();
+ ////BTLClass btlinfo = tool.getBTL("DFHM_BTL");
+ ////string itemtype = tool.initItemType(btlinfo.Item_id, btlinfo.Materialgrade);
+ ////this.comboBox1.SelectedText = itemtype;
+ }
+
+ private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+ {
+ TreeNode nownode = this.treeView1.SelectedNode;
+
+ getChild(nownode);
+ foreach (TreeNode ch in nownode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+
+ private void getChild(TreeNode nownode)
+ {
+ nownode.Nodes.Clear();
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ WorkspaceObject[] contents = null;
+ string nodetext = nownode.Text;
+ int imageindex = nownode.SelectedImageIndex;
+ if (imageindex == 1)
+ {
+ foreach (ALLOBJECT perobject in folderlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Folder fl = perobject.workobject as Folder;
+ ModelObject[] objects = { fl };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = fl.Contents;
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects1 = { childobj };
+ String[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Folder infl = childobj as Folder;
+
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ folderlist.Add(inperobject);
+ }
+ else if (type == "Item" || this.itemtypetable.ContainsValue(type))//需要替换类型
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ itemlist.Add(inperobject);
+ }
+ }
+ break;
+ }
+ }
+ return;
+
+ }
+ else if (imageindex == 3)
+ {
+ foreach (ALLOBJECT perobject in itemlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Item item = perobject.workobject as Item;
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { item };
+ String[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = item.Revision_list;
+ for (int i = 0; i < itemrevisionlist.Length; i++)
+ {
+ ItemRevision itemrevision = itemrevisionlist[i] as ItemRevision;
+ ModelObject[] objects1 = { itemrevision };
+ String[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = itemrevision.Object_string;
+ string type = itemrevision.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = itemrevision;
+ TreeNode childnode = new TreeNode(name, 4, 4);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ itemvisionlist.Add(inperobject);
+ }
+ break;
+ }
+ }
+ return;
+ }
+ else if (imageindex == 4)
+ {
+ foreach (ALLOBJECT perobject in itemvisionlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ ItemRevision itemrevision = perobject.workobject as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ String[] typeVec = { "D5DWG", "Folder" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "Folder")
+ {
+ Folder infold = otherSideData.OtherSideObjects[k] as Folder;
+
+ ModelObject[] objects = { infold };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = infold.Object_string;
+ string type = infold.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = infold;
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ folderlist.Add(inperobject);
+ }
+ else
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects = { dateset };
+ String[] attributes = { "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = dateset.Object_string;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = dateset;
+ inperobject.name = name;
+ TreeNode childnode = new TreeNode(name, 0, 0);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ datasetlist.Add(inperobject);
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ return;
+ }
+ else if (imageindex == 6)
+ {
+
+ }
+ else if (imageindex == 7)
+ {
+ folderlist.Clear();
+ itemlist.Clear();
+ itemvisionlist.Clear();
+ datasetlist.Clear();
+ try
+ {
+ ModelObject[] objects = { home };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = home.Contents;
+ }
+ catch (NotLoadedException ex) { MessageBox.Show(ex.Message); }
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects = { childobj };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Folder fl = childobj as Folder;
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ }
+ folderlist.Add(perobject);
+ }
+ else if (type == "Item" || this.itemtypetable.ContainsValue(type))
+ {
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ perobject.treenode = childnode;
+ perobject.name = name;
+ perobject.uid = childobj.Uid;
+ nownode.Nodes.Add(childnode);
+ itemlist.Add(perobject);
+ }
+ }
+ foreach (TreeNode ch in nownode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/SaveToTC.resx b/OriginAutoCAD_chint/form/SaveToTC.resx
new file mode 100644
index 0000000..36e954d
--- /dev/null
+++ b/OriginAutoCAD_chint/form/SaveToTC.resx
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+ EAAAAk1TRnQBSQFMAgEBCAEAARwBAAEcAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AFQAQ/ycA
+ AZoCGgHwBQAQ/wMAAvANAAEEEAABGgHwARoBmgHlAVkBUgF5AfAEABD/AgABtAGtAc8BtQHvAgcBvAgA
+ AuwCBwEAAQMB+wEAAwcEAAIaAcMBGgLDAaABeQFZATIBmQGYAbwB8AEAAf8OAAH/AgABzweLAa4B9wHv
+ AQcEAALsAv8BAAEDAfsBAAL/AQcEAAGaAsMBGgL2AcMBeQI4AVgBVgFQAZgB8AH/DewBAAH/AgABzwGL
+ CYoBkgQAAuwC/wEAAQMB+wEAAv8BBwQAAXoDoAEaAvYBmgJZAVgBeAJQAfAB/wHsCwcB7AEAAf8CAAHP
+ ArIBrAeKAa4EAALsAv8BAAEDAfsBAAL/AQcEAAF6AuUBegJSAZkBGgGaAVkBmQGYAVYBUAHwAf8B7AED
+ AwcDAwMHAQMB7AEAAf8CAAHPAawFsgSKAZEBvAMAAQQB7AL/BAAC/wEHAwAB8AGaAXoB5QF6ATECUgEc
+ AZkBmgEaAZgBVwFWAfAB/wHsAfsBAwEHAQMDAAEDAQcBAwEHAewBAAH/AgABtQGtBbMDsgGzAa4BBwQA
+ AewI/wHsAwAB8AHDAfYBwwF6AVkBOAFYAngBHAGYAZkBmAF4AfAB/wHsAv8BAwEAAv8B+wEAAQMCBwHs
+ AQAB/wIAAbUBtAG7AroGswGRAQcEAAEDAQAG/wHsAgMCAAHwAZoCwwF6AjgBWAFXAVABSgFyAXMBHAGZ
+ AfAB/wHsAfsBBwEAAf8B+wP/AQABAwEHAewBAAH/AgABBwG0Aa0CtAEJAbsEugG0Ae8FAAEDAQAE/wHs
+ AgMB7AIAAfABmgF6AZoBegJZAnkBVgFQAXIBBwMAAf8B7AEHAQAB+wP/AfsC/wEAAQMB7AEAAf8CAAG1
+ AZkBkAGYAbMBtAEJAhkCCQG1AQcGAAEDAQAC/wHsAgMEAAHwARoBegF5AZkBoAFYAVkBmQJWARwEAAH/
+ AewBAAP/AfsD/wH7Af8BAAHsAQAB/wEAAbsBtAF5AZkBeQG0AgkEtAG1CAABAwIAAgMHAAHwArwBmQF5
+ AZkBeAJWAXgEAAH/AewC/wH7A/8B+wP/AfsCAAH/AgAB7wF+AV4BWAEcA7QB1gIJAQcJAAMDAewBAQcA
+ AbwB8AEIAZgBeAKYAZkBBwQAAf8N7AEAAf8CAAKZAnkBtQHvAwACtQEHDQABAQcAAfABvALwAbwBBwK8
+ BQAQ/wIAAQcBGgGRArwRAAEEAgABAQgABLwB8AcAEP8EAAHvHAAO8CoAARoB8AG8AfAEAAHvCYEB/wOB
+ AfAmAAGZARoBegFTAVkBUgF0AQcDAAGyAbkD2gO5AdoBuQH0AtoBuQG8IwACkwFMAXoDoAHlATEBMgFS
+ AZkCAAGyAtoCswLZAbMBiwGzAfQBswHUAbkBvA7sBAAM7AIAAfACmQEbAf8BmgH2AsMCoAExATgBMgF0
+ AgABsgOzBtkB9AHZArMBvAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewEAAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsB7AIAAbwBGgHDAv8BmQH/AvYCwwE3AjgBeQIAAbIBswGyAtkBuAHbAbkB2wGyAfQB2QGy
+ AbkBvAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewDAAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwEA
+ AewBAAG8AZoBoALDAZoB9gP/AfYBNwI4AXkCAAGyAdkBsgG4AbIBuAGKAbIBgQGyAfQB2QGyAbkBvAHs
+ Af8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewDAAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB7AEAAewBAAG8
+ AXkDoAFSAZkCwwEaAZoBegI4AXkCAAGyAdkBuAK5AbgB2QGyAYoB2QH0AdkBsgG5AbwB7AH/AQcB+wEH
+ AfsBBwH7AQcB+wEHAfsBBwHsAgAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBAALsAQAB8AF6AuUBegFT
+ AVIBcwF0AbwB9AH2AXoBWQGZAgABsgLaAbMC3AG5AbgB2QG7Af8BuwGzAdoBvAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsBBwH7AewCAAHsCv8B7AEAAQcB7AEAARoBmQN6AVkBMQErAUsBUgKZAZoCegIAAYEDswGQ
+ AYoBgQKzAbsBigG6ArMBBwHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewCAA3sAfsB7AEAAXQBwwH2
+ AsMBegFZATgBMgFMAZkBGgUAAboB2wK6AdoBugKRAdoBuwS6AQcB7AH/AfsBBwH7AQcB+wEHAfsBBwH7
+ AQcB+wHsAwAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBBwHsAQABdAHDAfYC/wGaAzgBUgcAAbkC2wGz
+ BNkBuAHyAf8B8gHbAdoBvAHsDP8B7AMAAewB/wH7AQcB+wEHAfsBBwX/AewBAAF6AsMC9gEaAfsCOAFS
+ BwABswTbAQkC3AIJAfQC2wHaAbwB7AEHAfsBBwH7AQcB+wEHBuwDAAHsAf8BBwH7AQcB+wEHAf8G7AEA
+ AnoCoAJ6AVkB+wE4AXkHAAGzAdsB3AcJAfQBCQHcAdsBvAEAAewBBwH7AQcB+wEHAewKAAHsBf8B7AcA
+ AnoBWQLlAcMBegJZAZkHAAG5CRkB9AMZAfACAAXsDAAF7AkAAfABGgFSAlkCegFTAXkRAAHwKAAC8AoA
+ AUIBTQE+BwABPgMAASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EAAv8CAAT/Af4BHwIAAecB/wHA
+ AQMB4AEPAgABwAE/AcABAwGAAQECAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHA
+ AQEBwAEDBAABwAEBAYABAQQAAcABAQHAAQEEAAHAAQEB4AEDAQABBwIAAcABAQHwAQcBAAEPAgABgAED
+ AfgBBwHAAQ8CAAHAAQMB/AEHAeABDwIAAcAB4wH+AScB4AEfAgABwQL/AWcB8AF/AgAB9wP/AYABAQX/
+ AYcBgAEABP8B/AEDAYABAAGAAQEB4AEAAeABAQGAAgABAQHAAgABAQGAAgABAQHAAgABAQGAAgABAQGA
+ AgABAQGAAgABAQGAAgABAQGAAgABAQMAAQEBgAIAAQEDAAEBAYACAAEBAwABDwGAAgABAQGAAgABPwGA
+ AgABAQGAAgABPwGAAgABAwGAAQEBAAE/AYABAAGAAf8BwAF/AQABPwGAAQABwQH/AeAB/wGAAT8B/wHv
+ BP8B8wH/Cw==
+
+
+
+
+
+ AAABAAEAECAAAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
+ AAD///8A///////////0bm5ubm5ub/Rs6IjoiEzv9G6Pd4d3Tm/0bP/3f/dM7/Ru/45v905v9Gz/jO/3
+ TO/0bn/2b/dOb/Rs5///90zv9G5ubm/3Tm/0bPeIf/bs7/Rub///fm5v9Gzs53zs7O/0xsbGxsbGz/RE
+ RERERERP//////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//
+
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/UploadFile.Designer.cs b/OriginAutoCAD_chint/form/UploadFile.Designer.cs
new file mode 100644
index 0000000..07b6af8
--- /dev/null
+++ b/OriginAutoCAD_chint/form/UploadFile.Designer.cs
@@ -0,0 +1,112 @@
+namespace HelloTeamcenter.form
+{
+ partial class UploadFile
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.checkedListBox1 = new System.Windows.Forms.CheckedListBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ // checkedListBox1
+ //
+ this.checkedListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkedListBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.checkedListBox1.FormattingEnabled = true;
+ this.checkedListBox1.Location = new System.Drawing.Point(6, 6);
+ this.checkedListBox1.Margin = new System.Windows.Forms.Padding(13);
+ this.checkedListBox1.Name = "checkedListBox1";
+ this.checkedListBox1.Size = new System.Drawing.Size(320, 214);
+ this.checkedListBox1.TabIndex = 0;
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.Location = new System.Drawing.Point(150, 228);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "上传";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button2.Location = new System.Drawing.Point(250, 228);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 2;
+ this.button2.Text = "取消";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // checkBox1
+ //
+ this.checkBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Location = new System.Drawing.Point(6, 232);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(48, 16);
+ this.checkBox1.TabIndex = 3;
+ this.checkBox1.Text = "全选";
+ this.checkBox1.UseVisualStyleBackColor = true;
+ this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
+ //
+ // UploadFile
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(334, 262);
+ this.Controls.Add(this.checkBox1);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.checkedListBox1);
+ this.Name = "UploadFile";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "批量上传图纸";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.CheckedListBox checkedListBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.ComponentModel.BackgroundWorker backgroundWorker1;
+ private System.Windows.Forms.CheckBox checkBox1;
+
+
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/form/UploadFile.cs b/OriginAutoCAD_chint/form/UploadFile.cs
new file mode 100644
index 0000000..47b0efc
--- /dev/null
+++ b/OriginAutoCAD_chint/form/UploadFile.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using UploadFiles;
+
+namespace HelloTeamcenter.form
+{
+ public partial class UploadFile : Form
+ {
+ List res = new List();
+ public UploadFile()
+ {
+ InitializeComponent();
+ }
+
+ //public List getSelectedFiles(List uploadBeanList)
+ //{
+ // checkedListBox1.Items.Clear();
+ // checkedListBox1.Items.AddRange(uploadBeanList.ToArray());
+ // ShowDialog();
+ // return res;
+ //}
+
+ public List getSelectedFiles(List uploadBeanList)
+ {
+ checkedListBox1.Items.Clear();
+ checkedListBox1.Items.AddRange(uploadBeanList.ToArray());
+ ShowDialog();
+ return res;
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ foreach (object obj in checkedListBox1.CheckedItems)
+ {
+ UploadBean bean = (UploadBean)obj;
+
+ res.Add(bean.filePath);
+ }
+ Dispose();
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ Dispose();
+ }
+
+ private void checkBox1_CheckedChanged(object sender, EventArgs e)
+ {
+ bool b = checkBox1.Checked;
+ int size = checkedListBox1.Items.Count;
+ for (int i = 0; i < size; i++)
+ {
+ checkedListBox1.SetItemChecked(i, b);
+ }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/form/UploadFile.resx b/OriginAutoCAD_chint/form/UploadFile.resx
new file mode 100644
index 0000000..59099f2
--- /dev/null
+++ b/OriginAutoCAD_chint/form/UploadFile.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/BTLClass.cs b/OriginAutoCAD_chint/hello/BTLClass.cs
new file mode 100644
index 0000000..02ea841
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/BTLClass.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HelloTeamcenter.hello
+{
+ public class BTLClass
+ {
+ private string item_id;
+
+ public string Item_id
+ {
+ get { return item_id; }
+ set { item_id = value; }
+ }
+ private string item_name;
+
+ public string Item_name
+ {
+ get { return item_name; }
+ set { item_name = value; }
+ }
+ private string partnumber;
+
+ public string Partnumber
+ {
+ get { return partnumber; }
+ set { partnumber = value; }
+ }
+ private string projectname;
+
+ public string Projectname
+ {
+ get { return projectname; }
+ set { projectname = value; }
+ }
+ private string proportion;
+
+ public string Proportion
+ {
+ get { return proportion; }
+ set { proportion = value; }
+ }
+ private string mapsheet;
+
+ public string Mapsheet
+ {
+ get { return mapsheet; }
+ set { mapsheet = value; }
+ }
+ private string item_revision_id;
+
+ public string Item_revision_id
+ {
+ get { return item_revision_id; }
+ set { item_revision_id = value; }
+ }
+ private string weight;
+
+ public string Weight
+ {
+ get { return weight; }
+ set { weight = value; }
+ }
+ private string materialgrade;
+
+ public string Materialgrade
+ {
+ get { return materialgrade; }
+ set { materialgrade = value; }
+ }
+ private string allpage;
+
+ public string Allpage
+ {
+ get { return allpage; }
+ set { allpage = value; }
+ }
+ private string pagenumber = "1";
+
+ public string Pagenumber
+ {
+ get { return pagenumber; }
+ set { pagenumber = value; }
+ }
+ private string productType;
+
+ public string ProductType
+ {
+ get { return productType; }
+ set { productType = value; }
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/BomCreator.cs b/OriginAutoCAD_chint/hello/BomCreator.cs
new file mode 100644
index 0000000..bb0107b
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/BomCreator.cs
@@ -0,0 +1,284 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml;
+using System.Collections;
+using Teamcenter.Services.Strong.Core;
+using Session = Teamcenter.ClientX.Session;
+using System.Windows.Forms;
+using Teamcenter.Soa.Client.Model.Strong;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Services.Strong.Cad._2007_01.StructureManagement;
+using Teamcenter.Services.Strong.Core._2007_01.DataManagement;
+using HelloTeamcenter.hello;
+namespace BomCreator {
+ public class BomCreator {
+
+ private static void SyncProps(DataManagementService dmService, KBomUpdater.BomBean bomBean, Hashtable itemProps, Hashtable revProps, Hashtable itemMasterProps, Hashtable revMasterProps) {
+ if (bomBean == null || bomBean.rev == null) {
+ return;
+ }
+
+ dmService.GetProperties(new ModelObject[] { bomBean.rev }, new string[] { "items_tag", "IMAN_master_form_rev" });
+ if (itemProps != null && itemProps.Count > 0) {
+ ModelObject item = bomBean.rev.Items_tag;
+ ServiceData data = dmService.SetProperties(new ModelObject[] { item }, itemProps);
+ //KBomUpdater.ThrowServiceDataError("更新对象属性出错", data);
+ // dmService.RefreshObjects(new ModelObject[] { item });
+ }
+ if (revProps != null && revProps.Count > 0) {
+ ServiceData data = dmService.SetProperties(new ModelObject[] { bomBean.rev }, revProps);
+ //KBomUpdater.ThrowServiceDataError("更新版本属性出错", data);
+ // dmService.RefreshObjects(new ModelObject[] { bomBean.rev });
+ }
+ if (itemMasterProps != null && itemMasterProps.Count > 0) {
+ dmService.GetProperties(new ModelObject[] { bomBean.rev.Items_tag }, new string[] { "IMAN_master_form" });
+ ModelObject itemMaster = bomBean.rev.Items_tag.IMAN_master_form[0];
+ ServiceData data = dmService.SetProperties(new ModelObject[] { itemMaster }, itemMasterProps);
+ //KBomUpdater.ThrowServiceDataError("更新对象表单属性出错", data);
+ // dmService.RefreshObjects(new ModelObject[] { itemMaster });
+ }
+ if (revMasterProps != null && revMasterProps.Count > 0) {
+ ModelObject revMaster = bomBean.rev.IMAN_master_form_rev[0];
+ ServiceData data = dmService.SetProperties(new ModelObject[] { revMaster }, revMasterProps);
+ //KBomUpdater.ThrowServiceDataError("更新对象版本表单属性出错", data);
+ // dmService.RefreshObjects(new ModelObject[] { revMaster });
+ }
+ }
+
+ //public const string PREF_EMPTY_SPECIAL_HANDLE = "Connor_CreateBOMFromCAD_EmptyProperty_Checker";
+
+ public static void CreateBom(ItemRevision parentRev, List bomBeans, bool alert) {
+ if (parentRev == null) {
+ if (alert)
+ {
+ MessageBox.Show("没有找到父对象");
+ }
+ else
+ {
+ throw new System.Exception("没有找到父对象");
+ }
+
+ return;
+ }
+ int lineCnt = bomBeans.Count;
+ if (lineCnt == 0) {
+ if (alert)
+ {
+ MessageBox.Show("没有找到图纸中的BOM信息");
+ }
+ else
+ {
+ throw new System.Exception("没有找到图纸中的BOM信息");
+ }
+
+ return;
+ }
+ //Dictionary emptySp = new Dictionary();
+ //PreferenceManagementService ps = PreferenceManagementService.getService(Session.getConnection());
+ //Teamcenter.Services.Strong.Administration._2012_09.PreferenceManagement.GetPreferencesResponse psResp = ps.GetPreferences(new string[] { PREF_EMPTY_SPECIAL_HANDLE }, false);
+ //if (psResp.Response != null && psResp.Response.Length > 0) {
+ // string[] prefVals = psResp.Response[0].Values.Values;
+ // int len = prefVals == null ? 0 : prefVals.Length;
+ // for (int i = 0; i < len; i++) {
+ // string p = prefVals[i].Trim();
+ // string[] split = p.Split(';');
+ // if (split != null && split.Length == 2) {
+ // string checkConfig = split[0].Trim().ToUpper();
+ // string newCofig = split[1].Trim();
+ // if(!emptySp.ContainsKey(checkConfig)){
+ // emptySp.Add(checkConfig, newCofig);
+ // }
+ // }
+ // }
+ //}
+
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ //dmService.RefreshObjects(new ModelObject[] { parentRev });
+ dmService.GetProperties(new ModelObject[] { parentRev }, new string[] { "structure_revisions", "object_string" });
+ //dmService.RefreshObjects2(new ModelObject[] { rev },false);
+ //dmService.GetProperties(new ModelObject[] { rev }, new string[] { "structure_revisions" });
+ ModelObject[] bvrs = parentRev.Structure_revisions;
+ if (alert)
+ {
+ DialogResult flushbomresult = MessageBox.Show(((bvrs == null || bvrs.Length == 0) ? "" : "对象已存在BOM视图,") + "是否更新BOM:" + parentRev.Object_string, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (flushbomresult != DialogResult.Yes)
+ {
+ return;
+ }
+ }
+ //签出bom(如果有)
+ checkoutBom(dmService, parentRev, bvrs);
+ try {
+ //创建BOM
+ Teamcenter.Services.Strong.Cad.StructureManagementService ssService = Teamcenter.Services.Strong.Cad.StructureManagementService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2
+ structInfo = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2();
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[]
+ structInfoVec = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[1];
+ List childInfoVec = new List();// RelativeStructureChildInfo[bomlineCnt];
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2
+ sPref = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2() {
+ CadOccIdAttrName = null,
+ ItemTypes = new string[] { },
+ OverwriteForLastModDate = true
+ };
+ int seq = 1;
+ for (int i = 0; i < lineCnt; i++) {
+ KBomUpdater.BomBean bean = bomBeans[i];
+ if (bean.rev == null) {
+ continue;
+ }
+ // dmService.RefreshObjects(new ModelObject[] { bean.rev });
+ dmService.GetProperties(new ModelObject[] { bean.rev }, new string[] { "item_id" });
+ string id = bean.rev.Item_id;
+ Hashtable itemProps = new Hashtable();
+ Hashtable revProps = new Hashtable();
+ Hashtable itemMasterProps = new Hashtable();
+ Hashtable revMasterProps = new Hashtable();
+
+ RelativeStructureChildInfo childInfo = new RelativeStructureChildInfo();
+ RelOccInfo occInfo = new RelOccInfo();
+ Dictionary attrsToSet = new Dictionary();
+ foreach (string key in bean.bomProps.Keys) {
+ string propStr = key.Trim();
+ string value = bean.bomProps[key].ToString();
+ string[] propStrSplit = propStr.Split(';');
+ int len = propStr == null ? 0 : propStrSplit.Length;
+ for (int k = 0; k < len; k++) {
+ string cc = propStrSplit[k].Trim();
+ string[] ccSplit = cc.Split('.');
+ if (ccSplit == null || ccSplit.Length != 3) {
+ continue;
+ }
+ string prefix = ccSplit[0].Trim().ToUpper();
+ string loc = ccSplit[1].Trim().ToUpper();
+ string propName = ccSplit[2].Trim();
+ if ("*".Equals(prefix) || id.ToUpper().StartsWith(prefix)) {
+ switch (loc) {
+ case "ITEM":
+ if (!string.IsNullOrEmpty(value)) {
+ VecStruct val1 = new VecStruct();
+ val1.StringVec = new string[] { value };
+ itemProps.Add(propName, val1);
+ }
+ break;
+ case "REV":
+ if (!string.IsNullOrEmpty(value)) {
+ VecStruct val2 = new VecStruct();
+ val2.StringVec = new string[] { value };
+ revProps.Add(propName, val2);
+ }
+ break;
+ case "ITEMMASTER":
+ if (!string.IsNullOrEmpty(value)) {
+ VecStruct val3 = new VecStruct();
+ val3.StringVec = new string[] { value };
+ itemMasterProps.Add(propName, val3);
+ }
+ break;
+ case "REVMASTER":
+ if (!string.IsNullOrEmpty(value)) {
+ VecStruct val4 = new VecStruct();
+ val4.StringVec = new string[] { value };
+ revMasterProps.Add(propName, val4);
+ }
+ break;
+ case "BOMLINE":
+ if (!string.IsNullOrEmpty(value) || PROP_TYJGG.Equals(propName)) {
+ AttributesInfo attrsInfo = new AttributesInfo();
+ attrsInfo.Name = propName;
+ attrsInfo.Value = value;
+ attrsToSet.Add(propName, attrsInfo);
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+
+ }
+ }
+ //正泰规格为空时,单重需要特殊处理
+ if (attrsToSet.ContainsKey(PROP_TYJGG) && string.IsNullOrEmpty(attrsToSet[PROP_TYJGG].Value)) {
+ string weight = null;
+ if (attrsToSet.ContainsKey(PROP_TYWEIGHT) && !revProps.ContainsKey(PROP_REV_TYEWIGHT)) {
+ weight = attrsToSet[PROP_TYWEIGHT].Value;
+ attrsToSet.Remove(PROP_TYWEIGHT);
+ VecStruct val2 = new VecStruct();
+ val2.StringVec = new string[] { weight };
+ revProps.Add(PROP_REV_TYEWIGHT, val2);
+ }
+ }
+
+ AttributesInfo seqNo = new AttributesInfo();
+ seqNo.Name = "bl_sequence_no";
+ seqNo.Value = seq * 10 + "";
+ seq++;
+ attrsToSet.Add("bl_sequence_no", seqNo);
+ occInfo.AttrsToSet = attrsToSet.Values.ToArray();
+ childInfo.Child = bean.rev;
+ childInfo.OccInfo = occInfo;
+ childInfoVec.Add(childInfo);
+
+ SyncProps(dmService, bean, itemProps, revProps, itemMasterProps, revMasterProps);
+ }
+ structInfo.ChildInfo = childInfoVec.ToArray();
+ //structInfo.LastModifiedOfBVR = DateTime.Now;
+ structInfo.Parent = parentRev;
+ structInfo.Precise = false;
+ structInfoVec[0] = structInfo;
+ // dmService.RefreshObjects(new ModelObject[] { parentRev });
+ CreateOrUpdateRelativeStructureResponse cursResp = ssService.CreateOrUpdateRelativeStructure(structInfoVec, "view", true, sPref);
+ KBomUpdater.ThrowServiceDataError("创建BOM失败:", cursResp.ServiceData);
+ }
+ finally {
+ if (bvrs != null) {
+ Teamcenter.Services.Strong.Core._2006_03.Reservation.Reservation res = ReservationService.getService(Session.getConnection());
+ ServiceData sd = res.Checkin(bvrs);
+ KBomUpdater.ThrowServiceDataError("签入BOM失败:", sd);
+ bvrs = null;
+ }
+ }
+ }
+
+ private const string PROP_TYJGG = "ZT2_TYSpecifications";// "ZT2_TYSpecifications"; KL3_bz
+ private const string PROP_TYWEIGHT = "ZT2_TYWeight";// "ZT2_TYWeight"; KL3_dw
+ private const string PROP_REV_TYEWIGHT = "zt2_DesignWeight";// "zt2_DesignWeight"; object_desc
+
+
+ private static void checkoutBom(DataManagementService dmService, ItemRevision rev, ModelObject[] bvrs) {
+ //dmService = DataManagementService.getService(Session.getConnection());
+ //dmService.RefreshObjects(new ModelObject[] { rev });
+ //dmService.GetProperties(new ModelObject[] { rev }, new string[] { "structure_revisions" });
+ ////dmService.RefreshObjects2(new ModelObject[] { rev },false);
+ ////dmService.GetProperties(new ModelObject[] { rev }, new string[] { "structure_revisions" });
+ //bvrs = rev.Structure_revisions;
+ if (bvrs == null) {
+ return;
+ }
+ Teamcenter.Services.Strong.Core._2006_03.Reservation.Reservation res = ReservationService.getService(Session.getConnection());
+ for (int i = 0; i < bvrs.Length; i++) {
+ PSBOMViewRevision bvr = bvrs[i] as PSBOMViewRevision;
+ ModelObject[] objects3 = { bvr };
+ String[] attributes3 = { "is_modifiable", "object_string", "checked_out" };
+ //dmService.RefreshObjects(objects3);
+ dmService.GetProperties(objects3, attributes3);
+ if (!bvr.Is_modifiable) {
+ throw new System.Exception("当前用户无权修改BOM");
+ }
+ if ("Y".Equals(bvr.Checked_out)) {
+ throw new System.Exception("BOM已经签出,请确认签入后再执行本操作!");
+ }
+ string bvr_name = bvr.Object_string;
+ }
+ //ModelObject[] bvr_vec = new ModelObject[] { bvr };
+ ServiceData sData = res.Checkout(rev.Structure_revisions, "", "");
+ KBomUpdater.ThrowServiceDataError("签出BOM发生异常:", sData);
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/BomMsgBean.cs b/OriginAutoCAD_chint/hello/BomMsgBean.cs
new file mode 100644
index 0000000..f85aab0
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/BomMsgBean.cs
@@ -0,0 +1,152 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HelloTeamcenter.hello
+{
+ class BomMsgBean
+ {
+ String index;//序号
+ String codeNo;//代号
+ String name;//名称
+ String quantity;//数量
+ String material;//材料
+ String note;//备注
+ String zhongliang ;
+ String gg ;
+ String xiaoji;
+
+ ///
+ /// 返回信息
+ ///
+ ///
+ public String toString() {
+ return "index =" + index + " | codeNo=" + codeNo + " | name=" + name + " | quantity=" + quantity + " | material=" + material+" | note="+note +"\n";
+
+ }
+ public String Xiaoji {
+ set {
+ xiaoji = value;
+ }
+ get {
+ return xiaoji;
+ }
+ }
+
+ ///
+ /// 设置和得到序号
+ ///
+ public String Gg
+ {
+ set
+ {
+ gg = value;
+ }
+ get
+ {
+ return gg;
+ }
+ }
+
+ ///
+ /// 设置和得到序号
+ ///
+ public String Zhongliang
+ {
+ set
+ {
+ zhongliang = value;
+ }
+ get
+ {
+ return zhongliang;
+ }
+ }
+
+ ///
+ /// 设置和得到序号
+ ///
+ public String Index {
+ set {
+ index = value;
+ }
+ get {
+ return index;
+ }
+ }
+ ///
+ /// 设置和得到代号
+ ///
+ public String CodeNo
+ {
+ set
+ {
+ codeNo = value;
+ }
+ get
+ {
+ return codeNo;
+ }
+ }
+ ///
+ /// 设置和得到名称
+ ///
+ public String Name
+ {
+ set
+ {
+ name = value;
+ }
+ get
+ {
+ return name;
+ }
+ }
+ ///
+ /// 设置和得到数量
+ ///
+ public String Quantity
+ {
+ set
+ {
+ quantity = value;
+ }
+ get
+ {
+ return quantity;
+ }
+ }
+ ///
+ /// 设置和得到材料
+ ///
+ public String Material
+ {
+ set
+ {
+ material = value;
+ }
+ get
+ {
+ return material;
+ }
+ }
+ ///
+ /// 设置和得到备注
+ ///
+ public String Note
+ {
+ set
+ {
+ note = value;
+ }
+ get
+ {
+ return note;
+ }
+ }
+
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/CADCommand.cs b/OriginAutoCAD_chint/hello/CADCommand.cs
new file mode 100644
index 0000000..5ac3ed8
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/CADCommand.cs
@@ -0,0 +1,195 @@
+//*******************************************//
+
+// Type Library //
+
+//*******************************************//
+
+//using Autodesk.AutoCAD.Interop; // AutoCAD 2008 TypeLibrary
+//using Autodesk.AutoCAD.Interop.Common; //AutoCAD/ObjectDBXCommon 17.0 Type Library
+//using Autodesk.AutoCAD.Customization; //accui.dll
+
+//*******************************************//
+
+// acdbmgd.dll //
+
+//*******************************************//
+
+using Autodesk.AutoCAD.Runtime;
+using Autodesk.AutoCAD.DatabaseServices;
+//******************************************//
+
+//--------------------------------------------//
+
+// acmgd.dll //
+
+//------------------------------------------*//
+using Autodesk.AutoCAD.PlottingServices;
+using Autodesk.AutoCAD.EditorInput;
+using Autodesk.AutoCAD.ApplicationServices;
+
+namespace KCad
+{
+ public class CADCommand
+ {
+
+ [CommandMethod("TestPdf")]
+ static public void CheckFrame()
+ {
+
+ // PrintDwg pdfdwg = new PrintDwg(AcAp.DocumentManager.MdiActiveDocument);
+ // string path=pdfdwg.MultiSheetPlot();
+
+
+
+ }
+ [CommandMethod("mplot")]
+ static public void MultiSheetPlot()
+ {
+
+ Document doc = Application.DocumentManager.MdiActiveDocument;
+ Editor ed = doc.Editor;
+ Database db = doc.Database;
+ Transaction tr = db.TransactionManager.StartTransaction();
+
+ using (tr)
+ {
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
+ {
+ PlotEngine pe = PlotFactory.CreatePublishEngine();
+
+ using (pe)
+ {
+ ObjectIdCollection layoutsToPlot = new ObjectIdCollection();
+
+ foreach (ObjectId btrId in bt)
+ {
+
+ BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
+ ed.WriteMessage("--" + btr.Name + "--\n");
+ if (btr.IsLayout && btr.Name.ToUpper() == BlockTableRecord.ModelSpace.ToUpper())
+ {
+ ed.WriteMessage("\nInfo: {0}\n{1}", btr.Name.ToUpper(), btr.ToString());
+ layoutsToPlot.Add(btrId);
+ }
+ }
+
+
+ layoutsToPlot.Add(layoutsToPlot[0]);
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+ PlotProgressDialog ppd = new PlotProgressDialog(false, layoutsToPlot.Count, true);
+
+ using (ppd)
+ {
+
+ int numSheet = 1;
+
+ foreach (ObjectId btrId in layoutsToPlot)
+ {
+ BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
+
+ Layout lo = (Layout)tr.GetObject(btr.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Extents);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotCentered(ps, true);
+
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", "ANSI_A_(8.50_x_11.00_Inches)");
+
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = btr.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+ if (numSheet == 1)
+ {
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+ // We'll be plotting a single document // Let's plot to file
+ ed.WriteMessage(doc.Name);
+ pe.BeginDocument(pi, doc.Name, null, 1, true, "c:\\test-multi-sheet.pdf");
+ }
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + doc.Name.Substring(doc.Name.LastIndexOf("\\") + 1) +
+ " - sheet " + numSheet.ToString() +
+ " of " + layoutsToPlot.Count.ToString();
+ ed.WriteMessage(ppd.StatusMsgString);
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+
+ pe.BeginPage(ppi, pi, (numSheet == layoutsToPlot.Count), null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ numSheet++;
+ }
+
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+ ppd.OnEndPlot();
+ pe.EndPlot(null);
+
+ }
+ }
+ }
+ else
+ {
+ ed.WriteMessage("\nAnother plot is in progress.");
+ }
+ }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/DataManagement.cs b/OriginAutoCAD_chint/hello/DataManagement.cs
new file mode 100644
index 0000000..7c67483
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/DataManagement.cs
@@ -0,0 +1,379 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+
+
+
+using System;
+using System.Collections;
+
+using Teamcenter.ClientX;
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+
+// Include the Data Management Service Interface
+using Teamcenter.Services.Strong.Core;
+
+// Input and output structures for the service operations
+// Note: the different namespace from the service interface
+using Teamcenter.Services.Strong.Core._2006_03.DataManagement;
+using Teamcenter.Services.Strong.Core._2007_01.DataManagement;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+
+namespace Teamcenter.Hello
+{
+
+/**
+ * Perform different operations in the DataManamentService
+ *
+ */
+public class DataManagement
+{
+
+ /**
+ * Perform a sequence of data management operations: Create Items, Revise
+ * the Items, and Delete the Items
+ *
+ */
+ public void createReviseAndDelete()
+ {
+ try
+ {
+ int numberOfItems = 3;
+
+ // Reserve Item IDs and Create Items with those IDs
+ ItemIdsAndInitialRevisionIds[] itemIds = generateItemIds(numberOfItems, "Item");
+ CreateItemsOutput[] newItems = createItems(itemIds, "Item");
+
+ // Copy the Item and ItemRevision to separate arrays for further
+ // processing
+ Item[] items = new Item[newItems.Length];
+ ItemRevision[] itemRevs = new ItemRevision[newItems.Length];
+ for (int i = 0; i < items.Length; i++)
+ {
+ items[i] = newItems[i].Item;
+ itemRevs[i] = newItems[i].ItemRev;
+ }
+
+ // Reserve revision IDs and revise the Items
+ Hashtable allRevIds = generateRevisionIds(items);
+ reviseItems(allRevIds, itemRevs);
+
+ // Delete all objects created
+ deleteItems(items);
+ }
+ catch (ServiceException e)
+ {
+ System.Console.Out.WriteLine(e.Message );
+ }
+
+ }
+
+ /**
+ * Reserve a number Item and Revision Ids
+ *
+ * @param numberOfIds Number of IDs to generate
+ * @param type Type of IDs to generate
+ *
+ * @return An array of Item and Revision IDs. The size of the array is equal
+ * to the input numberOfIds
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public ItemIdsAndInitialRevisionIds[] generateItemIds(int numberOfIds, String type)
+ // throws ServiceException
+ {
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ GenerateItemIdsAndInitialRevisionIdsProperties[] properties = new GenerateItemIdsAndInitialRevisionIdsProperties[1];
+ GenerateItemIdsAndInitialRevisionIdsProperties property = new GenerateItemIdsAndInitialRevisionIdsProperties();
+
+ property.Count = numberOfIds;
+ property.ItemType = type;
+ property.Item = null; // Not used
+ properties[0] = property;
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ GenerateItemIdsAndInitialRevisionIdsResponse response = dmService.GenerateItemIdsAndInitialRevisionIds(properties);
+
+
+
+ // The AppXPartialErrorListener is logging the partial errors returned
+ // In this simple example if any partial errors occur we will throw a
+ // ServiceException
+ if (response.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException( "DataManagementService.generateItemIdsAndInitialRevisionIds returned a partial error.");
+
+ // The return is a map of ItemIdsAndInitialRevisionIds keyed on the
+ // 0-based index of requested IDs. Since we only asked for IDs for one
+ // data type, the map key is '0'
+ Int32 bIkey = 0;
+ Hashtable allNewIds = response.OutputItemIdsAndInitialRevisionIds;
+ ItemIdsAndInitialRevisionIds[] myNewIds = (ItemIdsAndInitialRevisionIds[]) allNewIds[bIkey];
+
+ return myNewIds;
+ }
+
+ /**
+ * Create Items
+ *
+ * @param itemIds Array of Item and Revision IDs
+ * @param itemType Type of item to create
+ *
+ * @return Set of Items and ItemRevisions
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public CreateItemsOutput[] createItems(ItemIdsAndInitialRevisionIds[] itemIds, String itemType)
+ // throws ServiceException
+ {
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ // Populate form type
+ GetItemCreationRelatedInfoResponse relatedResponse = dmService.GetItemCreationRelatedInfo(itemType, null);
+ String[] formTypes = new String[0];
+ if ( relatedResponse.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException( "DataManagementService.getItemCretionRelatedInfo returned a partial error.");
+
+ formTypes = new String[relatedResponse.FormAttrs.Length];
+ for ( int i = 0; i < relatedResponse.FormAttrs.Length; i++ )
+ {
+ FormAttributesInfo attrInfo = relatedResponse.FormAttrs[i];
+ formTypes[i] = attrInfo.FormType;
+ }
+
+ ItemProperties[] itemProps = new ItemProperties[itemIds.Length];
+ for (int i = 0; i < itemIds.Length; i++)
+ {
+ // Create form in cache for form property population
+ ModelObject[] forms = createForms(itemIds[i].NewItemId, formTypes[0],
+ itemIds[i].NewRevId, formTypes[1],
+ null, false);
+ ItemProperties itemProperty = new ItemProperties();
+
+ itemProperty.ClientId = "AppX-Test";
+ itemProperty.ItemId = itemIds[i].NewItemId;
+ itemProperty.RevId = itemIds[i].NewRevId;
+ itemProperty.Name = "AppX-Test";
+ itemProperty.Type = itemType;
+ itemProperty.Description = "Test Item for the SOA AppX sample application.";
+ itemProperty.Uom = "";
+
+ // Retrieve one of form attribute value from Item master form.
+ ServiceData serviceData = dmService.GetProperties(forms, new String[]{"project_id"});
+ if ( serviceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException( "DataManagementService.getProperties returned a partial error.");
+ Property property = null;
+ try
+ {
+ property= forms[0].GetProperty("project_id");
+ }
+ catch ( NotLoadedException /*ex*/){}
+
+
+ // Only if value is null, we set new value
+ if ( property == null || property.StringValue == null || property.StringValue.Length == 0)
+ {
+ itemProperty.ExtendedAttributes = new ExtendedAttributes[1];
+ ExtendedAttributes theExtendedAttr = new ExtendedAttributes();
+ theExtendedAttr.Attributes = new Hashtable();
+ theExtendedAttr.ObjectType = formTypes[0];
+ theExtendedAttr.Attributes["project_id"] = "project_id";
+ itemProperty.ExtendedAttributes[0] = theExtendedAttr;
+ }
+ itemProps[i] = itemProperty;
+ }
+
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ CreateItemsResponse response = dmService.CreateItems(itemProps, null, "");
+ // before control is returned the ChangedHandler will be called with
+ // newly created Item and ItemRevisions
+
+
+
+ // The AppXPartialErrorListener is logging the partial errors returned
+ // In this simple example if any partial errors occur we will throw a
+ // ServiceException
+ if (response.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException( "DataManagementService.createItems returned a partial error.");
+
+ return response.Output;
+ }
+
+ /**
+ * Reserve Revision IDs
+ *
+ * @param items Array of Items to reserve Ids for
+ *
+ * @return Map of RevisionIds
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public Hashtable generateRevisionIds(Item[] items) //throws ServiceException
+ {
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ GenerateRevisionIdsResponse response = null;
+ GenerateRevisionIdsProperties[] input = null;
+ input = new GenerateRevisionIdsProperties[items.Length];
+ for (int i = 0; i < items.Length; i++)
+ {
+ GenerateRevisionIdsProperties property = new GenerateRevisionIdsProperties();
+ property.Item = items[i];
+ property.ItemType = "";
+ input[i] = property;
+ }
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ response = dmService.GenerateRevisionIds(input);
+
+ // The AppXPartialErrorListener is logging the partial errors returned
+ // In this simple example if any partial errors occur we will throw a
+ // ServiceException
+ if (response.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException( "DataManagementService.generateRevisionIds returned a partial error.");
+
+ return response.OutputRevisionIds;
+ }
+
+ /**
+ * Revise Items
+ *
+ * @param revisionIds Map of Revsion IDs
+ * @param itemRevs Array of ItemRevisons
+ *
+ * @return Map of Old ItemRevsion(key) to new ItemRevision(value)
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public Hashtable reviseItems(Hashtable revisionIds, ItemRevision[] itemRevs) //throws ServiceException
+ {
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ Hashtable revs = new Hashtable();
+ for (int i = 0; i < itemRevs.Length; i++)
+ {
+
+
+ RevisionIds rev = (RevisionIds) revisionIds[i];
+
+ ReviseProperties revProps = new ReviseProperties();
+
+ revProps.RevId = rev.NewRevId;
+ revProps.Name = "testRevise";
+ revProps.Description = "describe testRevise";
+
+ Hashtable attrs = new Hashtable();
+ attrs["project_id"] = "project_id_val";
+ revProps.ExtendedAttributes = attrs;
+
+ revs[itemRevs[i]]= revProps;
+ }
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ ReviseResponse revised = dmService.Revise(revs);
+ // before control is returned the ChangedHandler will be called with
+ // newly created Item and ItemRevisions
+
+
+
+ // The AppXPartialErrorListener is logging the partial errors returned
+ // In this simple example if any partial errors occur we will throw a
+ // ServiceException
+ if (revised.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException("DataManagementService.revise returned a partial error.");
+
+ return revised.OldItemRevToNewItemRev;
+
+ }
+
+ /**
+ * Delete the Items
+ *
+ * @param items Array of Items to delete
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public void deleteItems(Item[] items) //throws ServiceException
+ {
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ ServiceData serviceData = dmService.DeleteObjects(items);
+
+ // The AppXPartialErrorListener is logging the partial errors returned
+ // In this simple example if any partial errors occur we will throw a
+ // ServiceException
+ if (serviceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException("DataManagementService.deleteObjects returned a partial error.");
+
+ }
+
+ /**
+ * Create ItemMasterForm and ItemRevisionMasterForm
+ *
+ * @param IMFormName Name of ItemMasterForm
+ * @param IMFormType Type of ItemMasterForm
+ * @param IRMFormName Name of ItemRevisionMasterForm
+ * @param IRMFormType Type of ItemRevisionMasterForm
+ * @param parent The container object that two
+ * newly-created forms will be added into.
+ * @return ModelObject[] Array of forms
+ *
+ * @throws ServiceException If any partial errors are returned
+ */
+ public ModelObject[] createForms ( String IMFormName, String IMFormType,
+ String IRMFormName, String IRMFormType,
+ ModelObject parent, bool saveDB ) //throws ServiceException
+ {
+ //Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ FormInfo[] inputs = new FormInfo[2];
+ inputs[0] = new FormInfo();
+ inputs[0].ClientId = "1";
+ inputs[0].Description="";
+ inputs[0].Name = IMFormName;
+ inputs[0].FormType=IMFormType;
+ inputs[0].SaveDB = saveDB;
+ inputs[0].ParentObject = parent ;
+ inputs[1] = new FormInfo();
+ inputs[1].ClientId = "2";
+ inputs[1].Description="";
+ inputs[1].Name = IRMFormName;
+ inputs[1].FormType=IRMFormType;
+ inputs[1].SaveDB = saveDB;
+ inputs[1].ParentObject = parent;
+ CreateOrUpdateFormsResponse response = dmService.CreateOrUpdateForms(inputs);
+ if ( response.ServiceData.sizeOfPartialErrors() > 0)
+ throw new ServiceException("DataManagementService.createForms returned a partial error.");
+ ModelObject[] forms = new ModelObject [inputs.Length];
+ for (int i=0; i@
+//
+//==================================================
+
+
+using System;
+using System.Collections;
+using Teamcenter.ClientX;
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.Runtime;
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+using HelloTeamcenter.hello;
+using HelloTeamcenter.form;
+using System.Windows.Forms;
+using System.IO;
+using System.Collections.Generic;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Services.Strong.Core._2006_03.Reservation;
+using Teamcenter.Services.Strong.Core._2006_03.FileManagement;
+using Teamcenter.Services.Strong.Core._2006_03.DataManagement;
+using Teamcenter.Services.Strong.Core._2007_01.DataManagement;
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+using Teamcenter.Soa.Client;
+//using Teamcenter.FMS.FCCProxy.ClientCache;
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Soa.Exceptions;
+using System.Text;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile;
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
+using ReleaseStatus = Teamcenter.Soa.Client.Model.Strong.ReleaseStatus;
+using Form = Teamcenter.Soa.Client.Model.Strong.Form;
+using Dataset = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+//using Autodesk.AutoCAD.Interop;
+using KCad;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using WinForms = System.Windows.Forms;
+using UploadFiles;
+using System.Threading.Tasks;
+
+[assembly: ExtensionApplication(typeof(Teamcenter.Hello.Hello))]
+[assembly: CommandClass(typeof(Teamcenter.Hello.Hello))]
+
+namespace Teamcenter.Hello
+{
+
+ public class Hello : Autodesk.AutoCAD.Runtime.IExtensionApplication
+ {
+ public static User loginuser;
+ Login loginfrom;
+ OpenFromTC openfrom;
+ Search searchfrom;
+ SaveToTC savefrom;
+ static Autodesk.AutoCAD.EditorInput.Editor ed;
+ static Autodesk.AutoCAD.ApplicationServices.Document appodc;
+ static DocumentCollection acdocmgr;
+ static Teamcenter.ClientX.Session session;
+ static ItemMsgBean itemBean;
+ public const string CAD_TYPE = "ZT2Autocad";//ZC2_CAD ZT2Autocad
+ public const string CAD_REF = "ZT2Autocad";//ZC2_dwg ZT2Autocad
+ public const string TITLE_ITEM_TYPE = "ZT2_Design3D"; //Item ZT2_Design3D
+ //
+ bool islogin = false;
+ bool hasRight = true;
+ string serveraddress;
+ public static string username;
+ string password;
+ static string usergroup;
+ string userrole;
+
+ //用于记录Item类型.xml文件中对应的Item类型
+ static OriginItemType originitemtype;
+
+ public static string xmlpath = "";
+
+ public static Dictionary pathType;
+ public static List puidList;
+
+ //用户记录图纸( 非静态对象,一张图对应一个pdfDic -.- )
+ //Dictionary pdfDic = new Dictionary();
+ //const int PDF_CONVERTED = 1;
+ //const int PDF_NOT_ALERT = -1;
+ //const int PDF_ALERT = 0;
+ //private int PDF_SYNC_STATUS = PDF_ALERT;
+ public static string getGroup()
+ {
+ return usergroup;
+ }
+
+ public void getFilePuid() {
+ if (puidList == null)
+ {
+ puidList = new List();
+
+ }
+ Document appodcTemp = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ appodcTemp.ToString();
+ ed = appodcTemp.Editor;
+ DateTime now = DateTime.Now;
+ string tempPath = System.Environment.GetEnvironmentVariable("TEMP");
+ if(tempPath!=null){
+ string path = tempPath + "\\" + now.Year + "-" + now.Month + "-" + now.Day;
+ if (Directory.Exists(path))
+ {
+ ed.WriteMessage("存在" + path);
+ DirectoryInfo folderInfo = new DirectoryInfo(path);
+ FileInfo[] fileInfos = folderInfo.GetFiles();
+ if (fileInfos != null)
+ {
+ ed.WriteMessage("文件个数=" + fileInfos.Length);
+ foreach (FileInfo fileInfo in fileInfos)
+ {
+ StreamReader sr = new StreamReader(fileInfo.FullName,Encoding.GetEncoding("UTF-8"), true);
+
+ string dwgType = sr.ReadLine();
+ if (!puidList.Contains(dwgType))
+ {
+ puidList.Add(dwgType);
+ ed.WriteMessage(puidList.Count+"");
+ ed.WriteMessage("不包含 " + dwgType);
+ }
+ else {
+ ed.WriteMessage(puidList.Count + "");
+ ed.WriteMessage("包含 " + dwgType);
+ }
+ sr.Close();
+ File.Delete(fileInfo.FullName);
+
+ }
+ }
+ else {
+ ed.WriteMessage("文件个数NULL");
+ }
+
+ }
+ else {
+ ed.WriteMessage("存在" + path);
+ }
+ }
+ }
+
+
+ [CommandMethod("K_UPDATE_BOM_FROM_CAD")]
+ public void KUpdateBomFromCAD() {
+ try {
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (!hadlogin) {
+ return;
+ }
+ KBomUpdater.UpdateBomFromCAD(true, true);
+ MessageBox.Show("BOM同步执行结束");
+ }
+ catch (SystemException ex1) {
+ MessageBox.Show(string.Format("更新BOM出现异常\n{0}", ex1.StackTrace));
+ }
+ }
+
+ public static void WriteHistoryLog(string msg) {
+ //FileStream fs = new FileStream(System.Environment.GetEnvironmentVariable("TEMP") + "\\CAD历史数据临时文件\\log.txt", FileMode.Append);
+ ////获得字节数组
+ //byte[] data = System.Text.Encoding.Default.GetBytes(msg);
+ ////开始写入
+ //fs.Write(data, 0, data.Length);
+ ////清空缓冲区、关闭流
+ //fs.Flush();
+ //fs.Close();
+ FileStream fs = null;
+ try {
+ string time = DateTime.Now.ToString("yyyyMMdd");
+ string now = DateTime.Now.ToString("HH:mm:ss");
+ fs = new FileStream(System.Environment.GetEnvironmentVariable("TEMP") + "\\CAD历史数据临时文件\\log.txt", FileMode.Append);
+ //获得字节数组
+ byte[] data = System.Text.Encoding.Default.GetBytes("[" + now + "]" + msg + "\r\n");
+ //开始写入
+ fs.Write(data, 0, data.Length);
+ }
+ catch (System.Exception e) {
+
+ }
+ finally {
+ if (fs != null) {
+ //清空缓冲区、关闭流
+ fs.Flush();
+ fs.Close();
+ }
+ }
+
+ }
+
+ //kk TODO 0810 cad历史数据导入相关
+ [CommandMethod("HISTORY_IMPORT")]
+ public void ImportHistoryDataCommand() {
+ FileInfo logFile = new FileInfo(System.Environment.GetEnvironmentVariable("TEMP") + "\\CAD历史数据临时文件\\log.txt");
+ if (logFile.Exists) {
+ logFile.Delete();
+ }
+ string path=System.Environment.GetEnvironmentVariable("TEMP").ToString() + "\\CAD历史数据临时文件";
+ DirectoryInfo tempFolder = new DirectoryInfo(path);
+ if (!tempFolder.Exists) {
+ MessageBox.Show("没有找到历史数据文件夹:\n"+path);
+ return;
+ }
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (!hadlogin) {
+ return;
+ }
+ foreach (FileInfo file in tempFolder.GetFiles()) {
+ ImportHistoryData(file);
+ }
+ }
+
+ //kk TODO 0810 cad历史数据导入相关
+ //[CommandMethod("K_TEST")]
+ public void K_TEST() {
+ try {
+ FileManagementUtility fm = new FileManagementUtility(Session.getConnection());
+ MessageBox.Show("OK");
+ }
+ catch (System.Exception ex) {
+ MessageBox.Show(ex.Message);
+ }
+ }
+
+ private void ImportHistoryData(FileInfo file) {
+ WriteHistoryLog("===================================\r\n开始导入:"+file.Name+"\r\n");
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.Open(file.FullName, false);
+ //上传检验记录
+ doc.SendStringToExecute("HISTORY_IMPORT_QA\r", false, false, false);
+ //转pdf
+ doc.SendStringToExecute("HISTORY_IMPORT_PDF\r", false, false, false);
+ //关闭
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ doc.SendStringToExecute("CLOSE\r", true, false, false);
+ }
+
+ [CommandMethod("HISTORY_IMPORT_QA")]
+ public void ImportHistoryQA() {
+ WriteHistoryLog("----------开始导入检验数据---------\r\n");
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ KHQAtoDB pdfdwg = new KHQAtoDB(doc);
+ pdfdwg.writeHistoryData(loginuser);
+ }
+
+ [CommandMethod("HISTORY_IMPORT_PDF")]
+ public void ImportHistoryPDF() {
+ WriteHistoryLog("------------开始转换PDF------------\r\n");
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ //AcAp.DocumentManager.MdiActiveDocument
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly) {
+ WriteHistoryLog("该文件为只读,不能生成PDF!\r\n");
+ return;
+ }
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+
+ OriginReadXml readxml = new OriginReadXml();
+ ArrayList btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++) {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+
+
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ WriteHistoryLog("系统没有找到\"图号\"所对应的图纸信息,系统中断\r\n");
+ ed1.WriteMessage("系统没有找到\"图号\"所对应的图纸信息,系统中断\n");
+ return;
+ }
+ Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ if (item != null) {
+ ed1.WriteMessage("item_id=" + btlinfo.Btldatatable[key].ToString() + "\n");
+ ModelObject[] objects1 = { item };
+ string[] attributes1 = { "revision_list", "is_modifiable" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ ModelObject[] revlist = item.Revision_list;
+ dmService.RefreshObjects(revlist);
+ ItemRevision itemRev = null;
+ string rev_id = "";
+ for (int k = 0; k < revlist.Length; k++) {
+ itemRev = revlist[k] as ItemRevision;
+ ModelObject[] objects2 = { itemRev };
+ string[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+
+ //判断图纸上是否存在配置了版本信息,如果配置了版本信息,则处理指定的版本,否则,处理最新版本
+ if (btlinfo.Btltctable.ContainsValue("item_revision_id")) {
+ if (itemRev.Item_revision_id == btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id")].ToString()) {
+ break;
+ }
+ }
+ }
+ if (itemRev == null) {
+ WriteHistoryLog("Item没有对应版本\r\n");
+ return;
+ }
+
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument);
+ string tempPDFPath = pdfdwg.HistoryMultiSheetPlot();
+ if (File.Exists(tempPDFPath)) {
+ WriteHistoryLog("导出文件路径:" + tempPDFPath + "。\r\n");
+ ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ ed1.WriteMessage("DWG文件路径:" + pdfdwg.PrintDoc.Name + "。\n");
+ string datasetName;
+ int index = pdfdwg.PrintDoc.Name.LastIndexOf("\\");
+ if (index >= 0) {
+ datasetName = pdfdwg.PrintDoc.Name.Substring(index + 1);
+ }
+ else {
+ datasetName = pdfdwg.PrintDoc.Name;
+ }
+ ed1.WriteMessage("DWG文件名称:" + datasetName + "。\n");
+ if (tempPDFPath.Length > 0) {
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ saveHistoryPDFToTC(itemRev, tempPDFPath, datasetName, "PDF", "PDF_Reference");
+ //删除临时文件
+ try {
+ if (File.Exists(tempPDFPath)) {
+ File.Delete(tempPDFPath);
+ ed1.WriteMessage("临时文件删除成功\n");
+ WriteHistoryLog("临时文件删除成功\r\n");
+ }
+ }
+ catch (System.Exception ex) {
+ ed1.WriteMessage("临时文件删除失败\n");
+ WriteHistoryLog("临时文件删除失败\r\n");
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+ }
+ else {
+ WriteHistoryLog("导出文件路径不存在\r\n");
+ ed1.WriteMessage("PDF文件路径不存在\n");
+ }
+ }
+ else {
+ if (btlinfo.Btldatatable[key].ToString() != null && btlinfo.Btldatatable[key].ToString().Length > 0) {
+ WriteHistoryLog("没有找到对应标题栏Item:" + btlinfo.Btldatatable[key].ToString() + "\r\n");
+ ed1.WriteMessage("没有找到对应标题栏Item:" + btlinfo.Btldatatable[key].ToString() + "\n");
+ }
+ }
+ }
+ }
+
+ public void saveHistoryPDFToTC(ItemRevision itemRev, string pdfPath, string pdfName, string pdfDatasetType, string pdfDatasetReferenceName) {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ //CAD控制台
+ Editor cadEditor = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ //PDF数据集
+ Dataset pdfDataset = null;
+ Dataset dwgDataset = null;
+ string filename = null;
+ bool findDateset = false;
+ bool findDwgDataset = false;
+ bool neworupdate = false;
+ //查找dwg数据集
+ cadEditor.WriteMessage("开始查找到DWG数据集\n");
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter2.RelationName = "IMAN_specification";
+ string[] typeVec2 = new string[1];
+ //数据集类型
+ typeVec2[0] = CAD_TYPE;//"PDF";//datasetinfo.Datatype;
+ myFilter2.ObjectTypeNames = typeVec2;
+ myPref2.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec2 = { myFilter2 };
+ myPref2.Info = myFilterVec2;
+ ModelObject[] primaryObjects2 = { itemRev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp2 = dmService.ExpandGRMRelationsForPrimary(primaryObjects2, myPref2);
+
+ if (myResp2.Output.Length > 0) {
+ for (int k = 0; k < myResp2.Output.Length; k++) {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput2 = myResp2.Output[k];
+ for (int l = 0; l < grmOutput2.OtherSideObjData.Length; l++) {
+ ExpandGRMRelationsData otherSideData = grmOutput2.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0) {
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++) {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ ModelObject[] tObj = { tempDataset };
+ string[] tAttr = { "ref_list" };
+ dmService.RefreshObjects(tObj);
+ dmService.GetProperties(tObj, tAttr);
+ ModelObject[] refs = tempDataset.Ref_list;
+ if (refs.Length == 0) {
+ continue;
+ }
+ for (int w = 0; w < refs.Length; w++) {
+ ImanFile file = refs[w] as ImanFile;
+ ModelObject[] tObj2 = { file };
+ string[] tAttr2 = { "Original_file_name" };
+ dmService.RefreshObjects(tObj2);
+ dmService.GetProperties(tObj2, tAttr2);
+ string ds_name = file.Original_file_name;
+ cadEditor.WriteMessage("文件名称:" + ds_name + "\n");
+ if (ds_name == pdfName) {
+ findDwgDataset = true;
+ dwgDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ cadEditor.WriteMessage("找到DWG数据集!\n");
+ pdfName = tempDataset.Object_name;
+ if (pdfName.EndsWith(".dwg")) {
+ pdfName = pdfName.Substring(0, pdfName.Length - 4) + ".pdf";
+ }
+ else if (pdfName.EndsWith(".DWG")) {
+ pdfName = pdfName.Substring(0, pdfName.Length - 4) + ".PDF";
+ }
+ break;
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ }
+
+ if (!findDwgDataset) {
+ WriteHistoryLog("没有找到CAD数据集:" + pdfName + "!\r\n");
+ cadEditor.WriteMessage("没有找到CAD数据集:" + pdfName + "!");
+ return;
+ }
+ cadEditor.WriteMessage("=======上传PDF数据集=========\n");
+
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = new string[1];
+ //数据集类型
+ typeVec[0] = pdfDatasetType;//"PDF";//datasetinfo.Datatype;
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec = { myFilter };
+ myPref.Info = myFilterVec;
+ ModelObject[] primaryObjects = { itemRev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref);
+
+ if (myResp.Output.Length > 0) {
+ for (int k = 0; k < myResp.Output.Length; k++) {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput = myResp.Output[k];
+ for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++) {
+ ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0) {
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++) {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+
+ string ds_name = tempDataset.Object_string;
+ if (ds_name == pdfName) {
+ findDateset = true;
+ pdfDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ cadEditor.WriteMessage("找到PDF数据集!\n");
+ break;
+ }
+ }
+ if (findDateset) {
+ break;
+ }
+ }
+ }
+ if (findDateset) {
+ break;
+ }
+ }
+ }
+
+
+
+ //新建或更新数据集
+ if (findDateset) {
+ bool ischeckout = false;
+ try {
+ ModelObject[] objects2 = { pdfDataset };
+ string[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ if (!pdfDataset.Is_modifiable) {
+ WriteHistoryLog("您打开的PDF图纸状态为只读,将无法保存到到系统!\r\n");
+ cadEditor.WriteMessage("您打开的PDF图纸状态为只读,将无法保存到到系统!");
+ return;
+ }
+ User checkuserinfo = pdfDataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != loginuser.Uid) {
+ WriteHistoryLog("该PDF图纸已被其他用户签出,无法保存到系统!\r\n");
+ cadEditor.WriteMessage("该PDF图纸已被其他用户签出,无法保存到系统!");
+ return;
+ }
+ }
+ if (pdfDataset.Checked_out == "Y")
+ ischeckout = true;
+ }
+ catch (NotLoadedException ex) {
+ cadEditor.WriteMessage(ex.Message);
+ }
+
+ Reservation res = ReservationService.getService(Session.getConnection());
+
+ ModelObject[] dsFileVec = null;
+ try {
+ ModelObject[] objects2 = { pdfDataset };
+ string[] attributes2 = { "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ dsFileVec = pdfDataset.Ref_list;
+ }
+ catch (NotLoadedException ex) {
+ cadEditor.WriteMessage(ex.Message);
+ }
+ //ImanFile dsfile = dsFileVec[0] as ImanFile;
+
+ // ModelObject[] objects3 = { dsfile };
+ //String[] attributes3 = { "relative_directory_path", "original_file_name" };
+ //dmService.RefreshObjects(objects3);
+ //dmService.GetProperties(objects3, attributes3);
+ // filename = dsfile.Original_file_name;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+ //DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //cadEditor.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+
+ //Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ //acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+ //string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = pdfPath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ //数据集命名引用名称
+ fileInfo.NamedReferencedName = pdfDatasetReferenceName;//"PDF";//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = pdfDataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = pdfDataset;
+ //写入描述
+ /*if (findDwgDataset) {
+ string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
+ cadEditor.WriteMessage("当前时间:" + now + "\n");
+ ModelObject[] objs = new ModelObject[2];
+ objs[0] = pdfDataset;
+ objs[1] = dwgDataset;
+ Hashtable attrs = new Hashtable();
+ attrs.Add("kh3_timestamp",now);
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objs, attrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ cadEditor.WriteMessage("更新kh3_timestamp属性成功\n");
+ }
+ else {
+ cadEditor.WriteMessage("更新kh3_timestamp属性错误" + itemupdateresponse.sizeOfPartialErrors());
+ for (int er = 0; er < itemupdateresponse.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n" + er + ":\n");
+ ErrorValue[] errValues = itemupdateresponse.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message + "\n");
+ }
+ }
+ MessageBox.Show("更新kh3_timestamp属性失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ }*/
+
+ if (ischeckout)
+ res.Checkin(datasets);
+ dmService.RefreshObjects(datasets);
+ //datasets[0] = inputs[0].Dataset;
+ //dmService.DeleteObjects(datasets);
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ inputs[0] = inputData;
+ FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+
+ ServiceData response = fMSFileManagement.PutFiles(inputs);
+ if (response.sizeOfPartialErrors() > 0) {
+ cadEditor.WriteMessage("FileManagementService上传数据集错误:" + response.sizeOfPartialErrors());
+ cadEditor.WriteMessage("上传PDF失败!");
+ WriteHistoryLog("上传PDF失败!\r\n");
+ return;
+ }
+ dmService.RefreshObjects(datasets);
+ WriteHistoryLog("上传PDF成功!");
+ //MessageBox.Show("上传PDF成功!");
+ //uploadDwgFileAndClose(AcAp.DocumentManager.MdiActiveDocument.Name, dwgDataset);
+ //SaveAndClose();
+ //this.PDF_SYNC_STATUS = PDF_CONVERTED;
+ }
+ else {
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = pdfDatasetType;//datasetinfo.Datatype;
+ oneDatasetProp.Name = pdfName;//datasetinfo.Ds_name;
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ if (dsResp.Output.Length == 0) {
+ cadEditor.WriteMessage("创建数据集失败!");
+ WriteHistoryLog("创建数据集失败!");
+ return;
+ }
+ Dataset createdataset = dsResp.Output[0].Dataset;
+
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ //DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //inacdocmgr.MdiActiveDocument.Database.SaveAs(inacdocmgr.MdiActiveDocument.Name, DwgVersion.Current);
+ //inacdocmgr.MdiActiveDocument.SendStringToExecute("QSAVE", true, false, true);
+ //cadEditor.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+ //Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ //acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+ //string mdiactivefile = acdoc.Name;
+
+ fileInfo.FileName = pdfPath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = pdfDatasetReferenceName;//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = createdataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ inputs[0] = inputData;
+ FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ ServiceData response = fMSFileManagement.PutFiles(inputs);
+ if (response.sizeOfPartialErrors() > 0) {
+ cadEditor.WriteMessage("FileManagementService上传数据集错误" + response.sizeOfPartialErrors());
+ cadEditor.WriteMessage("上传PDF失败!");
+ WriteHistoryLog("上传PDF失败!");
+ return;
+ }
+ cadEditor.WriteMessage("上传数据集成功\n");
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = createdataset;
+ pdfDataset = createdataset;
+ //写入描述
+ /*
+ if (findDwgDataset) {
+ string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
+ cadEditor.WriteMessage("当前时间:" + now + "\n");
+ ModelObject[] objs = new ModelObject[2];
+ objs[0] = pdfDataset;
+ objs[1] = dwgDataset;
+ Hashtable attrs = new Hashtable();
+ attrs.Add("kh3_timestamp", now);
+ dmService.RefreshObjects(objs);
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objs, attrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ cadEditor.WriteMessage("更新kh3_timestamp属性成功\n");
+ }
+ else {
+ cadEditor.WriteMessage("更新kh3_timestamp属性错误:" + itemupdateresponse.sizeOfPartialErrors());
+ for (int er = 0; er < itemupdateresponse.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n"+er+":\n");
+ ErrorValue[] errValues=itemupdateresponse.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message+"\n");
+ }
+ }
+ MessageBox.Show("更新kh3_timestamp属性失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ dmService.RefreshObjects(objs);
+
+ }*/
+ //添加cad和pdf数据集
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "";
+ one_rela.PrimaryObject = itemRev;
+ one_rela.SecondaryObject = pdfDataset;
+ one_rela.RelationType = "IMAN_specification";
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+ //kk 0810 开旁路
+ //S8.Services.Strong.Bypass.S8SoaBypassServiceService byPassService = S8.Services.Strong.Bypass.S8SoaBypassServiceService.getService(Session.getConnection());
+ //if (!byPassService.AskBypass()) {
+ // byPassService.SetBypass(true);
+ //}
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ //if (byPassService.AskBypass()) {
+ // byPassService.SetBypass(false);
+
+ //}
+ //reResp.ServiceData.sizeOfPartialErrors()
+ ServiceData reRespSD = reResp.ServiceData;
+ if (reRespSD.sizeOfPartialErrors() <= 0) {
+ cadEditor.WriteMessage("数据集关系创建成功\n");
+ WriteHistoryLog("上传PDF成功!\r\n");
+ //MessageBox.Show("上传PDF成功!");
+ //uploadDwgFileAndClose(AcAp.DocumentManager.MdiActiveDocument.Name, dwgDataset);
+ //SaveAndClose();
+ //this.PDF_SYNC_STATUS = PDF_CONVERTED;
+ }
+ else {
+ cadEditor.WriteMessage("数据集关系创建错误:" + reRespSD.sizeOfPartialErrors());
+ for (int er = 0; er < reRespSD.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n" + er + ":\n");
+ ErrorValue[] errValues = reRespSD.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message + "\n");
+ }
+ }
+ WriteHistoryLog("数据集关系创建失败,请检查CAD登录用户是否具有对象访问权限!\r\n");
+ cadEditor.WriteMessage("数据集关系创建失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.RefreshObjects(datasets);
+ }
+ //kk 0730 记录数据集对象,用于写入对应文件的最后修改时间
+ //if (!this.pdfDic.ContainsKey(AcAp.DocumentManager.MdiActiveDocument.Name)) {
+ // this.pdfDic.Add(AcAp.DocumentManager.MdiActiveDocument.Name, pdfDataset);
+ //}
+ //else {
+ // this.pdfDic[AcAp.DocumentManager.MdiActiveDocument.Name] = pdfDataset;
+ //}
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("UPDATE_TIMESTAMP\r");
+ }
+
+
+
+
+ public void Initialize()
+ {
+ ////Test Events
+ //Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ //try {
+
+ // Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.DocumentCreated += new DocumentCollectionEventHandler(DocumentManager_DocumentCreated);
+
+ // foreach (Document doc in Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager) {
+ // doc.Database.BeginSave += new DatabaseIOEventHandler(Database_BeginSave);
+ // LogHelper.WriteLog("DocumentManager Doc BeginSave");
+ // }
+
+ // LogHelper.WriteLog("DocumentManager_DocumentCreated");
+ // KHConfigIntegration.CreateInstance();
+ //}
+ //catch {
+ // ed.WriteMessage("Error adding events");
+ //}
+
+ //AppContextMenu.AddContextMenu();
+ //AcAp.DocumentManager.MdiActiveDocument.CommandEnded += new CommandEventHandler(MdiActiveDocument_CommandEnded);
+ }
+
+ [CommandMethod("REG_CALLBACK")]
+ public void reg_callback() {
+ //AcAp.DocumentManager.MdiActiveDocument.CommandEnded += MdiActiveDocument_CommandEnded;
+ Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.BeginDocumentClose += new DocumentBeginCloseEventHandler(docBeginDocClose);
+ }
+
+ public void docBeginDocClose(object senderObj, DocumentBeginCloseEventArgs docBegClsEvtArgs) {
+ // Display a message box prompting to continue closing the document
+ DialogResult upresult = MessageBox.Show("从TC打开的文件请记得上传,确认关闭图纸?\n“" + Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Name+"”", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
+ if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ docBegClsEvtArgs.Veto();
+ }
+ }
+
+ //private void MdiActiveDocument_CommandEnded(object sender, CommandEventArgs e) {
+ // MessageBox.Show(e.GlobalCommandName);
+ // if (e.GlobalCommandName.ToUpper().Equals("CLOSE")) {
+ // if (TCFILEPATH != null) {
+ // }
+ // //MessageBox.Show("后处理?");
+ // //if (this.PDF_SYNC_STATUS == PDF_ALERT) {
+ // // DialogResult upresult = MessageBox.Show("如果未进行PDF更新,保存操作会导致图纸和PDF不一致。\n点击“是”不再对本图纸提示。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
+ // // if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ // // return;
+ // // }
+ // // this.PDF_SYNC_STATUS = PDF_NOT_ALERT;
+ // //}
+ // //else if (this.PDF_SYNC_STATUS == PDF_CONVERTED) {
+ // // DialogResult upresult = MessageBox.Show("检测到保存操作,是否对PDF图纸进行更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // // if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ // // return;
+ // // }
+ // // savePDFToTc();
+ // //}
+ // }
+ //}
+
+ public void Terminate()
+ {
+ }
+
+ [CommandMethod("SET_PATH_TYPE")]
+ public void setPathType() {
+ if (pathType == null)
+ {
+ pathType = new Dictionary();
+ }
+ string tempPath = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ string filePath = tempPath + "\\" + "dwg_type.txt";
+ if (File.Exists(filePath))
+ {
+ Document appodcTemp = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ appodcTemp.ToString();
+ ed = appodcTemp.Editor;
+ ed.WriteMessage("NAME ="+appodcTemp.Name );
+ StreamReader sr = new StreamReader(filePath, false);
+ string dwgType =sr.ReadLine();
+ ed.WriteMessage("Type Count ="+pathType.Count);
+ pathType.Add(appodcTemp.Name, dwgType);
+ ed.WriteMessage("Type Count =" + pathType.Count);
+ sr.Close();
+ File.Delete(filePath);
+ }
+ }
+
+ [CommandMethod("WX_LOGIN")]
+ public void newLogin() {
+ appodc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ acdocmgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ //acdocmgr.DocumentToBeDestroyed+=new DocumentCollectionEventHandler(acdocmgr_DocumentToBeDestroyed);
+
+ appodc.Database.SaveAs(appodc.Name, true, DwgVersion.Current, appodc.Database.SecurityParameters);
+ //appodc.Database.Save();
+ ed = appodc.Editor;
+ ed.WriteMessage("==========login==========\n");
+
+ xmlpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+ ed.WriteMessage("当前工作路径:" + xmlpath + "\n");
+ //origintool.checkxml(xmlpath);
+ loginfrom = new Login();
+ loginfrom.appodc = appodc;
+ loginfrom.button1.Click += new System.EventHandler(this.loginbutton1_Click);
+ loginfrom.button2.Click += new System.EventHandler(this.loginbutton2_Click);
+ loginfrom.Activate();
+ loginfrom.Show();
+ }
+
+ public static void DoMySave() {
+ Document dwg = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ Editor ed = dwg.Editor;
+
+ ed.WriteMessage(
+ "\nSearching for title block...");
+ ed.WriteMessage(
+ "\nRetrieving title block information from database...");
+ ed.WriteMessage("\nUpdate title block...");
+ ed.WriteMessage("\nSaving current drawing...");
+
+ //Finally, save the drawing
+ dwg.Database.SaveAs(dwg.Name, DwgVersion.Current);
+
+ ed.WriteMessage("\nDrawing is saved by custom saving process!\n");
+ }
+
+
+ [CommandMethod("PDF_PRINT")]
+ public void pdfTest() {
+ Document dwg = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ //string filePath = dwg.Name;
+ //FileStream fs = new FileStream(filePath + ".txt", FileMode.Append);
+ //byte[] data = System.Text.Encoding.Default.GetBytes("更新时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")+"\r\n");
+ //fs.Write(data, 0, data.Length);
+ //fs.Flush();
+ //fs.Close();
+
+ Editor ed1 = dwg.Editor;
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(dwg);
+ string tempPDFPath = pdfdwg.MultiSheetPlot(false);
+ if (File.Exists(tempPDFPath)) {
+ ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ }
+ else {
+ MessageBox.Show("导出PDF失败");
+ ed1.WriteMessage("导出文件路径不存在\n");
+ }
+ }
+
+ [CommandMethod("PDF_PRINT_MULTIPAGE")]
+ public void pdfTest2()
+ {
+ Document dwg = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ //string filePath = dwg.Name;
+ //FileStream fs = new FileStream(filePath + ".txt", FileMode.Append);
+ //byte[] data = System.Text.Encoding.Default.GetBytes("更新时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")+"\r\n");
+ //fs.Write(data, 0, data.Length);
+ //fs.Flush();
+ //fs.Close();
+
+ Editor ed1 = dwg.Editor;
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(dwg);
+ string tempPDFPath = pdfdwg.MultiSheetPlot(false);
+ if (File.Exists(tempPDFPath))
+ {
+ ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ }
+ else
+ {
+ MessageBox.Show("导出PDF失败");
+ ed1.WriteMessage("导出文件路径不存在\n");
+ }
+ }
+
+ //[CommandMethod("PDF_PRINT_ALL")]
+ // public void pdfPrintAll() {
+ // try {
+ // using (var fbd = new FolderBrowserDialog()) {
+ // DialogResult result = fbd.ShowDialog();
+ // List docs = new List();
+ // if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) {
+ // string[] files = Directory.GetFiles(fbd.SelectedPath);
+ // for (int i = 0; i < files.Length; i++) {
+ // string f = files[i];
+ // if (f.ToUpper().EndsWith(".DWG")) {
+ // Document doc = AcAp.DocumentManager.Open(f);
+ // //AcAp.DocumentManager.MdiActiveDocument = doc;
+ // //Document doc = AcAp.DocumentManager.MdiActiveDocument;
+ // doc.SendStringToExecute("PDF_PRINT\r", false, false, false);
+ // docs.Add(doc);
+ // // doc.CloseAndDiscard();
+ // // System.Windows.Forms.MessageBox.Show("转换完成:"+f, "Message");
+ // }
+
+ // }
+
+ // }
+ // foreach (Document doc in docs) {
+ // AcAp.DocumentManager.MdiActiveDocument = doc;
+ // System.Threading.Thread.Sleep(3000);
+ // }
+ // }
+
+
+ // }
+ // catch (System.Exception ex) {
+ // MessageBox.Show(ex.Message);
+ // }
+ // }
+
+ [CommandMethod("QATODB")]
+ public void KHQAtoDB() {
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (hadlogin) {
+ KHQAtoDB pdfdwg = new KHQAtoDB(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument);
+ pdfdwg.writeData(loginuser);
+ }
+ }
+
+
+
+ [CommandMethod("LOGIN")]
+ public void login()
+ {
+ //this.pdfDic.Clear();//登录时更改判定规则
+ appodc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ acdocmgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ //acdocmgr.DocumentToBeDestroyed+=new DocumentCollectionEventHandler(acdocmgr_DocumentToBeDestroyed);
+
+ //appodc.Database.SaveAs(appodc.Name, true, DwgVersion.Current, appodc.Database.SecurityParameters);
+ //appodc.Database.Save();
+ ed = appodc.Editor;
+ ed.WriteMessage("==========login==========\n");
+ //Tool tool = new Tool();
+ //BTLClass titleinfo = tool.getBTL("DFHM_BTL",appodc);
+ //ed.WriteMessage("标题栏信息:\n" + "图号:" + titleinfo.Item_id.ToString());
+
+ //读取用户配置文件
+ //OriginTool origintool = new OriginTool();
+ //xmlpath = System.Environment.CurrentDirectory;
+ xmlpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+ ed.WriteMessage("当前工作路径:" + xmlpath + "\n");
+ //origintool.checkxml(xmlpath);
+ loginfrom = new Login();
+ loginfrom.appodc = appodc;
+ loginfrom.button1.Click += new System.EventHandler(this.loginbutton1_Click);
+ loginfrom.button2.Click += new System.EventHandler(this.loginbutton2_Click);
+ loginfrom.Activate();
+ loginfrom.Show();
+
+ }
+ private void loginbutton1_Click(object sender, EventArgs e)
+ {
+ loginfrom.m_WebAddress = loginfrom.textBox1.Text.ToString();
+ loginfrom.username = loginfrom.textBox2.Text.ToString();
+ loginfrom.password = loginfrom.textBox3.Text.ToString();
+ loginfrom.usergroup = loginfrom.textBox4.Text.ToString();
+ loginfrom.userrole = loginfrom.textBox5.Text.ToString();
+ session = new Teamcenter.ClientX.Session(loginfrom.m_WebAddress);
+ loginuser = session.mylogin(loginfrom.username, loginfrom.password, loginfrom.usergroup, loginfrom.userrole);
+
+ if (loginuser != null)
+ {
+ serveraddress = loginfrom.m_WebAddress;
+ username = loginfrom.username;
+ password = loginfrom.password;
+ usergroup = loginfrom.usergroup;
+ userrole = loginfrom.userrole;
+ OriginTool.Loginuser = loginuser;
+ ed.WriteMessage("登录成功\n");
+ islogin = true;
+ hadlogin = true;
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ string loginfile = tempdir + "\\login.ini";
+ loginfrom.Hide();
+
+
+ //loginfrom.Dispose();
+ if (File.Exists(loginfile))
+ {
+ StreamWriter sw = new StreamWriter(loginfile, false);
+ sw.WriteLine(loginfrom.m_WebAddress + "|" + loginfrom.username + "|" + loginfrom.password
+ + "|" + loginfrom.usergroup + "|" + loginfrom.userrole + "||");
+ sw.Close();
+ }
+ else
+ {
+ FileStream fs = new FileStream(loginfile, FileMode.Create, FileAccess.Write);
+ StreamWriter sw = new StreamWriter(fs);
+ sw.WriteLine(loginfrom.m_WebAddress + "|" + loginfrom.username + "|" + loginfrom.password
+ + "|" + loginfrom.usergroup + "|" + loginfrom.userrole + "||");
+ sw.Close();
+ fs.Close();
+ }
+
+ //从服务器端获取配置xml文件
+ OriginTool origintool = new OriginTool();
+
+ // bool hasxmlfile = origintool.checkxml(xmlpath);
+ bool hasxmlfile = true;
+ if (hasxmlfile)//
+ {
+ //DialogResult hasresult = MessageBox.Show("当前工作目录已经存在XML配置文件,是否与服务器端同步?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (hasresult == DialogResult.No || hasresult == DialogResult.None)
+ //{
+ // ed.WriteMessage("放弃XML配置文件同步\n");
+ //}
+ //if (hasresult == DialogResult.Yes)
+ //{
+ // Hashtable prevalues = origintool.getTCPreferences("OriginXMLFile");
+ // if (prevalues != null && prevalues.Count > 0)
+ // {
+ // foreach (DictionaryEntry de in prevalues)
+ // {
+ // List itemidlist = origintool.getCorrespondItemID((string[])de.Value);
+ // for (int m = 0; m < itemidlist.Count; m++)
+ // {
+ // string item_id = itemidlist[m];
+ // SavedQueryResults found = origintool.getSearchItem(item_id);
+ // if (found.NumOfObjects == 0)
+ // {
+ // ed.WriteMessage("TC系统中首选项配置内容有误,请确认\n");
+ // return;
+ // }
+ // else
+ // {
+ // Item dmtitem = found.Objects[0] as Item;
+ // if (!origintool.downloadfile(dmtitem, xmlpath))
+ // {
+ // ed.WriteMessage("下载模板文件出错,请检查\n");
+ // return;
+ // }
+ // }
+ // }
+
+ // }
+
+ // }
+ //}
+ }
+
+ }
+ else
+ {
+ MessageBox.Show("对不起,登录失败,请确认");
+ loginfrom.Dispose();
+ }
+ ed.WriteMessage("\n");
+ }
+ private void loginbutton2_Click(object sender, EventArgs e)
+ {
+ loginfrom.Hide();
+ loginfrom.Dispose();
+ }
+ bool hadlogin = false;
+
+ [CommandMethod("OPEN_FROM_TC")]
+ public void openformtc()
+ {
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ //if (hadlogin == false)
+ //{
+ // string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ // string loginfile = tempdir + "\\login.ini";
+ // if (File.Exists(loginfile))
+ // {
+ // StreamReader sr = new StreamReader(loginfile);
+ // string line;
+ // if ((line = sr.ReadLine()) != null)
+ // {
+ // string[] ans = line.Split('|');
+ // for (int i = 0; i < ans.Length; i++)
+ // {
+ // if (i == 0)
+ // serveraddress = ans[i].ToString();
+ // if (i == 1)
+ // username = ans[i].ToString();
+ // if (i == 2)
+ // password = ans[i].ToString();
+ // if (i == 3)
+ // usergroup = ans[i].ToString();
+ // if (i == 4)
+ // userrole = ans[i].ToString();
+ // }
+ // if ((line = sr.ReadLine()) != null)
+ // {
+ // if (line == "#")
+ // {
+ // Teamcenter.ClientX.Session session = new Teamcenter.ClientX.Session(serveraddress);
+ // try
+ // {
+ // loginuser = session.mylogin(username, password, usergroup, userrole);
+ // }
+ // catch (InvalidCredentialsException e)
+ // {
+ // ed.WriteMessage("用户缓存信息错误,请重新登录");
+ // return;
+ // }
+ // if (loginuser != null)
+ // hadlogin = true;
+ // }
+ // }
+
+ // }
+ // sr.Close();
+ // }
+ // else
+ // {
+ // login();
+ // }
+ //}
+ if (hadlogin == true)
+ {
+ openfrom = new OpenFromTC();
+ openfrom.appodc = appodc;
+ openfrom.user = loginuser;
+ openfrom.button1.Click += new System.EventHandler(this.openbutton1_Click);
+ openfrom.button2.Click += new System.EventHandler(this.openbutton2_Click);
+ openfrom.Activate();
+ openfrom.Show();
+ }
+ }
+
+
+ public void getFiles(ItemRevision itemRev) {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ dmService.GetProperties(new ModelObject[] { itemRev }, new string[] { "IMAN_specification" });
+ ModelObject[] specMos = itemRev.IMAN_specification;
+ if (specMos == null || specMos.Length <1)
+ {
+ return;
+ }
+ DataSet mydateset = specMos[0] as DataSet;
+ ModelObject[] objects = { mydateset };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, new string[]{"ref_list"});
+ ModelObject[] dsfilevec = mydateset.Ref_list;
+
+ ed1.WriteMessage("长度:" + dsfilevec.Length);
+ ed1.WriteMessage(dsfilevec[0].GetType().ToString());
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects1 = { dsfile };
+ string[] attributes1 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+
+ ed1.WriteMessage("路径:" + dsfile.Relative_directory_path + "\n");
+ ed1.WriteMessage("文件名:" + dsfile.Original_file_name + "\n");
+ string newfilename = dsfile.Original_file_name;
+
+ ed1.WriteMessage("Original_file_name : " + newfilename + "\n");
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ FileManagementService fmService = FileManagementService.getService(Teamcenter.ClientX.Session.getConnection());
+ ImanFile[] objects2 = { dsfile };
+ FileTicketsResponse tickets = fmService.GetFileReadTickets(objects2);
+ ed1.WriteMessage("tickets : " + tickets.Tickets.Count + "\n");
+
+ foreach (System.Collections.DictionaryEntry ticket in tickets.Tickets)
+ {
+ ed1.WriteMessage("键:" + ticket.Key + "\n" + "值:" + ticket.Value + "\n");
+
+
+ }
+
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ ed1.WriteMessage("文件个数:" + fileinfovec.Length + "\n");
+ FileInfo file = fileinfovec[0];
+
+ string newtempfile = tempdir + "\\" + newfilename;
+ ed1.WriteMessage("拷贝路径:" + newtempfile + "\n");
+
+ System.IO.File.Copy(file.FullName, newtempfile, true);
+ System.IO.File.SetAttributes(newtempfile, FileAttributes.Normal);
+
+ }
+
+
+ private void openbutton1_Click(object sender, EventArgs e)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Reservation res = ReservationService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ TreeNode nownode = this.openfrom.treeView1.SelectedNode;
+ if (nownode.SelectedImageIndex == 0)
+ {
+ List datasetlist = this.openfrom.datasetlist;
+ foreach (ALLOBJECT perobject in datasetlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ this.openfrom.textBox1.Text = perobject.name;
+ DialogResult isopen = MessageBox.Show("您是否确定打开该图纸?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (isopen == DialogResult.None || isopen == DialogResult.No)
+ {
+ return;
+ }
+ DataSet mydateset = perobject.workobject as DataSet;
+ ModelObject[] objects = { mydateset };
+ string[] attributes = { "is_modifiable", "checked_out", "ref_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ if (mydateset.Is_modifiable == false)
+ {
+ DialogResult moresult = MessageBox.Show("您没有修改权限,是否以只读方式打开?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (moresult == DialogResult.Yes)
+ {
+ hasRight = false;
+ }
+ else
+ {
+ return;
+ }
+ }
+ if (mydateset.Is_modifiable)
+ {
+ DialogResult moresult = MessageBox.Show("是否签出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (moresult == DialogResult.Yes)
+ {
+ if (mydateset.Checked_out == "Y")
+ {
+ MessageBox.Show("对不起,文件已签出!请确认文件签入后执行此操作");
+ return;
+ }
+ else
+ {
+ ModelObject[] dataobj = { mydateset };
+ res.Checkout(dataobj, "", "");
+ ed1.WriteMessage("文件已签出");
+ ed1.WriteMessage("\n");
+ }
+ }
+ }
+
+ ModelObject[] dsfilevec = mydateset.Ref_list;
+
+ ed1.WriteMessage("长度:" + dsfilevec.Length);
+ ed1.WriteMessage(dsfilevec[0].GetType().ToString());
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects1 = { dsfile };
+ string[] attributes1 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+
+ ed1.WriteMessage("路径:" + dsfile.Relative_directory_path + "\n");
+ ed1.WriteMessage("文件名:" + dsfile.Original_file_name + "\n");
+ string newfilename = dsfile.Original_file_name;
+
+ ed1.WriteMessage("Original_file_name : "+newfilename+"\n");
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ FileManagementService fmService = FileManagementService.getService(Teamcenter.ClientX.Session.getConnection());
+ ImanFile[] objects2 = { dsfile };
+ FileTicketsResponse tickets = fmService.GetFileReadTickets(objects2);
+ ed1.WriteMessage("tickets : " + tickets.Tickets.Count + "\n");
+
+ foreach (System.Collections.DictionaryEntry ticket in tickets.Tickets)
+ {
+ ed1.WriteMessage("键:" + ticket.Key + "\n" + "值:" + ticket.Value + "\n");
+ }
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ ed1.WriteMessage("文件个数:" + fileinfovec.Length + "\n");
+ FileInfo file = fileinfovec[0];
+ //ed.WriteMessage("file.DirectoryName:" + file.DirectoryName + "\n");
+ //ed.WriteMessage("file.FullName" + file.FullName + "\n");
+ //string datestring = "";
+ //datestring = DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss");//19
+ string newtempfile = tempdir + "\\" + newfilename;
+ ed1.WriteMessage("拷贝路径:" + newtempfile + "\n");
+
+ System.IO.File.Copy(file.FullName, newtempfile, true);
+ System.IO.File.SetAttributes(newtempfile, FileAttributes.Normal);
+ this.openfrom.Hide();
+ this.openfrom.Dispose();
+ if (File.Exists(newtempfile))
+ {
+ DocumentCollection acdocmgr1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ acdocmgr1.Open(newtempfile, false);
+ //Object pdata = newtempfile;
+ //acdocmgr.ExecuteInApplicationContext(c_back,pdata);
+ //Teamcenter.ClientX.Session session = new Teamcenter.ClientX.Session(serveraddress);
+ //loginuser = session.mylogin(username, password, usergroup, userrole);
+
+ }
+ else
+ {
+ ed1.WriteMessage("对不起,用户临时目录下不存在此文件\n");
+ }
+
+ break;
+ }
+ }
+ }
+ else
+ {
+ ed1.WriteMessage("请选择正确的数据集类型\n");
+ MessageBox.Show("请选择正确的数据集类型");
+ return;
+ }
+ }
+
+ private void openbutton2_Click(object sender, EventArgs e)
+ {
+ this.openfrom.Hide();
+ this.searchfrom = new Search();
+ this.searchfrom.appdoc = appodc;
+ this.searchfrom.user = loginuser;
+ this.searchfrom.xmlpath = xmlpath;
+ this.searchfrom.Activate();
+ this.searchfrom.Show();
+ this.openfrom.Dispose();
+ }
+
+ private void c_back(Object data)
+ {
+ DocumentCollection acdocmgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ if (acdocmgr.IsApplicationContext)
+ {
+ acdocmgr.Open(Convert.ToString(data));
+ }
+ }
+
+ [CommandMethod("SAVE_AS")]
+ public void saveas()
+ {
+ savetotc();
+ }
+
+ ///
+ /// 上传PDF到TC
+ ///
+ ///
+ ///
+ /// 版本
+ /// PDF的物理路径
+ /// PDF数据集类型
+ /// PDF数据集命名引用名称
+ public static void savePDFToTC(ItemRevision itemRev, string pdfPath, string pdfName, string pdfDatasetType, string pdfDatasetReferenceName)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ //CAD控制台
+ Editor cadEditor = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ //PDF数据集
+ Dataset pdfDataset = null;
+ Dataset dwgDataset = null;
+ string filename = null;
+ bool findDateset = false;
+ bool findDwgDataset = false;
+ bool neworupdate = false;
+ //查找dwg数据集
+ KUtil.WriteLog("开始查找到DWG数据集...");
+ //cadEditor.WriteMessage("开始查找到DWG数据集\n");
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter2.RelationName = "IMAN_specification";
+ string[] typeVec2 = new string[1];
+ //数据集类型
+ typeVec2[0] = CAD_TYPE;//"PDF";//datasetinfo.Datatype;
+ myFilter2.ObjectTypeNames = typeVec2;
+ myPref2.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec2 = { myFilter2 };
+ myPref2.Info = myFilterVec2;
+ ModelObject[] primaryObjects2 = { itemRev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp2 = dmService.ExpandGRMRelationsForPrimary(primaryObjects2, myPref2);
+
+ if (myResp2.Output.Length > 0) {
+ for (int k = 0; k < myResp2.Output.Length; k++) {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput2 = myResp2.Output[k];
+ for (int l = 0; l < grmOutput2.OtherSideObjData.Length; l++) {
+ ExpandGRMRelationsData otherSideData = grmOutput2.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0) {
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++) {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ ModelObject[] tObj = { tempDataset };
+ string[] tAttr = { "ref_list" };
+ dmService.RefreshObjects(tObj);
+ dmService.GetProperties(tObj, tAttr);
+ ModelObject[] refs=tempDataset.Ref_list;
+ if (refs.Length == 0) {
+ continue;
+ }
+ for (int w = 0; w < refs.Length; w++) {
+ ImanFile file=refs[w] as ImanFile;
+ ModelObject[] tObj2 = { file };
+ string[] tAttr2 = { "Original_file_name" };
+ dmService.RefreshObjects(tObj2);
+ dmService.GetProperties(tObj2, tAttr2);
+ string ds_name = file.Original_file_name;
+
+ //cadEditor.WriteMessage("文件名称:"+ds_name+"\n");
+ if (ds_name == pdfName) {
+ findDwgDataset = true;
+ dwgDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ //cadEditor.WriteMessage("找到DWG数据集!\n");
+ KUtil.WriteLog("找到DWG数据集:" + tempDataset.Object_name);
+ pdfName = tempDataset.Object_name;
+ if (pdfName.EndsWith(".dwg")) {
+ pdfName=pdfName.Substring(0,pdfName.Length-4)+".pdf";
+ }
+ else if(pdfName.EndsWith(".DWG")) {
+ pdfName = pdfName.Substring(0, pdfName.Length - 4) + ".PDF";
+ }
+ KUtil.WriteLog("开始查找PDF数据集..."+pdfName);
+ break;
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ if (findDwgDataset) {
+ break;
+ }
+ }
+ }
+
+ if (!findDwgDataset) {
+ KUtil.WriteLog("没有找到CAD数据集:" + pdfName );
+ MessageBox.Show("没有找到CAD数据集:"+pdfName+"!");
+ return;
+ }
+ // cadEditor.WriteMessage("=======上传PDF数据集=========\n");
+
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = new string[1];
+ //数据集类型
+ typeVec[0] = pdfDatasetType;//"PDF";//datasetinfo.Datatype;
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec = { myFilter };
+ myPref.Info = myFilterVec;
+ ModelObject[] primaryObjects = { itemRev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref);
+
+ if (myResp.Output.Length > 0)
+ {
+ for (int k = 0; k < myResp.Output.Length; k++)
+ {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput = myResp.Output[k];
+ for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++)
+ {
+ ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0)
+ {
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++)
+ {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+
+ string ds_name = tempDataset.Object_string;
+ if (ds_name == pdfName)
+ {
+ findDateset = true;
+ pdfDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ //cadEditor.WriteMessage("找到PDF数据集!\n");
+ break;
+ }
+ }
+ if (findDateset) {
+ break;
+ }
+ }
+ }
+ if (findDateset) {
+ break;
+ }
+ }
+ }
+
+
+
+ //新建或更新数据集
+ if (findDateset)
+ {
+ KUtil.WriteLog("找到PDF数据集");
+ bool ischeckout = false;
+ try
+ {
+ ModelObject[] objects2 = { pdfDataset };
+ string[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ if (!pdfDataset.Is_modifiable)
+ {
+ KUtil.WriteLog("PDF图纸状态为只读,无法保存到到系统!");
+ MessageBox.Show("您打开的PDF图纸状态为只读,将无法保存到到系统!");
+ return;
+ }
+ User checkuserinfo = pdfDataset.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != loginuser.Uid)
+ {
+ KUtil.WriteLog("该PDF图纸已被其他用户签出,无法保存到系统!");
+ MessageBox.Show("该PDF图纸已被其他用户签出,无法保存到系统!");
+ return;
+ }
+ }
+ if (pdfDataset.Checked_out == "Y")
+ ischeckout = true;
+ }
+ catch (NotLoadedException ex)
+ {
+ cadEditor.WriteMessage(ex.Message);
+ }
+
+ Reservation res = ReservationService.getService(Session.getConnection());
+
+ ModelObject[] dsFileVec = null;
+ try
+ {
+ ModelObject[] objects2 = { pdfDataset };
+ string[] attributes2 = { "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ dsFileVec = pdfDataset.Ref_list;
+ }
+ catch (NotLoadedException ex)
+ {
+ cadEditor.WriteMessage(ex.Message);
+ }
+ //ImanFile dsfile = dsFileVec[0] as ImanFile;
+
+ // ModelObject[] objects3 = { dsfile };
+ //String[] attributes3 = { "relative_directory_path", "original_file_name" };
+ //dmService.RefreshObjects(objects3);
+ //dmService.GetProperties(objects3, attributes3);
+ // filename = dsfile.Original_file_name;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+ //DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //cadEditor.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+
+ //Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ //acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+ //string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = pdfPath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ //数据集命名引用名称
+ fileInfo.NamedReferencedName = pdfDatasetReferenceName;//"PDF";//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = pdfDataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = pdfDataset;
+ //写入描述
+ /*if (findDwgDataset) {
+ string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
+ cadEditor.WriteMessage("当前时间:" + now + "\n");
+ ModelObject[] objs = new ModelObject[2];
+ objs[0] = pdfDataset;
+ objs[1] = dwgDataset;
+ Hashtable attrs = new Hashtable();
+ attrs.Add("kh3_timestamp",now);
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objs, attrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ cadEditor.WriteMessage("更新kh3_timestamp属性成功\n");
+ }
+ else {
+ cadEditor.WriteMessage("更新kh3_timestamp属性错误" + itemupdateresponse.sizeOfPartialErrors());
+ for (int er = 0; er < itemupdateresponse.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n" + er + ":\n");
+ ErrorValue[] errValues = itemupdateresponse.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message + "\n");
+ }
+ }
+ MessageBox.Show("更新kh3_timestamp属性失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ }*/
+
+ if (ischeckout)
+ res.Checkin(datasets);
+ dmService.RefreshObjects(datasets);
+ //datasets[0] = inputs[0].Dataset;
+ //dmService.DeleteObjects(datasets);
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ inputs[0] = inputData;
+ FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ KUtil.WriteLog("开始上传PDF...");
+ ServiceData response = fMSFileManagement.PutFiles(inputs);
+ if (response.sizeOfPartialErrors() > 0) {
+ StringBuilder errInfo = new StringBuilder();
+ for (int err = 0; err < response.sizeOfPartialErrors(); err++) {
+ foreach (string str in response.GetPartialError(err).Messages) {
+ errInfo.Append(str).Append("\r\n");
+ }
+ }
+ KUtil.WriteLog("上传PDF失败"+errInfo.ToString());
+ //cadEditor.WriteMessage("FileManagementService上传数据集错误:" + response.sizeOfPartialErrors());
+ MessageBox.Show("上传PDF失败!");
+ return;
+ }
+ KUtil.WriteLog("上传PDF成功");
+ dmService.RefreshObjects(datasets);
+ //MessageBox.Show("上传PDF成功!");
+ uploadDwgFileAndClose(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Name,dwgDataset);
+ //SaveAndClose();
+ //this.PDF_SYNC_STATUS = PDF_CONVERTED;
+ }
+ else
+ {
+ KUtil.WriteLog("未找到PDF数据集,开始新建...");
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = pdfDatasetType;//datasetinfo.Datatype;
+ oneDatasetProp.Name = pdfName;//datasetinfo.Ds_name;
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ if (dsResp.Output.Length == 0) {
+ KUtil.WriteLog("创建数据集失败");
+ MessageBox.Show("创建数据集失败!");
+ return;
+ }
+ Dataset createdataset = dsResp.Output[0].Dataset;
+
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ //DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //inacdocmgr.MdiActiveDocument.Database.SaveAs(inacdocmgr.MdiActiveDocument.Name, DwgVersion.Current);
+ //inacdocmgr.MdiActiveDocument.SendStringToExecute("QSAVE", true, false, true);
+ //cadEditor.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+ //Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ //acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+ //string mdiactivefile = acdoc.Name;
+
+ fileInfo.FileName = pdfPath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = pdfDatasetReferenceName;//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = createdataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ inputs[0] = inputData;
+ FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ KUtil.WriteLog("开始上传PDF...");
+ ServiceData response = fMSFileManagement.PutFiles(inputs);
+ if (response.sizeOfPartialErrors() > 0){
+ StringBuilder errInfo = new StringBuilder();
+ for (int err = 0; err < response.sizeOfPartialErrors(); err++) {
+ foreach (string str in response.GetPartialError(err).Messages) {
+ errInfo.Append(str).Append("\r\n");
+ }
+ }
+ KUtil.WriteLog("上传PDF失败" + errInfo.ToString());
+ //cadEditor.WriteMessage("FileManagementService上传数据集错误" + response.sizeOfPartialErrors());
+ MessageBox.Show("上传PDF失败!");
+ return;
+ }
+ KUtil.WriteLog("上传PDF成功");
+ // cadEditor.WriteMessage("上传数据集成功\n");
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = createdataset;
+ pdfDataset = createdataset;
+ //写入描述
+ /*
+ if (findDwgDataset) {
+ string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
+ cadEditor.WriteMessage("当前时间:" + now + "\n");
+ ModelObject[] objs = new ModelObject[2];
+ objs[0] = pdfDataset;
+ objs[1] = dwgDataset;
+ Hashtable attrs = new Hashtable();
+ attrs.Add("kh3_timestamp", now);
+ dmService.RefreshObjects(objs);
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objs, attrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ cadEditor.WriteMessage("更新kh3_timestamp属性成功\n");
+ }
+ else {
+ cadEditor.WriteMessage("更新kh3_timestamp属性错误:" + itemupdateresponse.sizeOfPartialErrors());
+ for (int er = 0; er < itemupdateresponse.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n"+er+":\n");
+ ErrorValue[] errValues=itemupdateresponse.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message+"\n");
+ }
+ }
+ MessageBox.Show("更新kh3_timestamp属性失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ dmService.RefreshObjects(objs);
+
+ }*/
+ //添加cad和pdf数据集
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "";
+ one_rela.PrimaryObject = itemRev;
+ one_rela.SecondaryObject = pdfDataset;
+ one_rela.RelationType = "IMAN_specification";
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+ KUtil.WriteLog("开始将数据集下挂至版本...");
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ //reResp.ServiceData.sizeOfPartialErrors()
+ ServiceData reRespSD = reResp.ServiceData;
+ if (reRespSD.sizeOfPartialErrors() <= 0)
+ {
+ KUtil.WriteLog("数据集关系创建成功");
+ //cadEditor.WriteMessage("数据集关系创建成功\n");
+ //MessageBox.Show("上传PDF成功!");
+ uploadDwgFileAndClose(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Name, dwgDataset);
+ //SaveAndClose();
+ //this.PDF_SYNC_STATUS = PDF_CONVERTED;
+ }
+ else
+ {
+ StringBuilder errInfo = new StringBuilder();
+ for (int err = 0; err < reRespSD.sizeOfPartialErrors(); err++) {
+ foreach (string str in reRespSD.GetPartialError(err).Messages) {
+ errInfo.Append(str).Append("\r\n");
+ }
+ }
+ KUtil.WriteLog("数据集关系创建失败:" + errInfo.ToString());
+ //cadEditor.WriteMessage("数据集关系创建错误:" + reRespSD.sizeOfPartialErrors());
+ for (int er = 0; er < reRespSD.sizeOfPartialErrors(); er++) {
+ cadEditor.WriteMessage("\n" + er + ":\n");
+ ErrorValue[] errValues = reRespSD.GetPartialError(er).ErrorValues;
+ for (int er2 = 0; er2 < errValues.Length; er2++) {
+ cadEditor.WriteMessage(errValues[er2].Message + "\n");
+ }
+ }
+ MessageBox.Show("数据集关系创建失败,请检查CAD登录用户是否具有对象访问权限!");
+ }
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.RefreshObjects(datasets);
+ }
+ //kk 0730 记录数据集对象,用于写入对应文件的最后修改时间
+ //if (!this.pdfDic.ContainsKey(AcAp.DocumentManager.MdiActiveDocument.Name)) {
+ // this.pdfDic.Add(AcAp.DocumentManager.MdiActiveDocument.Name, pdfDataset);
+ //}
+ //else {
+ // this.pdfDic[AcAp.DocumentManager.MdiActiveDocument.Name] = pdfDataset;
+ //}
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("UPDATE_TIMESTAMP\r");
+ }
+
+ //private void SaveAndClose() {
+ // ((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ // ((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("CLOSE\r");
+ //}
+
+ private static void uploadDwgFileAndClose(string filePath,Dataset dataset) {
+ KUtil.WriteLog("开始更新DWG文件...");
+ Editor cadEditor = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ bool ischeckout = false;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ ModelObject[] objects2 = { dataset };
+ string[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ if (!dataset.Is_modifiable) {
+ KUtil.WriteLog("打开的CAD图纸状态为只读,无法保存到到系统");
+ MessageBox.Show("您打开的CAD图纸状态为只读,将无法保存到到系统!");
+ return;
+ }
+ User checkuserinfo = dataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != loginuser.Uid) {
+ KUtil.WriteLog("CAD图纸已被其他用户签出,无法保存到系统");
+ MessageBox.Show("该CAD图纸已被其他用户签出,无法保存到系统!");
+ return;
+ }
+ }
+ if (dataset.Checked_out == "Y")
+ ischeckout = true;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+ //DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //cadEditor.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+
+ //Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ //acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+ //string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = filePath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ //数据集命名引用名称
+ fileInfo.NamedReferencedName = CAD_TYPE;//"PDF";//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = dataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = dataset;
+ Reservation res = ReservationService.getService(Session.getConnection());
+ //if (ischeckout)
+ // res.Checkin(datasets);
+ dmService.RefreshObjects(datasets);
+ //datasets[0] = inputs[0].Dataset;
+ //dmService.DeleteObjects(datasets);
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ inputs[0] = inputData;
+ FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+
+ ServiceData response = fMSFileManagement.PutFiles(inputs);
+ if (response.sizeOfPartialErrors() > 0) {
+ StringBuilder errInfo = new StringBuilder();
+ for (int err = 0; err < response.sizeOfPartialErrors(); err++) {
+ foreach (string str in response.GetPartialError(err).Messages) {
+ errInfo.Append(str).Append("\r\n");
+ }
+ }
+ KUtil.WriteLog("CAD图纸上传失败:"+errInfo.ToString());
+ //cadEditor.WriteMessage("FileManagementService上传数据集错误:" + response.sizeOfPartialErrors());
+ MessageBox.Show("PDF图纸上传成功,CAD图纸上传失败!");
+ return;
+ }
+ dmService.RefreshObjects(datasets);
+ KUtil.WriteLog("PDF、CAD图纸上传成功!");
+ MessageBox.Show("PDF、CAD图纸上传成功!");
+ KUtil.WriteLog("开始创建临时文件" + filePath + ".txt");
+ FileStream fs = null;
+ try {
+ fs = new FileStream(filePath + ".txt", FileMode.Append);
+ //获得字节数组
+ byte[] data = System.Text.Encoding.Default.GetBytes("更新时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "\r\n");
+ //开始写入
+ fs.Write(data, 0, data.Length);
+ KUtil.WriteLog("临时文件创建成功,在上传时会清理TC临时目录以阻止CAD数据集文件更新");
+ fs.Flush();
+ fs.Close();
+ }
+ catch (System.Exception e) {
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ ed.WriteMessage("创建临时文件出错:" + e.Message + "\n");
+ MessageBox.Show("临时文件创建出错,将无法阻止TC数据集自动更新。\n为保持图纸一致性,请不要在继续进行编辑。");
+ }
+ //finally {
+ // if (fs != null) {
+ // //清空缓冲区、关闭流
+ // fs.Flush();
+ // fs.Close();
+ // }
+ //}
+ }
+
+ private Boolean checkLogin() {
+ if (loginuser != null) {
+ return true;
+ }
+ else {
+ //K_TC_MAIN.WriteLog1("用户未登录");
+ login();
+ }
+ if (loginuser != null) {
+ return true;
+ }
+ return false;
+ }
+
+ [CommandMethod("K_UPLOAD_FOLDER_TEST", CommandFlags.Session)]
+ public void KUploadFolderTest()
+ {
+ KUtil.WriteLog("K_UPLOAD_FOLDER");
+
+ string[] files = null;
+ try
+ {
+ using (var fbd = new FolderBrowserDialog())
+ {
+ DialogResult result = fbd.ShowDialog();
+
+ if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
+ {
+ string[] exts = new string[] { "*.dwg", "*.DWG" };
+ files = Directory.GetFiles(fbd.SelectedPath);
+ //System.Windows.Forms.MessageBox.Show("Files found: " + files.Length.ToString(), "Message");
+ }
+ }
+ }
+ catch (System.Exception e)
+ {
+ KUtil.LogErr(e);
+ }
+ List dwgFiles = new List();
+ int fileCnt = files == null ? 0 : files.Length;
+ for (int i = 0; i < fileCnt; i++)
+ {
+ string path = files[i];
+ if (!path.ToUpper().EndsWith(".DWG"))
+ {
+
+ continue;
+ }
+ dwgFiles.Add(path);
+ }
+ if (dwgFiles.Count == 0)
+ {
+ MessageBox.Show("选择的目录中没有图纸文件");
+ return;
+ }
+ DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+
+ try
+ {
+ foreach (string cadfile in dwgFiles)
+ {
+
+
+ string file = cadfile;
+ Document openDoc = KSaveToTC.getOpenedDoc(file);
+ bool close = openDoc == null;
+ if (close)
+ {
+ openDoc = acdocmgr.Open(cadfile, true);
+ acDocMgr.MdiActiveDocument = openDoc;
+ }
+ using (openDoc.LockDocument())
+ {
+
+ // HostApplicationServices.WorkingDatabase = openDoc.Database;
+ PrintDwgWithMultiPageSize pd = new PrintDwgWithMultiPageSize(openDoc);
+ pd.MultiSheetPlot();
+ }
+ if (close)
+ {
+ openDoc.CloseAndDiscard();
+ }
+
+ }
+
+ }
+ catch (System.Exception e)
+ {
+ KUtil.LogErr(e);
+ MessageBox.Show(e.Message);
+ }
+
+ //Thread t = new Thread(() => KSaveToTC.UploadFolder(files));
+ //t.Start();
+ KUtil.WriteLog("K_UPLOAD_FOLDER Command Stop");
+ }
+
+
+ [CommandMethod("K_UPLOAD_FOLDER", CommandFlags.Session)]
+ public void KUploadFolder()
+ {
+ ConnorUtils.WriteLog("-------------------------------------");
+ ConnorUtils.WriteLog("开始执行批量上传");
+ ConnorUtils.WriteLog("开始检查是否登录");
+ //检查登录
+ if (!checkLogin())
+ {
+ return;
+ }
+ ConnorUtils.WriteLog("结束检查是否登录");
+
+ ConnorUtils.WriteLog("K_UPLOAD_FOLDER");
+ string[] files = null;
+ try
+ {
+ using (var fbd = new FolderBrowserDialog())
+ {
+ DialogResult result = fbd.ShowDialog();
+
+ if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
+ {
+ string[] exts = new string[] { "*.dwg", "*.DWG" };
+ files = Directory.GetFiles(fbd.SelectedPath);
+ //System.Windows.Forms.MessageBox.Show("Files found: " + files.Length.ToString(), "Message");
+ }
+ }
+ }
+ catch (System.Exception e)
+ {
+ ConnorUtils.LogErr(e);
+ }
+ List beans = new List();
+ List dwgFiles = new List();
+ int fileCnt = files == null ? 0 : files.Length;
+ for (int i = 0; i < fileCnt; i++)
+ {
+ string path = files[i];
+ if (!path.ToUpper().EndsWith(".DWG"))
+ {
+ continue;
+ }
+ dwgFiles.Add(path);
+ UploadFiles.UploadBean bean = new UploadFiles.UploadBean();
+ bean.filePath = path;
+ bean.fileName = Path.GetFileName(path);
+ beans.Add(bean);
+ }
+ if (dwgFiles.Count == 0)
+ {
+ MessageBox.Show("选择的目录中没有图纸文件");
+ return;
+ }
+ dwgFiles.Sort();
+ UploadFile dialog = new UploadFile();
+ dwgFiles = dialog.getSelectedFiles(beans);
+
+ //2023/04/13改 开始
+ // KSaveToTC.UploadFolder(dwgFiles, xmlpath);
+ ConnorUtils.WriteLog("开始获取用户组信息");
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ string login_group = "";
+ ModelObject default_group = loginuser.Default_group;
+ if (default_group != null)
+ {
+ //dmService.RefreshObjects(new ModelObject[] { default_group });
+ dmService.GetProperties(new ModelObject[] { default_group }, new string[] { "name" });
+ login_group = default_group.GetProperty("name").StringValue;
+ ConnorUtils.WriteLog("默认组:" + login_group);
+ }
+ string source = ConnorReadFile.getGroupSource(login_group);
+ ConnorUtils.WriteLog("组:" + source);
+ Hashtable sourcetable = new Hashtable();
+ if (source.Length > 0)
+ {
+ sourcetable.Add("zt2_Source", source);
+ }
+ ConnorUtils.WriteLog("结束获取用户组信息");
+
+ ConnorUtils.WriteLog("配置文件路径:" + xmlpath);
+
+ ConnorUtils.WriteLog("上传文件开始");
+
+ ConnorSaveToTC.UploadFiles(dwgFiles, sourcetable, xmlpath);
+ ConnorUtils.WriteLog("上传文件结束");
+
+ ConnorUtils.WriteLog("结束执行批量上传");
+ ConnorUtils.WriteLog("-------------------------------------");
+ //2023/04/13改 结束
+ //Thread t = new Thread(() => KSaveToTC.UploadFolder(files));
+ //t.Start();
+ // ConnorUtils.WriteLog("K_UPLOAD_FOLDER Command Stop");
+ }
+
+ private void OpenDrawing(string dwgFile)
+ {
+ Document openDoc = ConnorSaveToTC.getOpenedDoc(dwgFile);
+ bool close = openDoc == null;
+ if (close)
+ {
+ openDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.Open(dwgFile, false);
+ // Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = openDoc;
+ }
+ }
+
+ private static Document getOpenedDoc(object file)
+ {
+ throw new NotImplementedException();
+ }
+
+ [CommandMethod("SAVE_TO_TC")]
+ public void CMD_SAVETOTC() {
+ if (!KSaveToTC.CheckCanSave()) {
+ return;
+ }
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ KUtil.WriteLog("QSAVE");
+ doc.SendStringToExecute("SAVE_TO_TC_WITHOUT_QSAVE\r", false, false, false);
+
+ }
+
+ [CommandMethod("SAVE_TO_TC_REVISE")]
+ public void CMD_SAVETOTC_REVISE() {
+ if (!KSaveToTC.CheckCanSave()) {
+ return;
+ }
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ KUtil.WriteLog("QSAVE");
+ doc.SendStringToExecute("SAVE_TO_TC_REVISE_WITHOUT_QSAVE\r", false, false, false);
+ }
+
+ [CommandMethod("SAVE_TO_TC_WITHOUT_QSAVE")]
+ public void SaveToTC2() {
+ //检查登录
+ if (!checkLogin()) {
+ return;
+ }
+ //refreshLogin();
+ try {
+ if (KSaveToTC.SaveToTC2(xmlpath)) {
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ KUtil.WriteLog("QSAVE");
+ doc.SendStringToExecute("SAVE_FILE_TO_TC_REVISE_WITHOUT_QSAVE\r", false, false, false);
+ }
+ }
+ catch (System.Exception ex) {
+ KUtil.LogErr(ex);
+ MessageBox.Show(ex.Message + (ex.InnerException == null ? "" : ("\n" + ex.InnerException.Message)));
+ }
+ }
+
+ [CommandMethod("SAVE_TO_TC_REVISE_WITHOUT_QSAVE")]
+ public void SaveToTC3() {
+ //检查登录
+ if (!checkLogin()) {
+ return;
+ }
+ //refreshLogin();
+ try {
+ if (KSaveToTC.SaveToTC_Revise2(xmlpath)) {
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ KUtil.WriteLog("QSAVE");
+ doc.SendStringToExecute("SAVE_FILE_TO_TC_REVISE_WITHOUT_QSAVE\r", false, false, false);
+ }
+ }
+ catch (System.Exception ex) {
+ KUtil.LogErr(ex);
+ MessageBox.Show(ex.Message + (ex.InnerException == null ? "" : ("\n" + ex.InnerException.Message)));
+ }
+ }
+
+ [CommandMethod("SAVE_FILE_TO_TC_REVISE_WITHOUT_QSAVE")]
+ public void SaveFiles() {
+ //检查登录
+ if (!checkLogin()) {
+ return;
+ }
+ //refreshLogin();
+ try {
+ if (KSaveToTC.SaveFiles(xmlpath)) {
+ MessageBox.Show("更新完成");
+ }
+ }
+ catch (System.Exception ex) {
+ KUtil.LogErr(ex);
+ MessageBox.Show(ex.Message);
+ }
+ }
+
+ [CommandMethod("SAVE_TO_TC_OLD")]
+ public void savetotc()
+ {
+ // a\r\n b
+ //Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute(string.Format("{0}", "QSAVE"), true, false, true);
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (hadlogin)
+ {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++)
+ {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:"+de.Key + "\tCAD属性值:"+de.Value+
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ for (int i = 0; i < mxllist.Count;i++ )
+ {
+ OriginMXL mxlinfo = mxllist[i];
+ ed1.WriteMessage("明细栏块参照名称:" + mxlinfo.Mxlname + "\n");
+ ed1.WriteMessage("明细栏"+i+"详细信息:" + "\n");
+ foreach (DictionaryEntry de in mxlinfo.Mxldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:"+de.Value+
+ "\tTC属性名:"+mxlinfo.Mxltctable[de.Key]+
+ "\tis_bomline:"+mxlinfo.Mxlisbomtable[de.Key]+
+ "\twritable:"+mxlinfo.Mxlupdatetable[de.Key]+"\n");
+ }
+ }
+ ed1.WriteMessage("明细栏个数为:" + mxllist.Count);
+ ed1.WriteMessage("开始为bom结构排序\n");
+ // mxllist = origintool.sortbomlist(mxllist);
+ ed1.WriteMessage("排序成功...\n");
+
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null)
+ {
+ ed1.WriteMessage("系统没有找到item_id所对应的图纸信息,系统中断\n");
+ return;
+ }
+ SavedQueryResults found = origintool.getSearchItem(btlinfo.Btldatatable[key].ToString());
+ if (found != null && found.NumOfObjects > 0)
+ {
+ DialogResult upresult = MessageBox.Show("找到对应标题栏Item,是否更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None)
+ {
+ ed1.WriteMessage("放弃更新\n");
+ return;
+ }
+ if (upresult == DialogResult.Yes)
+ {
+ for (int i = 0; i < found.NumOfObjects; i++)
+ {
+ Item item = found.Objects[i] as Item;
+ ModelObject[] objects = { item };
+ string[] attributes = { "item_id", "object_name", "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string item_id = item.Item_id;
+ string object_name = item.Object_name;
+
+ Dataset dataset = null;
+ GetItemFromIdInfo tempitem = new GetItemFromIdInfo();
+ tempitem.ItemId = item_id;
+ GetItemFromIdInfo[] infos = new GetItemFromIdInfo[1];
+ infos[0] = tempitem;
+ GetItemFromIdPref pref = new GetItemFromIdPref();
+ //这里可能要换成新的方式
+ GetItemFromIdResponse infoResp = dmService.GetItemFromId(infos, 1, pref);
+
+
+ //这个层级上需要增加对Item属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("Item"))
+ {
+ ed1.WriteMessage("正在更新Item属性\n");
+ Hashtable itemattrs = new Hashtable();
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Item" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objects, itemattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新Item属性成功\n");
+ }
+ }
+ }
+
+
+
+
+ for (int j = 0; j < infoResp.Output.Length; j++)
+ {
+ ModelObject[] objects1 = { infoResp.Output[j].Item };
+ string[] attributes1 = { "revision_list", "is_modifiable" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ ModelObject[] revlist = infoResp.Output[j].Item.Revision_list;
+ dmService.RefreshObjects(revlist);
+ ItemRevision itemRev = null;
+ string rev_id = "";
+ for (int k = 0; k < revlist.Length; k++)
+ {
+ itemRev = revlist[k] as ItemRevision;
+ ModelObject[] objects2 = { itemRev };
+ string[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+
+ //判断图纸上是否存在配置了版本信息,如果配置了版本信息,则处理指定的版本,否则,处理最新版本
+ if (btlinfo.Btltctable.ContainsValue("item_revision_id"))
+ {
+ if (itemRev.Item_revision_id == btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id")].ToString())
+ {
+ break;
+ }
+ }
+ }
+ if (itemRev == null)
+ {
+ ed1.WriteMessage("Item没有对应版本\n");
+ return;
+ }
+ rev_id = itemRev.Item_revision_id;
+ ReleaseStatus[] releaselist = itemRev.Release_status_list;
+ if (!itemRev.Is_modifiable)
+ {
+ MessageBox.Show("ItemRevision为只读,您没有保存权限!");
+ return;
+ }
+ if (releaselist.Length > 0)
+ {
+ string message = "Item ID为" + itemRev.Item_id + "的最新版本已发布!";
+ MessageBox.Show(message);
+ return;
+ }
+
+ //这个层级上要增加对版本属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("ItemRevision"))
+ {
+ ed1.WriteMessage("正在更新ItemRevision属性\n");
+ Hashtable itemRevattrs = new Hashtable();
+ ModelObject[] olditemRev = new ModelObject[1];
+ olditemRev[0] = itemRev;
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemRevattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemRevattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(olditemRev, itemRevattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新ItemRevision属性成功\n");
+ }
+ }
+ }
+
+
+
+
+ //更新表单信息
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec = new FormInfo[1];
+ ModelObject[] form_vec;
+
+ form_vec = itemRev.IMAN_master_form_rev;
+
+
+
+ for (int k = 0; k < form_vec.Length; k++)
+ {
+ //Type myType = form_vec[k].GetType();
+ //string fType = myType.Name;
+ Form form = form_vec[k] as Form;
+ bool frash = false;
+ string[] props = new string[1];
+
+ Hashtable formAttrs = new Hashtable();
+
+ //如果配置了Form属性,则执行如下代码
+ if (btlinfo.Btltypetable.ContainsValue("Form"))
+ {
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Form" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ string writestring = btlinfo.Btlwritetable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(form_vec, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = form_vec[k].GetProperty(tcstring);
+ if (cadvalue != my_prop.StringValue)
+ {
+ if (my_prop.StringValue == "")
+ frash = true;
+ else
+ {
+ string message = "当前标题栏图纸:" + cadstring + "属性值" + cadvalue + "与系统内:" + tcstring + "属性值" + my_prop.StringValue + "不一致,是否覆盖系统内属性?";
+ DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (updateresult == DialogResult.Yes)
+ {
+ frash = true;
+ }
+ }
+ string[] formAttrValue = new string[1];
+ formAttrValue[0] = "";
+ if (frash)
+ formAttrValue[0] = cadvalue;
+ else
+ formAttrValue[0] = my_prop.StringValue;
+ ed1.WriteMessage(tcstring + ":" + formAttrValue[0] + "\n");
+ formAttrs.Add(tcstring, formAttrValue);
+ props[0] = "";
+ }
+
+ }
+ }
+ }
+
+ ed1.WriteMessage("formAttrs:" + formAttrs.Count + "\n");
+
+ foreach (DictionaryEntry hash in formAttrs)
+ {
+ ed1.WriteMessage(hash.Key + ":" + Convert.ToString(hash.Value) + "\n");
+ }
+
+
+ forminfo.AttributesMap = formAttrs;
+ forminfo.ClientId = "1";
+ forminfo.Description = "";
+ forminfo.FormObject = (Form)form;
+ forminfo.Name = item_id + "/" + rev_id;
+ forminfo.ParentObject = null;
+ forminfo.RelationName = "IMAN_master_form";
+ forminfo.SaveDB = true;
+ forminfo.FormType = "ItemRevision Master";
+ forminfo_vec[0] = forminfo;
+ try
+ {
+ ed1.WriteMessage("开始更新\n");
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.CreateOrUpdateFormsResponse formResp =
+ dmService.CreateOrUpdateForms(forminfo_vec);
+ ModelObject[] respon = { formResp.ServiceData.GetUpdatedObject(0) };
+ dmService.RefreshObjects(respon);
+ ed1.WriteMessage("更新完成\n");
+ break;
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+
+ //
+
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument);
+ string tempPDFPath=pdfdwg.MultiSheetPlot();
+ if (File.Exists(tempPDFPath)) {
+ ed.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ if (tempPDFPath.Length > 0) {
+ savePDFToTC(itemRev, tempPDFPath, pdfdwg.PrintDoc.Name.Substring(pdfdwg.PrintDoc.Name.LastIndexOf("\\") + 1), "PDF", "PDF_Reference");
+ }
+ }
+ else {
+ ed.WriteMessage("导出文件路径不存在:\n");
+
+ }
+
+/*
+ ed1.WriteMessage("=======数据集=========\n");
+ //这里增加数据集名称的组成代码,包括type refname separator
+
+ OriginReadXml originreadxml = new OriginReadXml();
+ OriginDataSet datasetinfo = originreadxml.OriginReadDataSetXML(xmlpath);
+ datasetinfo = origintool.GetDataSetInfo(datasetinfo, btlinfo);
+
+ ed1.WriteMessage("准备数据集数据完成\n");
+
+
+ bool findDateset = false;
+ bool neworupdate = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = new string[1];
+ typeVec[0] = datasetinfo.Datatype;
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec = { myFilter };
+ myPref.Info = myFilterVec;
+ ModelObject[] primaryObjects = { itemRev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref);
+
+ if (myResp.Output.Length > 0)
+ {
+ for (int k = 0; k < myResp.Output.Length; k++)
+ {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput = myResp.Output[k];
+ for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++)
+ {
+ ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0)
+ {
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++)
+ {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+
+ string ds_name = tempDataset.Object_string;
+ if (ds_name == datasetinfo.Ds_name)
+ {
+ findDateset = true;
+ dataset = otherSideData.OtherSideObjects[m] as Dataset;
+ ed1.WriteMessage("找到数据集!\n");
+ break;
+ }
+ }
+ //if (!findDateset)
+ //{
+ // DialogResult updateornewdialog = MessageBox.Show("此Item已存在数据集,但名称", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // if (updateornewdialog == DialogResult.Yes)
+ // {
+
+ // }
+ //}
+ }
+ }
+ }
+ }
+
+ //新建或更新数据集
+ if (findDateset)
+ {
+ bool ischeckout = false;
+ try
+ {
+ ModelObject[] objects2 = { dataset };
+ String[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ if (!dataset.Is_modifiable)
+ {
+ MessageBox.Show("您打开的图纸状态为只读,将无法保存到到系统!");
+ return;
+ }
+ User checkuserinfo = dataset.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != loginuser.Uid)
+ {
+ MessageBox.Show("该图纸已被其他用户签出,无法保存到系统!");
+ return;
+ }
+ }
+ if (dataset.Checked_out == "Y")
+ ischeckout = true;
+ }
+ catch (NotLoadedException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+
+ Reservation res = ReservationService.getService(Session.getConnection());
+ //string comment = "", changeId = "";
+ //ModelObject[] ds_object = new ModelObject[1];
+ //ds_object[0] = dataset;
+ ModelObject[] dsFileVec = null;
+ //ed1.WriteMessage("=======22数据集22=========");
+ try
+ {
+ ModelObject[] objects2 = { dataset };
+ String[] attributes2 = { "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ dsFileVec = dataset.Ref_list;
+ }
+ catch (NotLoadedException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ ImanFile dsfile = dsFileVec[0] as ImanFile;
+
+ ModelObject[] objects3 = { dsfile };
+ String[] attributes3 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects3);
+ dmService.GetProperties(objects3, attributes3);
+ filename = dsfile.Original_file_name;
+ //ed1.WriteMessage("=======33数据集33=========\n");
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+ //inacdocmgr.MdiActiveDocument.Database.SaveAs(inacdocmgr.MdiActiveDocument.Name, DwgVersion.Current);
+ //inacdocmgr.MdiActiveDocument.SendStringToExecute("QSAVE", true, false, true);
+ //string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ //string tempfilename = "";
+ //if (inacdocmgr.MdiActiveDocument.Name.IndexOf("temp") == 0)
+ //{
+ // tempfilename = inacdocmgr.MdiActiveDocument.Name.Substring(23);
+ //}
+ //else
+ //{
+ // tempfilename = inacdocmgr.MdiActiveDocument.Name;
+ //}
+ Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+
+ string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = dataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ //ed1.WriteMessage("=======44数据集44=========");
+ // Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ // inputs[0] = inputData;
+ // FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ // ServiceData response = fMSFileManagement.PutFiles(inputs);
+ // if (response.sizeOfPartialErrors() > 0)
+ // ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors());
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = dataset;
+ if (ischeckout)
+ res.Checkin(datasets);
+ dmService.RefreshObjects(datasets);
+ //datasets[0] = inputs[0].Dataset;
+ //dmService.DeleteObjects(datasets);
+ //fMSFileManagement.Term();
+ ed1.WriteMessage("DateSet check in successful\n");
+ }
+ else
+ {
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = datasetinfo.Datatype;
+ oneDatasetProp.Name = datasetinfo.Ds_name;
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ Dataset createdataset = dsResp.Output[0].Dataset;
+
+ //create relationship
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "";
+ one_rela.PrimaryObject = itemRev;
+ one_rela.SecondaryObject = createdataset;
+ one_rela.RelationType = "IMAN_specification";
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ ed1.WriteMessage("数据集关系创建成功!\n");
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ //inacdocmgr.MdiActiveDocument.Database.SaveAs(inacdocmgr.MdiActiveDocument.Name, DwgVersion.Current);
+ //inacdocmgr.MdiActiveDocument.SendStringToExecute("QSAVE", true, false, true);
+
+ ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+
+ Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+ string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = createdataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ // Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ // inputs[0] = inputData;
+ // FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ // ServiceData response = fMSFileManagement.PutFiles(inputs);
+ // if (response.sizeOfPartialErrors() > 0)
+ // ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors());
+ ed1.WriteMessage("DateSet check in successful\n");
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = createdataset;
+ dmService.RefreshObjects(datasets);
+ dataset = createdataset;
+ }
+*/
+ //创建BOM
+ if (mxllist.Count > 0)
+ {
+ DialogResult flushbomresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (flushbomresult == DialogResult.Yes)
+ {
+ Folder aimFolder = null;
+ WorkspaceObject[] object_vec = new WorkspaceObject[1];
+ object_vec[0] = item;
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedResponse
+ refResp = dmService.WhereReferenced(object_vec, 1);
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedOutput[]
+ refOutput = refResp.Output;
+
+ for (int u = 0; u < refOutput.Length; u++)
+ {
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo[]
+ info = refOutput[u].Info;
+ for (int p = 0; p < info.Length; p++)
+ {
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo
+ it_info = info[p];
+ string type = it_info.Referencer.Object_type;
+ if (type.Contains("Folder"))
+ {
+ aimFolder = it_info.Referencer as Folder;
+ ed1.WriteMessage("找到目标文件夹\n");
+ break;
+ }
+ }
+ }
+
+ if (aimFolder == null)
+ CreateBomStructure(itemRev, dataset, mxllist, null);
+ else
+ CreateBomStructure(itemRev, dataset, mxllist, aimFolder);
+ }
+ }
+
+
+ }//for
+ }
+ }
+ }
+ else
+ {
+ this.savefrom = new SaveToTC();
+ this.savefrom.appdoc = appodc;
+ this.savefrom.user = loginuser;
+ this.savefrom.btlinfo = btlinfo;
+ this.savefrom.bomlist = mxllist;
+ this.savefrom.xmlpath = xmlpath;
+ this.savefrom.button1.Click += new EventHandler(savebutton1_Click);
+ this.savefrom.Activate();
+ this.savefrom.Show();
+ }
+ }
+ }
+ }
+
+ /************************************************************************
+ * 2012-7-3 新需求
+ * add by raywei
+ * function used by savetotc
+ * 新逻辑:
+ * 更新ITEM时创建数据集,数据集来源是系统中对应类型模板item下的数据集内容
+ * 1、获得首选项 文件类型=模板ID 分割字符串
+ * 2、获得标题栏item类型,获得对应模板ID,根据此ID找到系统ITEM
+ * 3、根据找到的Item获得数据集
+ * 4、下载数据集文件
+ * 5、更新ITEM
+ * 6、创建新的数据集
+ * 7、命名引用
+ ************************************************************************/
+
+ public void updateItemDataSet( Editor ed1, BTLClass btlinfo,
+ ItemRevision itemrevision, DataManagementService dmService, string rev_id)
+ {
+ //读取的首选项
+ HelloTeamcenter.hello.Tool tool = new HelloTeamcenter.hello.Tool();
+ Hashtable pre = tool.getTCPreferences("DFHM_dstype");
+ string[] prevalues = (string[])pre["DFHM_dstype"];
+
+ if (prevalues.Length <= 0)
+ {
+ ed1.WriteMessage("首选项DFHM_dstype配置有误\n");
+ }
+
+ for (int i = 0; i < prevalues.Length; i++)
+ {
+ ed1.WriteMessage(prevalues[i].ToString() + "\n");
+ }
+
+ //检查是否存在WORD类型数据集
+ ed1.WriteMessage("检查Item是否含有WORD类型数据集\n");
+ bool hasWordDS = checkHasWord(itemrevision, dmService);
+ if (hasWordDS)
+ {
+ ed1.WriteMessage("Item已经含有WORD类型数据集\n");
+ }
+ else
+ {
+ ed1.WriteMessage("Item不含有WORD类型数据集\n");
+ //获取对应模板对象ID
+ ed1.WriteMessage("正在分析类型对应模板ID\n");
+ string DMTitemid = tool.getCorrespondItemID(tool.initItemType(btlinfo.Item_id, btlinfo.Materialgrade).Trim(), prevalues);
+ string DMTFilepath = "";
+ if (DMTitemid != null && DMTitemid != "")
+ {
+ SavedQueryResults found = tool.getSearchItem(DMTitemid);
+ //找到模板item
+ ed1.WriteMessage("找到模板对象\n");
+ if (found.NumOfObjects > 0 && found != null)
+ {
+ Item DMTItem = found.Objects[0] as Item;
+ DMTFilepath = downloadfile(DMTItem);
+ ed1.WriteMessage("模板文件下载完成,路径" + DMTFilepath + "\n");
+ }
+ }
+ //增加数据集,文件来自模板
+ if (DMTFilepath != "")
+ {
+ bool uploadresult = uploadfile(DMTFilepath, btlinfo.Item_id + "/" + rev_id, itemrevision);
+ if (uploadresult)
+ ed1.WriteMessage("创建相应的数据集模版成功\n");
+ }
+ }
+
+
+
+ }
+
+ //检查是否存在MSWORD类型数据集
+ public bool checkHasWord(ItemRevision itemrevision,DataManagementService dmService)
+ {
+ bool hasWordDS = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = new string[1];
+ typeVec[0] = "MSWord";
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec = { myFilter };
+ myPref.Info = myFilterVec;
+ ModelObject[] primaryObjects = { itemrevision };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "MSWord")
+ {
+ hasWordDS = true;
+ }
+ }
+ }
+ }
+ return hasWordDS;
+ }
+
+
+
+ /************************************************************************
+ * 2012-2-13
+ * add by raywei
+ * function used by savebutton1_Click
+ * 新逻辑:
+ * 增加新建ITEM时创建数据集,数据集来源是系统中对应类型模板item下的数据集内容
+ * 1、获得首选项 文件类型=模板ID 分割字符串
+ * 2、获得标题栏item类型,获得对应模板ID,根据此ID找到系统ITEM
+ * 3、根据找到的Item获得数据集
+ * 4、下载数据集文件
+ * 5、创建新的ITEM
+ * 6、创建新的数据集
+ * 7、命名引用
+ ************************************************************************/
+
+ /************************************************************************
+ * 2012-2-13
+ * add by raywei
+ * 获得服务器端数据集文件并下载到本地,返回文件的路径
+ ************************************************************************/
+
+ public string downloadfile(Item DMTItem)
+ {
+ string DMTFilepath = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { DMTItem };
+ string[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = DMTItem.Revision_list;
+ ItemRevision itemrevision = itemrevisionlist[itemrevisionlist.Length-1] as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ string[] typeVec = { "MSWord" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "MSWord")
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects2 = { dateset };
+ string[] attributes2 = { "is_modifiable", "checked_out", "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ ModelObject[] dsfilevec = dateset.Ref_list;
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects3 = { dsfile };
+ string[] attributes3 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects3);
+ dmService.GetProperties(objects3, attributes3);
+
+ string newfilename = dsfile.Original_file_name;
+ ed1.WriteMessage("Original_file_name : " + newfilename + "\n");
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ FileInfo file = fileinfovec[0];
+ DMTFilepath = tempdir + "\\" + newfilename;
+ ed1.WriteMessage("拷贝路径:" + DMTFilepath + "\n");
+ System.IO.File.Copy(file.FullName, DMTFilepath, true);
+ System.IO.File.SetAttributes(DMTFilepath, FileAttributes.Normal);
+
+ }
+ }
+ }
+ }
+
+ return DMTFilepath;
+ }
+
+ //新建数据集,上传文件
+ public bool uploadfile(string DMTFilepath, string ds_name, ItemRevision rev)
+ {
+ bool result = false;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = "MSWord";
+ oneDatasetProp.Name = ds_name;
+ ed1.WriteMessage("ds_name===="+ds_name+"\n");
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ Dataset createdataset = dsResp.Output[0].Dataset;
+
+ //create relationship
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "AppX-myTest";
+ one_rela.PrimaryObject = rev;
+ one_rela.SecondaryObject = createdataset;
+ one_rela.RelationType = "IMAN_specification";
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ ed1.WriteMessage("数据集关系创建成功!\n");
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ fileInfo.FileName = DMTFilepath;
+ ed1.WriteMessage("fileInfo.FileName===" + fileInfo.FileName+"\n");
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = "word";
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = createdataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ //Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ // inputs[0] = inputData;
+ // FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ // ServiceData response = fMSFileManagement.PutFiles(inputs);
+ //
+ // if (response.sizeOfPartialErrors() > 0)
+ // ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors());
+ // if (response.sizeOfPartialErrors() <= 0)
+ // {
+ // ed1.WriteMessage("DateSet check in successful\n");
+ result = true;
+ // }
+
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = createdataset;
+ dmService.RefreshObjects(datasets);
+
+ return result;
+ }
+
+
+
+ /************************************************************************
+ * savetotc窗口保存按键触发事件
+ ************************************************************************/
+ public void savebutton1_Click(object sender, EventArgs e)
+ {
+ string itemIDTemp = "";
+ string itemRevIDTemp = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Reservation res = ReservationService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ ed1.WriteMessage("==============\n");
+ OriginTool origintool = new OriginTool();
+ OriginBTL btlinfo = this.savefrom.btlinfo;
+ List bomlist = this.savefrom.bomlist;
+ ed1.WriteMessage("标题栏ITEM:" + btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_id")].ToString());
+ ed1.WriteMessage("明细栏个数:"+bomlist.Count+"\n");
+
+
+ TreeNode nownode = this.savefrom.treeView1.SelectedNode;
+ if(nownode.SelectedImageIndex == 1)
+ {
+ foreach (ALLOBJECT perobject in this.savefrom.folderlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ ed1.WriteMessage("找到指定文件夹\n");
+
+ Folder folder = perobject.workobject as Folder;
+ ModelObject[] objects = { folder };
+ string[] attributes = { "is_modifiable"};
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ if (!folder.Is_modifiable)
+ {
+ MessageBox.Show("您对目录没有写权限,请重新选择");
+ return;
+ }
+
+ ItemProperties oneItemProp = new ItemProperties();
+ CreateItemsResponse itemResp = new CreateItemsResponse();
+
+ Teamcenter.Hello.DataManagement hellomanagement = new Teamcenter.Hello.DataManagement();
+ string itemtype = this.savefrom.comboBox1.Text;
+ ItemIdsAndInitialRevisionIds[] itemIds = hellomanagement.generateItemIds(1, itemtype);
+ GetItemCreationRelatedInfoResponse relatedResponse = dmService.GetItemCreationRelatedInfo(itemtype, null);
+ string[] formTypes = new string[relatedResponse.FormAttrs.Length];
+ for (int j = 0; j < relatedResponse.FormAttrs.Length; j++)
+ {
+ FormAttributesInfo attrInfo = relatedResponse.FormAttrs[j];
+ formTypes[j] = attrInfo.FormType;
+ }
+ ItemProperties[] itemProps = new ItemProperties[itemIds.Length];
+ ItemProperties itemProperty = new ItemProperties();
+ for (int j = 0; j < itemIds.Length; j++)
+ {
+ ed1.WriteMessage("start Create form in cache!\n");
+ ModelObject[] forms = hellomanagement.createForms(itemIds[j].NewItemId,
+ formTypes[0], itemIds[j].NewRevId, formTypes[1], null, false);
+ ed1.WriteMessage("Create form in cache sucessful!\n");
+ ed1.WriteMessage("set item properties!\n");
+
+ itemProperty.ClientId = "AppX-Test";
+ itemProperty.ItemId = btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_id")].ToString();
+ itemIDTemp = itemProperty.ItemId;
+ if (btlinfo.Btltctable.ContainsValue("item_revision_id"))
+ {
+ itemProperty.RevId = btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id")].ToString();
+ }
+ else
+ {
+ itemProperty.RevId = itemIds[j].NewRevId;
+ }
+ itemRevIDTemp = itemProperty.RevId;
+ if (btlinfo.Btltctable.ContainsValue("object_name"))
+ itemProperty.Name = btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "object_name")].ToString();
+ else
+ itemProperty.Name = "";
+ itemProperty.Type = itemtype;
+ itemProperty.Description = "";
+ itemProperty.Uom = "EA";
+
+ itemProps[j] = itemProperty;
+ }
+
+ try
+ {
+ ed1.WriteMessage("start item create!\n");
+
+ itemResp = dmService.CreateItems(itemProps, folder, "");
+
+ ed1.WriteMessage("create Items: " + btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_id")].ToString() + "sucessful!\n");
+ ItemRevision rev = null;
+ Item newitem = null;
+ for (int j = 0; j < itemResp.Output.Length; j++)
+ {
+ rev = itemResp.Output[j].ItemRev;
+ newitem = itemResp.Output[j].Item;
+ }
+
+
+ if(rev == null){
+ //ed1.WriteMessage("rev is null\n");
+ rev = (ItemRevision)Query.queryItemRevByID(itemIDTemp,itemRevIDTemp);
+ if (rev == null)
+ {
+ ed1.WriteMessage("版本查找不到,保存失败" + itemIDTemp + "/" + itemRevIDTemp);
+ return;
+ }
+ }
+ if (newitem == null)
+ {
+ //ed1.WriteMessage("item is null\n");
+ newitem =(Item) Query.queryItemByID(itemIDTemp);
+ if (newitem == null)
+ {
+ ed1.WriteMessage("对象查找不到,保存失败" + itemIDTemp);
+ return;
+ }
+
+ }
+ //增加对Item属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("Item"))
+ {
+ ed1.WriteMessage("正在更新Item属性\n");
+ Hashtable itemattrs = new Hashtable();
+ ModelObject[] newitemOBJ = new ModelObject[1];
+ newitemOBJ[0] = newitem;
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Item" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(newitemOBJ, itemattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新Item属性成功\n");
+ }
+ }
+ }
+
+ //增加对版本属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("ItemRevision"))
+ {
+ ed1.WriteMessage("正在更新ItemRevision属性\n");
+ Hashtable itemRevattrs = new Hashtable();
+ ModelObject[] newitemRev = new ModelObject[1];
+ newitemRev[0] = rev;
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemRevattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemRevattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(newitemRev, itemRevattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新ItemRevision属性成功\n");
+ }
+ }
+ }
+
+
+
+
+ //写form属性
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec;
+ ModelObject[] form_vec = null;
+
+ ModelObject[] objects1 = { rev };
+ string[] attributes1 = { "IMAN_master_form_rev",
+ "is_modifiable","item_revision_id","item_id"};
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+
+ try
+ {
+ form_vec = rev.IMAN_master_form_rev;
+ ed1.WriteMessage("get_IMAN_master_form_rev sucessful!\n");
+ }
+ catch (NotLoadedException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ forminfo_vec = new FormInfo[form_vec.Length];
+ for (int j = 0; j < form_vec.Length; j++)
+ {
+ Form form = form_vec[j] as Form;
+
+ Hashtable formAttrs = new Hashtable();
+
+
+ //如果配置了Form属性,则执行如下代码
+ if (btlinfo.Btltypetable.ContainsValue("Form"))
+ {
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Form" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ string writestring = btlinfo.Btlwritetable[cadstring].ToString();
+
+ string[] formAttrValue = new string[1];
+ formAttrValue[0] = "";
+ formAttrValue[0] = cadvalue;
+ formAttrs.Add(tcstring, formAttrValue);
+ }
+ }
+ }
+
+ forminfo.AttributesMap = formAttrs;
+ forminfo.ClientId = "1";
+ forminfo.Description = "";
+ forminfo.FormObject = form;
+ forminfo.Name = rev.Item_id + "/" + rev.Item_revision_id;
+ forminfo.ParentObject = null;
+ forminfo.RelationName = "IMAN_master_form";
+ forminfo.SaveDB = true;
+ forminfo.FormType = "ItemRevision Master";
+
+ forminfo_vec[j] = forminfo;
+
+ try
+ {
+ CreateOrUpdateFormsResponse formResp
+ = dmService.CreateOrUpdateForms(forminfo_vec);
+ ed1.WriteMessage("update form attributes sucessful!\n");
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+ //string ds_name;
+ string rev_id = rev.Item_revision_id;
+
+ //这里增加数据集名称的组成代码,包括type refname separator
+
+ OriginReadXml originreadxml = new OriginReadXml();
+ OriginDataSet datasetinfo = originreadxml.OriginReadDataSetXML(xmlpath);
+ datasetinfo = origintool.GetDataSetInfo(datasetinfo, btlinfo);
+
+ ed1.WriteMessage("准备数据集数据完成\n");
+
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+
+
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = datasetinfo.Datatype;
+ oneDatasetProp.Name = datasetinfo.Ds_name;
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ ed1.WriteMessage("准备创建数据集\n");
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ if (dsResp.Output.Length == 0)
+ {
+ ed1.WriteMessage("创建数据集失败,请检查数据集.xml文件的配置信息");
+ return;
+ }
+ Dataset createdataset = dsResp.Output[0].Dataset;
+ ed1.WriteMessage("创建数据集完成\n");
+ //create relationship
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "";
+ one_rela.PrimaryObject = rev;
+ one_rela.SecondaryObject = createdataset;
+ one_rela.RelationType = "IMAN_specification";
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ ed1.WriteMessage("数据集关系创建成功!\n");
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+
+ DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n");
+
+ Document acdoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+
+
+ string mdiactivefile = acdoc.Name;
+ fileInfo.FileName = mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ fileInfo.NamedReferencedName = datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = createdataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ // Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1];
+ // inputs[0] = inputData;
+ // FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection());
+ // ServiceData response = fMSFileManagement.PutFiles(inputs);
+ // if (response.sizeOfPartialErrors() > 0)
+ // ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors());
+ ed1.WriteMessage("DateSet check in successful\n");
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = createdataset;
+ dmService.RefreshObjects(datasets);
+
+
+ //这里是刷新bom
+
+ if(bomlist.Count > 0)
+ {
+ DialogResult updateresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (updateresult == DialogResult.No || updateresult == DialogResult.None)
+ {
+ ed1.WriteMessage("放弃刷新BOM\n");
+ }
+ else
+ {
+ CreateBomStructure(rev, createdataset, bomlist, folder);
+ }
+ }
+
+
+ this.savefrom.Hide();
+ this.savefrom.Dispose();
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+
+
+ }
+ }
+ }
+ else
+ {
+ MessageBox.Show("请选择真实的文件夹!");
+ return;
+ }
+
+ }
+
+
+ [CommandMethod("LOGOUT")]
+ public void layout()
+ {
+ // DialogResult updateresult = MessageBox.Show("请确保您已经将文件保存!以免造成数据丢失!是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // if (updateresult == DialogResult.Yes)
+ // {
+ // savetotc();
+ // }
+ // else
+ // {
+ // loginuser = null;
+ // hadlogin = false;
+ // }
+
+ }
+
+ [CommandMethod("UPDATE_FROM_CAD")]
+ public void updateAttrFromCAD() {
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (hadlogin)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly)
+ {
+ MessageBox.Show("该文件为只读,不能更新属性!");
+ return;
+ }
+
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+
+ OriginReadXml readxml = new OriginReadXml();
+ ArrayList btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++)
+ {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+
+
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null)
+ {
+ MessageBox.Show("系统没有找到\"图号\"所对应的图纸信息,系统中断\n");
+ return;
+ }
+ Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ if (item != null )
+ {
+ DialogResult upresult = MessageBox.Show("找到对应标题栏Item,是否更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None)
+ {
+ ed1.WriteMessage("放弃更新\n");
+ return;
+ }
+ if (upresult == DialogResult.Yes)
+ {
+
+ ModelObject[] objects = { item };
+ string[] attributes = { "item_id", "object_name", "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+
+ //这个层级上需要增加对Item属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("Item"))
+ {
+ ed1.WriteMessage("正在更新Item属性\n");
+ Hashtable itemattrs = new Hashtable();
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Item" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:" + cadstring + "\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objects, itemattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新Item属性成功\n");
+ }
+ }
+ }
+
+ ModelObject[] objects1 = { item };
+ string[] attributes1 = { "revision_list", "is_modifiable" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ ModelObject[] revlist = item.Revision_list;
+ dmService.RefreshObjects(revlist);
+ ItemRevision itemRev = null;
+ string rev_id = "";
+ for (int k = 0; k < revlist.Length; k++)
+ {
+ itemRev = revlist[k] as ItemRevision;
+ ModelObject[] objects2 = { itemRev };
+ string[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+
+ //判断图纸上是否存在配置了版本信息,如果配置了版本信息,则处理指定的版本,否则,处理最新版本
+ if (btlinfo.Btltctable.ContainsValue("item_revision_id"))
+ {
+ if (itemRev.Item_revision_id == btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id")].ToString())
+ {
+ break;
+ }
+ }
+ }
+ if (itemRev == null)
+ {
+ ed1.WriteMessage("Item没有对应版本\n");
+ return;
+ }
+
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument);
+ string tempPDFPath = pdfdwg.MultiSheetPlot();
+ if (File.Exists(tempPDFPath)) {
+ ed.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ if (tempPDFPath.Length > 0) {
+ savePDFToTC(itemRev, tempPDFPath, pdfdwg.PrintDoc.Name.Substring(pdfdwg.PrintDoc.Name.LastIndexOf("\\") + 1), "PDF", "PDF_Reference");
+ }
+ }
+ else {
+ ed.WriteMessage("导出文件路径不存在:\n");
+
+ }
+
+
+
+
+ rev_id = itemRev.Item_revision_id;
+ ReleaseStatus[] releaselist = itemRev.Release_status_list;
+ if (!itemRev.Is_modifiable)
+ {
+ MessageBox.Show("ItemRevision为只读,您没有保存权限!");
+ return;
+ }
+ if (releaselist.Length > 0)
+ {
+ string message = "Item ID为" + itemRev.Item_id + "的最新版本已发布!";
+ MessageBox.Show(message);
+ return;
+ }
+
+ //这个层级上要增加对版本属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("ItemRevision"))
+ {
+ ed1.WriteMessage("正在更新ItemRevision属性\n");
+ Hashtable itemRevattrs = new Hashtable();
+ ModelObject[] olditemRev = new ModelObject[1];
+ olditemRev[0] = itemRev;
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:" + cadstring + "\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemRevattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemRevattrs.Count > 0)
+ {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(olditemRev, itemRevattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0)
+ {
+ ed1.WriteMessage("更新ItemRevision属性成功\n");
+ }
+ }
+ }
+
+ //更新表单信息
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec = new FormInfo[1];
+ ModelObject[] form_vec;
+ form_vec = itemRev.IMAN_master_form_rev;
+
+ if (form_vec!=null && form_vec.Length>0)
+ {
+
+ Form form = form_vec[0] as Form;
+ bool frash = false;
+ string[] props = new string[1];
+
+ Hashtable formAttrs = new Hashtable();
+
+ //如果配置了Form属性,则执行如下代码
+ if (btlinfo.Btltypetable.ContainsValue("Form"))
+ {
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Form" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:" + cadstring + "\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ string writestring = btlinfo.Btlwritetable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(form_vec, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = form.GetProperty(tcstring);
+ if (cadvalue != my_prop.StringValue)
+ {
+ if (my_prop.StringValue == "")
+ frash = true;
+ else
+ {
+ string message = "当前标题栏图纸:" + cadstring + "属性值" + cadvalue + "与系统内:" + tcstring + "属性值" + my_prop.StringValue + "不一致,是否覆盖系统内属性?";
+ DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (updateresult == DialogResult.Yes)
+ {
+ frash = true;
+ }
+ }
+ string[] formAttrValue = new string[1];
+ formAttrValue[0] = "";
+ if (frash)
+ formAttrValue[0] = cadvalue;
+ else
+ formAttrValue[0] = my_prop.StringValue;
+ ed1.WriteMessage(tcstring + ":" + formAttrValue[0] + "\n");
+ formAttrs.Add(tcstring, formAttrValue);
+ props[0] = "";
+ }
+
+ }
+ }
+ }
+
+ ed1.WriteMessage("formAttrs:" + formAttrs.Count + "\n");
+
+ foreach (DictionaryEntry hash in formAttrs)
+ {
+ ed1.WriteMessage(hash.Key + ":" + Convert.ToString(hash.Value) + "\n");
+ }
+
+
+ forminfo.AttributesMap = formAttrs;
+ forminfo.ClientId = "1";
+ forminfo.Description = "";
+ forminfo.FormObject = (Form)form;
+ //forminfo.Name = item_id + "/" + rev_id;
+ //forminfo.ParentObject = null;
+ //forminfo.RelationName = "IMAN_master_form";
+ forminfo.SaveDB = true;
+ //forminfo.FormType = "ItemRevision Master";
+ forminfo_vec[0] = forminfo;
+ try
+ {
+ ed1.WriteMessage("开始更新\n");
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.CreateOrUpdateFormsResponse formResp =
+ dmService.CreateOrUpdateForms(forminfo_vec);
+ ModelObject[] respon = { formResp.ServiceData.GetUpdatedObject(0) };
+ dmService.RefreshObjects(respon);
+ MessageBox.Show("更新属性到TC完成\n");
+
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ [CommandMethod("SAVE_PDF_TO_TC")]
+ public void savePDFToTcCommand() {
+ Document doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ doc.SendStringToExecute("QSAVE\r", false, false, false);
+ KUtil.WriteLog("\r\n>>>QSAVE\r\n");
+ doc.SendStringToExecute("SAVE_PDF_TO_TC_WITHOUT_SAVE\r", false, false, false);
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("SAVE_PDF_TO_TC_WITHOUT_SAVE\r");
+ }
+
+ [CommandMethod("SAVE_PDF_TO_TC_WITHOUT_SAVE")]
+ public void savePDFToTc() {
+ KUtil.WriteLog("\r\n>>>SAVE_PDF_TO_TC_WITHOUT_SAVE\r\n");
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else {
+ KUtil.WriteLog("用户未登录");
+ login();
+ }
+
+ if (hadlogin) {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ //AcAp.DocumentManager.MdiActiveDocument
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly) {
+ MessageBox.Show("该文件为只读,不能生成PDF!");
+ return;
+ }
+
+ //ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ KUtil.WriteLog("开始获取标题栏信息...");
+ OriginReadXml readxml = new OriginReadXml();
+ ArrayList btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ //for (int i = 0; i < btllist.Count; i++) {
+ // OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ // ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ // ed1.WriteMessage("标题栏详细信息:" + "\n");
+ // foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ // ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ // "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ // "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ // "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ // }
+ //}
+
+
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ KUtil.WriteLog("系统没有找到\"图号\"所对应的图纸信息,系统中断...");
+ MessageBox.Show("系统没有找到\"图号\"所对应的图纸信息,系统中断\n");
+ return;
+ }
+ Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ if (item != null) {
+ ed1.WriteMessage("item_id=" + btlinfo.Btldatatable[key].ToString()+"\n");
+ KUtil.WriteLog("找到对象 id = " + btlinfo.Btldatatable[key].ToString());
+ DialogResult upresult = MessageBox.Show("找到对应标题栏Item,是否进行转换?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ //ed1.WriteMessage("放弃更新\n");
+ KUtil.WriteLog("用户放弃更新");
+ return;
+ }
+ if (upresult == DialogResult.Yes) {
+ ModelObject[] objects1 = { item };
+ string[] attributes1 = { "revision_list", "is_modifiable" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ ModelObject[] revlist = item.Revision_list;
+ dmService.RefreshObjects(revlist);
+ ItemRevision itemRev = null;
+ string rev_id = "";
+ for (int k = 0; k < revlist.Length; k++) {
+ itemRev = revlist[k] as ItemRevision;
+ ModelObject[] objects2 = { itemRev };
+ string[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+
+ //判断图纸上是否存在配置了版本信息,如果配置了版本信息,则处理指定的版本,否则,处理最新版本
+ if (btlinfo.Btltctable.ContainsValue("item_revision_id")) {
+ if (itemRev.Item_revision_id == btlinfo.Btldatatable[origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id")].ToString()) {
+ KUtil.WriteLog("找到对应版本:"+itemRev.Item_revision_id);
+ break;
+ }
+ }
+ }
+ if (itemRev == null) {
+ KUtil.WriteLog("Item没有对应版本");
+ //ed1.WriteMessage("Item没有对应版本\n");
+ return;
+ }
+
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ KUtil.WriteLog("开始转换PDF...");
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument);
+ string tempPDFPath = pdfdwg.MultiSheetPlot();
+ if (File.Exists(tempPDFPath)) {
+ KUtil.WriteLog("PDF文件路径:" + tempPDFPath);
+ KUtil.WriteLog("DWG文件路径:" + pdfdwg.PrintDoc.Name);
+ //ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ //ed1.WriteMessage("DWG文件路径:" + pdfdwg.PrintDoc.Name + "。\n");
+ string datasetName;
+ int index = pdfdwg.PrintDoc.Name.LastIndexOf("\\");
+ if (index >= 0) {
+ datasetName = pdfdwg.PrintDoc.Name.Substring(index + 1);
+ }
+ else {
+ datasetName = pdfdwg.PrintDoc.Name;
+ }
+ KUtil.WriteLog("图纸文件名称:"+datasetName);
+ //ed1.WriteMessage("DWG文件名称:" + datasetName + "。\n");
+ if (tempPDFPath.Length > 0) {
+ //((Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication).ActiveDocument.SendCommand("QSAVE\r");
+ savePDFToTC(itemRev, tempPDFPath, datasetName, "PDF", "PDF_Reference");
+ //删除临时文件
+ //try {
+ // if (File.Exists(tempPDFPath)) {
+ // File.Delete(tempPDFPath);
+ // //ed1.WriteMessage("临时文件删除成功\n");
+ // KUtil.WriteLog("临时文件删除成功");
+ // }
+ //}
+ //catch (System.Exception ex) {
+ // ed1.WriteMessage("临时文件删除失败\n");
+ // ed1.WriteMessage(ex.Message);
+ //}
+ }
+ }
+ else {
+ KUtil.WriteLog("PDF转换失败,文件不存在");
+ ed1.WriteMessage("PDF转换失败,文件不存在\n");
+ }
+ }
+ }
+ else {
+ if (btlinfo.Btldatatable[key].ToString() != null && btlinfo.Btldatatable[key].ToString().Length > 0) {
+ KUtil.WriteLog("没有找到对应标题栏Item:" + btlinfo.Btldatatable[key].ToString());
+ MessageBox.Show("没有找到对应标题栏Item:" + btlinfo.Btldatatable[key].ToString() + "\n");
+ }
+ }
+ }
+ }
+ }
+
+ [CommandMethod("UPDATE_BOM_FROM_CAD")]
+ public void updateBomFromCAD()
+ {
+ try
+ {
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (hadlogin)
+ {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++)
+ {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ for (int i = 0; i < mxllist.Count; i++)
+ {
+ OriginMXL mxlinfo = mxllist[i];
+ ed1.WriteMessage("明细栏块参照名称:" + mxlinfo.Mxlname + "\n");
+ ed1.WriteMessage("明细栏" + i + "详细信息:" + "\n");
+ foreach (DictionaryEntry de in mxlinfo.Mxldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + mxlinfo.Mxltctable[de.Key] +
+ "\tis_bomline:" + mxlinfo.Mxlisbomtable[de.Key] +
+ "\twritable:" + mxlinfo.Mxlupdatetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("明细栏个数为:" + mxllist.Count);
+ ed1.WriteMessage("开始为bom结构排序\n");
+ //mxllist = origintool.sortbomlist(mxllist);
+ ed1.WriteMessage("排序成功...\n");
+
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+
+ if (key == null || rev == null)
+ {
+ MessageBox.Show(string.Format("没有找到\"图号\"或者\"版本号\"!"));
+ return;
+ }
+ Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ ItemRevision itemRev = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString(), btlinfo.Btldatatable[rev].ToString());
+ if (item != null && itemRev != null)
+ {
+
+ //创建BOM
+ if (mxllist.Count > 0)
+ {
+ DialogResult flushbomresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (flushbomresult == DialogResult.Yes)
+ {
+
+ CreateBomStructure(itemRev, null, mxllist, null);
+ }
+ }
+
+ }
+ else
+ {
+ MessageBox.Show(string.Format("没有找到\"图号[{0}]\"或者\"版本号[{1}][\"!", key, rev));
+ }
+ }
+ }
+ }catch(SystemException ex1){
+ MessageBox.Show(string.Format("更新BOM出现异常\n{0}",ex1.StackTrace));
+ }
+ }
+
+
+
+
+
+ [CommandMethod("UPDATE_FROM_TC")]
+ public void updateFromTc()
+ {
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (hadlogin)
+ {
+ getFilePuid();
+
+ string itemID = null;
+ string itemRev2 = null;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly)
+ {
+ MessageBox.Show("该文件为只读,不能更新属性!");
+ return;
+ }
+ OriginTool origintool = new OriginTool();
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++)
+ {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] +
+ "\t可同步:"+onebtlinfo.Btlfromtctable[de.Key] +"\n");
+ }
+ }
+
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object key_rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key == null)
+ {
+ ed1.WriteMessage("系统没有找到item_id所对应的图纸信息,系统中断\n");
+ return;
+ }
+ if (key_rev == null)
+ {
+ ed1.WriteMessage("系统没有找到item_revision_id所对应的图纸信息,系统中断\n");
+ return;
+ }
+ itemID = btlinfo.Btldatatable[key].ToString();
+ if (itemID == null || itemID.Trim().Equals(""))
+ {
+ ed1.WriteMessage("获取的Item信息为空,系统继续循环\n");
+ continue;
+ }
+ itemRev2 = btlinfo.Btldatatable[key_rev].ToString();
+ // SavedQueryResults found = origintool.getSearchItem(btlinfo.Btldatatable[key].ToString());
+ Console.Out.WriteLine(string.Format("ID=>{0} REV=>{1}", itemID, itemRev2));
+ //SavedQueryResults found = origintool.getSearchItem(itemID);
+
+ Item item = origintool.wxGetItem(itemID);//found.Objects[i] as Item;
+ // ItemRevision itemRevision = origintool.wxGetItem(itemID, itemRev2);
+ if (item ==null)
+ {
+ return;
+ }
+ ModelObject[] objects = { item };
+ string[] attributes = { "item_id", "object_name", "object_string" ,"object_type","Uid"};
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+
+
+
+
+ string item_id = item.Item_id;
+ GetItemFromIdInfo tempitem = new GetItemFromIdInfo();
+ tempitem.ItemId = itemID;
+ GetItemFromIdInfo[] infos = new GetItemFromIdInfo[1];
+ infos[0] = tempitem;
+ GetItemFromIdPref pref = new GetItemFromIdPref();
+ //这里可能要换成新的方式
+ //GetItemFromIdResponse infoResp = dmService.getitemGetItemFromId(infos, 1, pref);
+
+ //准备写到CAD图纸上的信息
+ Hashtable tempvaluetable = new Hashtable();
+
+ //准备写U8编码到CAD图纸上的
+ Hashtable u8valuetable = new Hashtable();
+
+ //获取Item上的属性
+ if (btlinfo.Btltypetable.ContainsValue("Item"))
+ {
+ ed1.WriteMessage("正在同步Item属性\n");
+
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Item" && btlinfo.Btlfromtctable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ string[] props = new string[1];
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(objects, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = item.GetProperty(tcstring);
+ string tempcadvalue = KUtil.GetPropValue(my_prop);// my_prop.StringValue.ToString();
+ if (tcstring == "object_name") {
+ tempcadvalue = my_prop.DisplayableValue.ToString();
+ ed1.WriteMessage("###名称显示值:"+tempcadvalue);
+ }
+ ed1.WriteMessage("TC系统中的属性" + tcstring + "值为 :" + tempcadvalue + "\n");
+ if (cadvalue != tempcadvalue)
+ {
+ origintool.TableHasKey(tempvaluetable, cadstring, tempcadvalue);
+ }
+ }
+ }
+ }
+
+ //获得版本上的属性
+ // for (int j = 0; j < infoResp.Output.Length; j++)
+ // {
+ ModelObject[] objects1 = { item };
+ string[] attributes1 = { "revision_list", "is_modifiable" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ ModelObject[] revlist = item.Revision_list;
+ dmService.RefreshObjects(revlist);
+ ItemRevision itemRev = null;
+ string rev_id = "";
+ //= new ModelObject[]
+ for (int k = 0; k < revlist.Length; k++)
+ {
+ string[] attr = { "item_revision_id" };
+
+ itemRev = revlist[k] as ItemRevision;
+ ModelObject[] obj2 = { itemRev };
+ dmService.RefreshObjects(obj2);
+ dmService.GetProperties(obj2, attr);
+ rev_id = itemRev.Item_revision_id;
+ if (rev_id.Equals(itemRev2)) {
+ break;
+ }
+
+ }
+ if (itemRev == null)
+ {
+ ed1.WriteMessage("Item没有对应版本\n");
+ return;
+ }
+ //getFiles(itemRev);
+ ModelObject[] objects2 = { itemRev };
+ string[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ rev_id = itemRev.Item_revision_id;
+ if (!rev_id.Equals(itemRev2))
+ {
+ ed1.WriteMessage("Item[" + rev_id + "]没有对应[" + itemRev2 + "]版本\n");
+ continue;
+ }
+ ed1.WriteMessage("Item[" + rev_id + "]找到对应[" + itemRev2 + "]版本\n");
+
+ ReleaseStatus[] releaselist = itemRev.Release_status_list;
+ // if (!itemRev.Is_modifiable)
+ // {
+ // MessageBox.Show("ItemRevision为只读,您没有保存权限!");
+ // return;
+ // }
+ if (releaselist.Length > 0)
+ {
+ string message = "Item ID为" + itemRev.Item_id + "的最新版本已发布!";
+ MessageBox.Show(message);
+ return;
+ }
+
+ if (btlinfo.Btltypetable.ContainsValue("ItemRevision"))
+ {
+ ed1.WriteMessage("正在同步ItemRevision属性\n");
+
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlfromtctable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ string[] props = new string[1];
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(objects2, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = itemRev.GetProperty(tcstring);
+ string tempcadvalue = KUtil.GetPropValue(my_prop);// my_prop.StringValue.ToString();
+ if (tcstring == "object_name") {
+ tempcadvalue = my_prop.DisplayableValue.ToString();
+ ed1.WriteMessage("###名称显示值:" + tempcadvalue);
+ }
+ ed1.WriteMessage("TC系统中的属性" + tcstring + "值为 :" + tempcadvalue+"\n");
+ if (cadvalue != tempcadvalue)
+ {
+ if (!cadstring.Equals("U8编码"))
+ {
+ origintool.TableHasKey(tempvaluetable, cadstring, tempcadvalue);
+ }else{
+ origintool.TableHasKey(u8valuetable, cadstring, tempcadvalue);
+ }
+ }
+ }
+ }
+ }
+
+ //获得版本表单上的属性
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec = new FormInfo[1];
+ ModelObject[] form_vec;
+
+ form_vec = itemRev.IMAN_master_form_rev;
+ dmService.RefreshObjects(form_vec);
+ for (int k = 0; k < form_vec.Length; k++)
+ {
+ Form form = form_vec[k] as Form;
+ if (btlinfo.Btltypetable.ContainsValue("Form"))
+ {
+ ed1.WriteMessage("正在同步ItemRevision主表单属性\n");
+
+ foreach (DictionaryEntry de in btlinfo.Btltypetable)
+ {
+ if (de.Value.ToString() == "Form" && btlinfo.Btlfromtctable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ string[] props = new string[1];
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(form_vec, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = form.GetProperty(tcstring);
+ string tempcadvalue = KUtil.GetPropValue(my_prop);// my_prop.StringValue.ToString();
+ ed1.WriteMessage("TC系统中的属性" + tcstring + "值为 :" + tempcadvalue + "\n");
+ if (cadvalue != tempcadvalue)
+ {
+ origintool.TableHasKey(tempvaluetable, cadstring, tempcadvalue);
+ }
+ }
+ }
+ }
+ }
+ // }
+ //这里已经将需要同步的数据收集完毕
+ foreach (DictionaryEntry de in tempvaluetable)
+ {
+ ed1.WriteMessage("CAD属性:"+de.Key.ToString()+"\t值:"+de.Value.ToString() +"\n");
+ }
+ //将数据写入CAD图纸
+ origintool.SetTitleInfo(btlinfo.Btlname, tempvaluetable);//
+
+ //origintool.TableHasKey(u8valuetable, "WX-TH", itemID);
+ //origintool.SetTitleInfo_v1("图号", u8valuetable);
+ break;
+
+ }
+ }
+ }
+ ///
+ /// 双击打开数据集的时候就会把item的信息写入到缓存中
+ /// 获取item的信息
+ ///
+ ///
+ public void getItemInfo()
+ {
+ MessageBox.Show("123");
+ string name = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Name;
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ int index = name.LastIndexOf("\\");
+ if (index >= 0) {
+ name =name.Substring(index + 1);
+ }
+ name = name.Split('.')[0];
+ ed.WriteMessage("文件名称:"+name);
+ // ItemMsgBean bean = null;
+ string[] itemInfoMsg = null;
+ string tempPath = System.Environment.GetEnvironmentVariable("TEMP");
+ if (tempPath!=null)
+ {
+ tempPath = tempPath + "\\open_cad_info.txt";
+ if (!File.Exists(tempPath))
+ {
+ return;
+ }
+ FileStream fs = null;
+ StreamReader sr = null;
+ fs = new FileStream(tempPath, FileMode.Open, FileAccess.Read);
+ if (fs != null)
+ {
+ sr = new StreamReader(fs);
+ if(sr!=null){
+ string tcMsg = sr.ReadLine();
+ itemInfoMsg = tcMsg.Split('|');
+ if (itemInfoMsg != null && itemInfoMsg.Length ==2)
+ {
+ itemBean = new ItemMsgBean();
+ itemBean.ItemId = itemInfoMsg[0];
+ itemBean.ItemRev = itemInfoMsg[1];
+ }
+ sr.Close();
+ }
+ fs.Close();
+ }
+ }
+ //读取文件后将文件删除,保证文件之用一次
+ try
+ {
+ if (File.Exists(tempPath))
+ File.Delete(tempPath);
+ }catch(System.Exception ex){
+ ed.WriteMessage(ex.Message);
+ }
+ return ;
+ }
+
+ [CommandMethod("SET_READ_ONLY")]
+ public void setReadOnly()
+ {
+ //DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ try
+ {
+ DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;
+ Document acNewDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ // DocumentLock docLock = acNewDoc.LockDocument();
+
+ Database acDbNewDoc = acNewDoc.Database;
+
+ // 锁定新文档 Lock the new document
+ using (DocumentLock acLckDoc = acNewDoc.LockDocument())
+ {
+ // 在新数据库中启动事务 Start a transaction in the new database
+ using (Transaction acTrans = acDbNewDoc.TransactionManager.StartTransaction())
+ {
+ //acTrans.GetObject(acDbNewDoc., OpenMode.ForRead);
+ }
+ }
+ ed1.WriteMessage("锁定当前文档");
+
+
+ }catch(SystemException ex){
+ ed1.WriteMessage("锁定文档异常:" + ex);
+ }
+
+ }
+
+ ///
+ /// 保存BOM到CAD中
+ ///
+ [CommandMethod("UPDATE_BOM_FROM_TC")]
+ public void updateBomFromTc() {
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (!hadlogin) {
+ return;
+ }
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly) {
+ MessageBox.Show("该文件为只读,不能更新BOM!");
+ return;
+ }
+ string itemID = null;
+ string itemRev = null;
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ string bili = null;
+
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ OriginTool origintool = new OriginTool();
+ for (int i = 0; i < btllist.Count; i++) {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] +
+ "\t可同步:" + onebtlinfo.Btlfromtctable[de.Key] + "\n");
+ }
+ }
+
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object key_rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ object myBili = origintool.getKeyFromValue(btlinfo.Btltctable, "cadbili");
+
+ if (key == null) {
+ ed1.WriteMessage("系统没有找到item_id所对应的图纸信息,系统中断\n");
+ continue;
+ }
+ if (key_rev == null) {
+ ed1.WriteMessage("系统没有找到item_revision_id所对应的图纸信息,系统中断\n");
+ continue;
+ }
+ if (!btlinfo.Btldatatable[key].ToString().Trim().Equals(""))
+ itemID = btlinfo.Btldatatable[key].ToString();
+ if (!btlinfo.Btldatatable[key_rev].ToString().Trim().Equals(""))
+ itemRev = btlinfo.Btldatatable[key_rev].ToString();
+ if (myBili != null && !btlinfo.Btldatatable[myBili].ToString().Trim().Equals("")) {
+ bili = btlinfo.Btldatatable[myBili].ToString();
+ }
+
+
+ }
+
+ if (itemID == null || itemRev == null) {
+ MessageBox.Show("没有找到对象的信息,结束BOM更新!", "提示");
+ return;
+
+ }
+
+ //==========================
+ if (loginuser != null) {
+ hadlogin = true;
+ }
+ else {
+ login();
+ }
+ if (!hadlogin) {
+ ed1.WriteMessage("请重新登录\n");
+ // return;
+ }
+ else {
+ OriginTool tool = new OriginTool();
+ // SavedQueryResults found =
+ Item item = tool.wxGetItem(itemID); //origintool.getSearchItem(itemID);tool.getSearchItemRev(itemID, itemRev);
+ if (item == null) {
+ ed1.WriteMessage("没有找到对应的[ ItemID = " + itemID + " ItemRevsionID = " + itemRev + " ]的零组件版本\n");
+ return;
+ }
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ ItemRevision revision = tool.wxGetItem(itemID, itemRev);
+ if (revision != null) {
+ DataManagementService dmservice = DataManagementService.getService(Session.getConnection());
+ List qryObjList = new List();
+ // qryObjList.Add();
+ qryObjList.Add(revision);
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "items_tag", "object_type" });
+
+ qryObjList.Clear();
+ qryObjList.Add(item);
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "bom_view_tags" });
+ ModelObject[] boms = item.Bom_view_tags;//获取BOMVIEW
+ if (boms == null || boms.Length < 1)//如果bomview为空或者数量为0则退出
+ {
+ ed1.WriteMessage("没有找到BOMVIEW \n");
+ MessageBox.Show("没有找到BOMVIEW,结束BOM更新!", "提示");
+ return;
+ }
+
+
+ Teamcenter.Services.Strong.Cad.StructureManagementService service = Services.Strong.Cad.StructureManagementService.getService(Session.getConnection());
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RevisionRuleInfo latestRevRuleInfo = null;
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.GetRevisionRulesResponse grrrResp = service.GetRevisionRules();
+ if (grrrResp == null || grrrResp.Output.Length < 1) {
+ ed1.WriteMessage("没有找到版本规则 \n");
+ return;
+ }
+ qryObjList.Clear();
+ for (int i = 0; i < grrrResp.Output.Length; i++) {
+ qryObjList.Add(grrrResp.Output[i].RevRule);
+
+ }
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "object_name" });
+ for (int i = 0; i < grrrResp.Output.Length; i++) {
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RevisionRuleInfo oneRRInfo = grrrResp.Output[i];
+ if (oneRRInfo.RevRule.Object_name.Equals("Latest Working")) {
+ latestRevRuleInfo = oneRRInfo;
+ }
+ }
+ if (latestRevRuleInfo == null) {
+ ed1.WriteMessage("没有找到latestRevRuleInfo \n");
+ return;
+ }
+ Soa.Client.Model.Strong.PSBOMView bomView = boms[0] as Soa.Client.Model.Strong.PSBOMView;
+ dmService.RefreshObjects(new ModelObject[] { bomView, item, revision });
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo[] bomInfos = new Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo[1];
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo oneBom = new Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo();
+ oneBom.ActiveAssemblyArrangement = null;
+ oneBom.BomView = bomView;
+ oneBom.Item = item;
+ oneBom.ItemRev = revision;
+ oneBom.ObjectForConfigure = null;
+ oneBom.RevRuleConfigInfo.Props.Date = new DateTime();
+ oneBom.RevRuleConfigInfo.Props.EndItem = null;
+ oneBom.RevRuleConfigInfo.Props.EndItemRevision = null;
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo overrideInfo = new Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo();
+ overrideInfo.Folder = null;
+ overrideInfo.RuleEntry = null;
+ oneBom.RevRuleConfigInfo.Props.OverrideFolders = new Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo[] { overrideInfo };
+
+ oneBom.RevRuleConfigInfo.Props.Today = false;
+ oneBom.RevRuleConfigInfo.Props.UnitNo = 0;
+ oneBom.RevRuleConfigInfo.RevRule = latestRevRuleInfo.RevRule;
+ bomInfos[0] = oneBom;
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsResponse cbomCreateResp = service.CreateBOMWindows(bomInfos);
+ if (cbomCreateResp == null || cbomCreateResp.Output.Length < 1) {
+ ed1.WriteMessage("创建BOM失败\n");
+ MessageBox.Show("创建BOM失败,结束BOM更新!", "提示");
+ return;
+ }
+ Teamcenter.Soa.Client.Model.Strong.BOMWindow[] bomwindows = new Soa.Client.Model.Strong.BOMWindow[1];
+
+ Teamcenter.Soa.Client.Model.Strong.BOMWindow bomwindow = cbomCreateResp.Output[0].BomWindow;
+ bomwindows[0] = bomwindow;
+ Teamcenter.Soa.Client.Model.Strong.BOMLine topBomline = cbomCreateResp.Output[0].BomLine;
+ qryObjList.Clear();
+ qryObjList.Add(topBomline);
+ dmService.RefreshObjects(new ModelObject[] { topBomline });
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "bl_child_lines", "bl_child_item", "bl_all_child_lines", "bl_line_object" });
+
+ ModelObject[] allChildLines = topBomline.Bl_child_lines;
+ if (allChildLines == null || allChildLines.Length < 0) {
+ ed1.WriteMessage("没有BOM结构\n");
+ MessageBox.Show("没有BOM结构,结束BOM更新!", "提示");
+ service.CloseBOMWindows(bomwindows);
+ return;
+ }
+ List bomMsgList = new List();
+
+ //
+ //
+ ed1.WriteMessage("得到的ChildLines的数量:=" + allChildLines.Length + "\n");
+ try {
+ getBomStruct(dmService, 1, topBomline, bomMsgList);
+ }
+ catch (System.Exception ex) {
+ MessageBox.Show("读取BOM信息时发生异常:" + ex.Message);
+ service.CloseBOMWindows(bomwindows);
+ return;
+ }
+
+ for (int i = 0; i < bomMsgList.Count; i++) {
+ BomMsgBean chidLineMsg = bomMsgList[i];
+ ed1.WriteMessage(chidLineMsg.toString());
+
+ }
+ service.CloseBOMWindows(bomwindows);
+ // OriginTool tool = new OriginTool();
+ bool isOk = tool.insertBomMXL(bomMsgList, bili, "CHINTMX", "CHINTMXL");
+ //if (!isOk) {
+ // tool.insertBomMXL(bomMsgList, bili, "GC-CHINTMX", "GC-CHINTMXL");
+ //}
+ ed1.WriteMessage("明细表结构创建完毕\n");
+ MessageBox.Show("明细表结构创建完毕,BOM更新完成!", "提示");
+
+ }
+ }
+ }
+
+
+ ///
+ /// 保存BOM到CAD中
+ ///
+ [CommandMethod("GC_UPDATE_BOM_FROM_TC")]
+ public void gc_updateBomFromTc() {
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ login();
+ if (!hadlogin) {
+ return;
+ }
+ Document document2 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ if (document2.IsReadOnly)
+ {
+ MessageBox.Show("该文件为只读,不能更新BOM!");
+ return;
+ }
+ string itemID = null;
+ string itemRev = null;
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ string bili = null;
+
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ OriginTool origintool = new OriginTool();
+ for (int i = 0; i < btllist.Count; i++)
+ {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable)
+ {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] +
+ "\t可同步:"+onebtlinfo.Btlfromtctable[de.Key] +"\n");
+ }
+ }
+
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object key_rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ object myBili = origintool.getKeyFromValue(btlinfo.Btltctable, "cadbili");
+
+ if (key == null)
+ {
+ ed1.WriteMessage("系统没有找到item_id所对应的图纸信息,系统中断\n");
+ continue;
+ }
+ if (key_rev == null)
+ {
+ ed1.WriteMessage("系统没有找到item_revision_id所对应的图纸信息,系统中断\n");
+ continue;
+ }
+ if (!btlinfo.Btldatatable[key].ToString().Trim().Equals(""))
+ itemID = btlinfo.Btldatatable[key].ToString();
+ if (!btlinfo.Btldatatable[key_rev].ToString().Trim().Equals(""))
+ itemRev = btlinfo.Btldatatable[key_rev].ToString();
+ if (myBili !=null && !btlinfo.Btldatatable[myBili].ToString().Trim().Equals(""))
+ {
+ bili = btlinfo.Btldatatable[myBili].ToString();
+ }
+
+
+
+ }
+
+ if (itemID == null || itemRev == null)
+ {
+ MessageBox.Show("没有找到对象的信息,结束BOM更新!", "提示");
+ return;
+
+ }
+
+ //==========================
+ if (loginuser != null)
+ {
+ hadlogin = true;
+ }
+ else
+ {
+ login();
+ }
+ if (!hadlogin)
+ {
+ ed1.WriteMessage("请重新登录\n");
+ // return;
+ }
+ else
+ {
+ OriginTool tool = new OriginTool();
+ // SavedQueryResults found =
+ Item item = tool.wxGetItem(itemID); //origintool.getSearchItem(itemID);tool.getSearchItemRev(itemID, itemRev);
+ if (item == null)
+ {
+ ed1.WriteMessage("没有找到对应的[ ItemID = " + itemID + " ItemRevsionID = " + itemRev + " ]的零组件版本\n");
+ return;
+ }
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ ItemRevision revision = tool.wxGetItem(itemID, itemRev);
+ if (revision != null)
+ {
+ DataManagementService dmservice = DataManagementService.getService(Session.getConnection());
+ List qryObjList = new List();
+ // qryObjList.Add();
+ qryObjList.Add(revision);
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "items_tag" ,"object_type"});
+
+ qryObjList.Clear();
+ qryObjList.Add(item);
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "bom_view_tags" });
+ ModelObject[] boms = item.Bom_view_tags;//获取BOMVIEW
+ if (boms == null || boms.Length < 1)//如果bomview为空或者数量为0则退出
+ {
+ ed1.WriteMessage("没有找到BOMVIEW \n");
+ MessageBox.Show("没有找到BOMVIEW,结束BOM更新!", "提示");
+ return;
+ }
+
+
+ Teamcenter.Services.Strong.Cad.StructureManagementService service = Services.Strong.Cad.StructureManagementService.getService(Session.getConnection());
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RevisionRuleInfo latestRevRuleInfo = null;
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.GetRevisionRulesResponse grrrResp = service.GetRevisionRules();
+ if (grrrResp == null || grrrResp.Output.Length < 1)
+ {
+ ed1.WriteMessage("没有找到版本规则 \n");
+ return;
+ }
+ qryObjList.Clear();
+ for (int i = 0; i < grrrResp.Output.Length; i++)
+ {
+ qryObjList.Add(grrrResp.Output[i].RevRule);
+
+ }
+ dmservice.RefreshObjects(qryObjList.ToArray());
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "object_name" });
+ for (int i = 0; i < grrrResp.Output.Length; i++)
+ {
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RevisionRuleInfo oneRRInfo = grrrResp.Output[i];
+ if (oneRRInfo.RevRule.Object_name.Equals("Latest Working"))
+ {
+ latestRevRuleInfo = oneRRInfo;
+ }
+ }
+ if (latestRevRuleInfo == null)
+ {
+ ed1.WriteMessage("没有找到latestRevRuleInfo \n");
+ return;
+ }
+ Soa.Client.Model.Strong.PSBOMView bomView = boms[0] as Soa.Client.Model.Strong.PSBOMView;
+ dmService.RefreshObjects(new ModelObject[] { bomView ,item,revision});
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo[] bomInfos = new Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo[1];
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo oneBom = new Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsInfo();
+ oneBom.ActiveAssemblyArrangement = null;
+ oneBom.BomView = bomView;
+ oneBom.Item = item;
+ oneBom.ItemRev = revision;
+ oneBom.ObjectForConfigure = null;
+ oneBom.RevRuleConfigInfo.Props.Date = new DateTime();
+ oneBom.RevRuleConfigInfo.Props.EndItem = null;
+ oneBom.RevRuleConfigInfo.Props.EndItemRevision = null;
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo overrideInfo = new Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo();
+ overrideInfo.Folder = null;
+ overrideInfo.RuleEntry = null;
+ oneBom.RevRuleConfigInfo.Props.OverrideFolders = new Services.Strong.Cad._2007_01.StructureManagement.OverrideInfo[] { overrideInfo };
+
+ oneBom.RevRuleConfigInfo.Props.Today = false;
+ oneBom.RevRuleConfigInfo.Props.UnitNo = 0;
+ oneBom.RevRuleConfigInfo.RevRule = latestRevRuleInfo.RevRule;
+ bomInfos[0] = oneBom;
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateBOMWindowsResponse cbomCreateResp = service.CreateBOMWindows(bomInfos);
+ if (cbomCreateResp == null || cbomCreateResp.Output.Length < 1)
+ {
+ ed1.WriteMessage("创建BOM失败\n");
+ MessageBox.Show("创建BOM失败,结束BOM更新!", "提示");
+ return;
+ }
+ Teamcenter.Soa.Client.Model.Strong.BOMWindow[] bomwindows = new Soa.Client.Model.Strong.BOMWindow[1];
+
+ Teamcenter.Soa.Client.Model.Strong.BOMWindow bomwindow = cbomCreateResp.Output[0].BomWindow;
+ bomwindows[0] = bomwindow;
+ Teamcenter.Soa.Client.Model.Strong.BOMLine topBomline = cbomCreateResp.Output[0].BomLine;
+ qryObjList.Clear();
+ qryObjList.Add(topBomline);
+ dmService.RefreshObjects(new ModelObject[] { topBomline });
+ dmservice.GetProperties(qryObjList.ToArray(), new string[] { "bl_child_lines", "bl_child_item", "bl_all_child_lines","bl_line_object" });
+
+ ModelObject[] allChildLines = topBomline.Bl_child_lines;
+ if (allChildLines == null || allChildLines.Length < 0)
+ {
+ ed1.WriteMessage("没有BOM结构\n");
+ MessageBox.Show("没有BOM结构,结束BOM更新!", "提示");
+ service.CloseBOMWindows(bomwindows);
+ return;
+ }
+ List bomMsgList = new List();
+
+ //
+ //
+ ed1.WriteMessage("得到的ChildLines的数量:=" + allChildLines.Length + "\n");
+ try {
+ GC_GetBomStruct(dmService, 1, topBomline, bomMsgList);
+ }
+ catch (System.Exception ex) {
+ MessageBox.Show("读取BOM信息时发生异常:"+ex.Message);
+ service.CloseBOMWindows(bomwindows);
+ return;
+ }
+
+ for (int i = 0; i < bomMsgList.Count; i++)
+ {
+ BomMsgBean chidLineMsg = bomMsgList[i];
+ ed1.WriteMessage(chidLineMsg.toString());
+
+ }
+ service.CloseBOMWindows(bomwindows);
+ // OriginTool tool = new OriginTool();
+ bool isOk = tool.insertBomMXL(bomMsgList, bili,"CHINTTRMX","CHINTTRMXL");
+ //if (!isOk) {
+ // tool.insertBomMXL(bomMsgList, bili, "GC-CHINTMX", "GC-CHINTMXL");
+ //}
+ ed1.WriteMessage("明细表结构创建完毕\n");
+ MessageBox.Show("明细表结构创建完毕,BOM更新完成!", "提示");
+
+ }
+ }
+ }
+
+ //抛出异常信息
+ public static void ThrowServiceDataError(string prefix,ServiceData data) {
+ if (data.sizeOfPartialErrors() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < data.sizeOfPartialErrors(); i++) {
+ foreach (string msg in data.GetPartialError(i).Messages) {
+ sb.Append(msg + "\n");
+ }
+ }
+ if (sb.Length > 0) {
+ throw new System.Exception(prefix+sb.ToString());
+ }
+ }
+ }
+
+ ///
+ /// 获取BOM结构提取bom信息到明细表
+ ///
+ ///
+ ///
+ ///
+ ///
+ private void getBomStruct(DataManagementService dmService ,int index, Teamcenter.Soa.Client.Model.Strong.BOMLine topBomline , List bomMsgList)
+ {
+ dmService.RefreshObjects(new ModelObject[] { topBomline });
+ dmService.GetProperties(new ModelObject[] { topBomline }, new string[] { "bl_child_lines" });
+ //Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ ModelObject[] allChildLines = topBomline.Bl_child_lines;
+ if (allChildLines == null || allChildLines.Length < 1)
+ {
+ return;
+ }
+ dmService.RefreshObjects(allChildLines);
+ ServiceData sd = dmService.GetProperties(allChildLines, new string[] {"zt2_MaterialMark", "ZT2_xuhao", "bl_item_item_id", "bl_rev_object_name", "bl_quantity", "ZT2_Remark", "zt2_Specifications" });
+ ThrowServiceDataError("加载属性出错:",sd);
+ for (int i = 0; i < allChildLines.Length; i++)
+ {
+ string blIndex = "";
+ string blItemID = "";
+ string blRevName = "";
+ string blQuantity = "";
+ string blMaterial = "";
+ string blZhongliang = "";
+ string gg = "";
+ string blNote = "";
+ Teamcenter.Soa.Client.Model.Strong.BOMLine bomLine = allChildLines[i] as Teamcenter.Soa.Client.Model.Strong.BOMLine;
+ //序号
+ blIndex = ""+(i+1);//bomLine.GetProperty("ZT2_xuhao").StringValue;
+ //代号
+ blItemID = bomLine.Bl_item_item_id;
+ //名称
+ blRevName = bomLine.Bl_rev_object_name;
+ //数量
+ blQuantity = bomLine.Bl_quantity;
+ //备注
+ blNote = bomLine.GetProperty("ZT2_Remark").StringValue;
+ gg = bomLine.GetProperty("zt2_Specifications").StringValue;
+ blMaterial = bomLine.GetProperty("zt2_MaterialMark").StringValue;
+
+ BomMsgBean chidLineMsg = new BomMsgBean();
+ chidLineMsg.Index = blIndex;
+ chidLineMsg.CodeNo = blItemID;
+ chidLineMsg.Name = blRevName;
+ chidLineMsg.Quantity = blQuantity;
+ chidLineMsg.Material = blMaterial;
+ chidLineMsg.Note = blNote;
+ chidLineMsg.Zhongliang = blZhongliang;
+ chidLineMsg.Gg = gg;
+ bomMsgList.Add(chidLineMsg);
+ //if (bomLine.Bl_child_lines == null || bomLine.Bl_child_lines.Length < 1)
+ //{
+ // //chidLineMsg.CodeNo = blItemID;// bomLine.Bl_item_item_id;
+ // bomMsgList.Add(chidLineMsg);
+ // }
+ //else
+ //{
+ // chidLineMsg.CodeNo = "";
+ // getBomStruct(dmService, index, bomLine, bomMsgList);
+ //}
+ }
+
+ }
+
+
+ private void GC_GetBomStruct(DataManagementService dmService, int index, Teamcenter.Soa.Client.Model.Strong.BOMLine topBomline, List bomMsgList) {
+ dmService.RefreshObjects(new ModelObject[] { topBomline });
+ dmService.GetProperties(new ModelObject[] { topBomline }, new string[] { "bl_child_lines" });
+ //Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ ModelObject[] allChildLines = topBomline.Bl_child_lines;
+ if (allChildLines == null || allChildLines.Length < 1) {
+ return;
+ }
+ dmService.RefreshObjects(allChildLines);
+ ServiceData sd = dmService.GetProperties(allChildLines, new string[] { "Bl_revision", "ZT2_TYWeight", "ZT2_TYSpecifications", "zt2_MaterialMark", "ZT2_xuhao", "bl_item_item_id", "bl_rev_object_name", "bl_quantity", "ZT2_Remark", "zt2_Specifications" });
+ ThrowServiceDataError("加载属性出错:", sd);
+ for (int i = 0; i < allChildLines.Length; i++) {
+ string blIndex = "";
+ string blItemID = "";
+ string blRevName = "";
+ string blQuantity = "";
+ string blMaterial = "";
+ double blZhongliang = 0;
+ string gg = "";
+ string blNote = "";
+ double xiaoji = 0;
+ Teamcenter.Soa.Client.Model.Strong.BOMLine bomLine = allChildLines[i] as Teamcenter.Soa.Client.Model.Strong.BOMLine;
+ //序号
+ blIndex = "" + (i + 1);//bomLine.GetProperty("ZT2_xuhao").StringValue;
+ //代号
+ blItemID = bomLine.Bl_item_item_id;
+ bool special = blItemID.ToUpper().StartsWith("2ZDB") || blItemID.ToUpper().StartsWith("4ZDB");
+ //名称
+ blRevName = bomLine.Bl_rev_object_name;
+ //数量
+ blQuantity = bomLine.Bl_quantity;
+ //备注
+ blNote = bomLine.GetProperty("ZT2_Remark").StringValue;
+ gg = special ? bomLine.GetProperty("ZT2_TYSpecifications").StringValue : bomLine.GetProperty("zt2_Specifications").StringValue;
+ ItemRevision blRev = bomLine.Bl_revision as ItemRevision;
+ dmService.GetProperties(new ModelObject[]{blRev},new string[]{"object_type"});
+ if(special){
+ //blZhongliang = bomLine.GetProperty("ZT2_TYWeight").DisplayableValue;
+ double.TryParse(bomLine.GetProperty("ZT2_TYWeight").DisplayableValue, out blZhongliang);
+ }else{
+ if(blRev!=null&&"ZT2_Design3DRevision".Equals(blRev.Object_type)){
+ dmService.GetProperties(new ModelObject[]{blRev},new string[]{"zt2_DesignWeight"});
+ Property prop = blRev.GetProperty("zt2_DesignWeight");
+ if (prop != null) {
+ double.TryParse(prop.DisplayableValue, out blZhongliang);
+ //blZhongliang = prop.DisplayableValue;
+ }
+ }
+ }
+ blMaterial = bomLine.GetProperty("zt2_MaterialMark").StringValue;
+ if (!"".Equals(blQuantity.Trim())) {
+ double sl;
+ if (Double.TryParse(blQuantity.Trim(), out sl)) {
+ xiaoji = blZhongliang * sl;
+ }
+ }
+ BomMsgBean chidLineMsg = new BomMsgBean();
+ chidLineMsg.Index = blIndex;
+ chidLineMsg.CodeNo = blItemID;
+ chidLineMsg.Name = blRevName;
+ chidLineMsg.Quantity = blQuantity;
+ chidLineMsg.Material = blMaterial;
+ chidLineMsg.Note = blNote;
+ chidLineMsg.Zhongliang = removeTrailingZero(blZhongliang.ToString("#0.000"));
+ chidLineMsg.Gg = gg;
+ chidLineMsg.Xiaoji = removeTrailingZero(xiaoji.ToString("#0.000"));
+ bomMsgList.Add(chidLineMsg);
+ //if (bomLine.Bl_child_lines == null || bomLine.Bl_child_lines.Length < 1)
+ //{
+ // //chidLineMsg.CodeNo = blItemID;// bomLine.Bl_item_item_id;
+ // bomMsgList.Add(chidLineMsg);
+ // }
+ //else
+ //{
+ // chidLineMsg.CodeNo = "";
+ // getBomStruct(dmService, index, bomLine, bomMsgList);
+ //}
+ }
+
+ }
+
+ public static string removeTrailingZero(string str) {
+ if (str == null || "".Equals(str.Trim())) {
+ return str;
+ }
+ while (str.EndsWith("0")) {
+ str = str.Substring(0, str.Length-1);
+ if (str.EndsWith(".")) {
+ str = str.Substring(0, str.Length - 1);
+ if ("0".Equals(str)) {
+ return "";
+ }
+ return str;
+ }
+ }
+ return str;
+ }
+
+ [CommandMethod("MXL_TEST3")]
+ public void insertBomMXL() {
+ Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ Editor ed = acDoc.Editor;
+ //PromptIntegerOptions pIntOpts = new PromptIntegerOptions("");
+ //pIntOpts.Message = "\n请选择明细栏类型:";
+ //pIntOpts.AllowNegative = false;//不允许输入负数
+ //pIntOpts.AllowZero = false;
+ ////pIntOpts.DefaultValue = 1;
+ //pIntOpts.Keywords.Add("CHINTMX");
+ //pIntOpts.Keywords.Add("CHINTTRMX");
+ //pIntOpts.Keywords.Default = "CHINTMX";
+ //pIntOpts.AllowNone = true;
+
+ //PromptIntegerResult pIntRes = acDoc.Editor.GetInteger(pIntOpts);
+
+ //if (pIntRes.Status == PromptStatus.Keyword) {
+ // Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Entered keyword: " +
+ // pIntRes.StringResult);
+ //}
+ //else {
+ // Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Entered value: " +
+ // pIntRes.Value.ToString());
+ //}
+ List bomMsgBeanList = new List();
+ BomMsgBean bean = new BomMsgBean();
+ bean.CodeNo = "1";
+ bean.Index = "2";
+ bean.Material = "3";
+ bean.Name = "全牙一字圆柱头螺钉";
+ bean.Note = "5";
+ bean.Quantity = "6";
+ bean.Zhongliang = "7";
+ bean.Gg = "8";
+ bean.Xiaoji = "100";
+ bomMsgBeanList.Add(bean);
+ BomMsgBean bean2 = new BomMsgBean();
+ bean2.CodeNo = "2";
+ bean2.Index = "2";
+ bean2.Material = "3";
+ bean2.Name = "全牙一字圆柱头螺钉";
+ bean2.Note = "5";
+ bean2.Quantity = "6";
+ bean2.Zhongliang = "7";
+ bean2.Gg = "8";
+ bean2.Xiaoji = "10";
+ bomMsgBeanList.Add(bean2);
+ BomMsgBean bean3 = new BomMsgBean();
+ bean3.CodeNo = "3";
+ bean3.Index = "2";
+ bean3.Material = "3";
+ bean3.Name = "全牙一字圆柱头螺钉";
+ bean3.Note = "5";
+ bean3.Quantity = "6";
+ bean3.Zhongliang = "7";
+ bean3.Gg = "8";
+ bean3.Xiaoji = "9";
+ bomMsgBeanList.Add(bean3);
+ string bili = "";
+ //Boolean isOk = false;
+ string blockname = "CHINTMXL";//明细表内容
+ string btlBlockName = "CHINTMX";//明细表表头
+ bool hasBLock = false;
+ OriginTool tool1 = new OriginTool();
+ bool ss = tool1.insertBomMXL(bomMsgBeanList, bili, "CHINTTRMX", "CHINTTRMXL");
+ if(1==1){
+ return;
+ }
+ // Database db = HostApplicationServices.WorkingDatabase;
+
+ Database acCurDb = acDoc.Database;
+
+
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName)) {
+ hasBLock = true;
+ }
+ tran.Commit();
+ }
+ if (!hasBLock) {
+ blockname = "GC-CHINTMXL";//明细表内容
+ btlBlockName = "GC-CHINTMX";//明细表表头
+ }
+
+ List pointList = new List();
+ double myBili = 1;
+
+ if (bili != null && bili.Length > 0) {
+ string[] bilis = bili.Replace(" ", "").Replace(":", ":").Split(':');
+ if (bilis.Length > 1) {
+
+ myBili = (double.Parse(bilis[0]) / double.Parse(bilis[1]));
+ }
+ else {
+ bilis = bili.Replace(" ", "").Split(':');//:
+ if (bilis.Length > 1) {
+ myBili = (double.Parse(bilis[0]) / double.Parse(bilis[1]));
+ }
+ }
+ }
+ Scale3d scale3d = new Scale3d(1.0d / myBili);
+ ed.WriteMessage("bili=" + bili + "|myBili=>" + myBili + "|scale3d=>" + (1.0d / myBili));
+ //删除所有的明细栏
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ ed.WriteMessage("删除明细栏 mxl \n");
+ TypedValue[] typedValue = new TypedValue[1];
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, blockname), 0);
+ SelectionFilter filter = new SelectionFilter(typedValue);
+ PromptSelectionResult result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK) {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds()) {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, btlBlockName), 0);
+ filter = new SelectionFilter(typedValue);
+ result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK) {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds()) {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ tran.Commit();
+ }
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ ed.WriteMessage("获取明细栏 mxn \n");
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName)) {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlBlockName) {
+ Point3d point = bref.Position;
+ ed.WriteMessage("X=" + point.X + " | Y=" + point.Y + " | Z=" + point.Z + "\n");
+ //矩阵变换
+ //double[] dMatrix = new double[16];
+ //dMatrix[0] = 1.0;
+ //dMatrix[1] = 0.0;
+ //dMatrix[2] = 0.0;
+ //dMatrix[3] = 1.0 / myBili; //-1642.62;//-3285.25;
+ //dMatrix[4] = 0.0;
+ //dMatrix[5] = 1.0;
+ //dMatrix[6] = 0.0;
+ //dMatrix[7] = 1.0 / myBili; //-1249.29;//-2498.59;
+ //dMatrix[8] = 0.0;
+ //dMatrix[9] = 0.0;
+ //dMatrix[10] = 1.0;
+ //dMatrix[11] = 0.0;
+ //dMatrix[12] = 0.0;
+ //dMatrix[13] = 0.0;
+ //dMatrix[14] = 0.0;
+ //dMatrix[15] = 1.0;
+ //point = point.TransformBy(new Matrix3d(dMatrix));
+ pointList.Add(point);
+ ed.WriteMessage(" NewX=" + point.X + " | NewY=" + point.Y + " | NewZ=" + point.Z + "\n");
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ OriginTool tool = new OriginTool();
+ //插入明细表
+ //锁定文件
+ using (acDoc.LockDocument()) {
+ int lineCount = 0;
+ for (int i = 0; ; i++) {
+ if (bomMsgBeanList.Count != 1) {
+ if (lineCount >= bomMsgBeanList.Count - 1) {
+ break;
+ }
+ }
+
+ Point3d pointOrigin = tool.getChintBomInsertPoint(myBili); // new Point3d(0, 0, 0);
+ if (i >= pointList.Count) {
+
+ //pointList[i];
+ //PromptPointResult pPtRes = null;
+ //PromptPointOptions pPtOpts = new PromptPointOptions("");
+ //pPtOpts.Message = "选取插入的点:";
+ //pPtRes = ed.GetPoint(pPtOpts);
+
+ //pointOrigin = pPtRes.Value;
+ ed.WriteMessage(" x=" + pointOrigin.X + " y=" + pointOrigin.Y + " z=" + pointOrigin.Z);
+
+ //KH offset
+ //矩阵变换
+ //double[] dMatrix = new double[16];
+ //dMatrix[0] = 1.0;
+ //dMatrix[1] = 0.0;
+ //dMatrix[2] = 0.0;
+ //dMatrix[3] = 1.0 / myBili; //-1642.62;//-3285.25;
+ //dMatrix[4] = 0.0;
+ //dMatrix[5] = 1.0;
+ //dMatrix[6] = 0.0;
+ //dMatrix[7] = 1.0 / myBili; //-1249.29;//-2498.59;
+ //dMatrix[8] = 0.0;
+ //dMatrix[9] = 0.0;
+ //dMatrix[10] = 1.0;
+ //dMatrix[11] = 0.0;
+ //dMatrix[12] = 0.0;
+ //dMatrix[13] = 0.0;
+ //dMatrix[14] = 0.0;
+ //dMatrix[15] = 1.0;
+
+ //pointOrigin = pointOrigin.TransformBy(new Matrix3d(dMatrix));
+ ed.WriteMessage(" Newx=" + pointOrigin.X + " Newy=" + pointOrigin.Y + " Newz=" + pointOrigin.Z);
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(btlBlockName)) {
+ Point3d InsertPt = pointOrigin;
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[btlBlockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+
+ blockRef.ScaleFactors = scale3d;
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ tool.insertAttri(blockRef, tran, acCurDb, null);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ }
+ else {
+ pointOrigin = pointList[i];
+ }
+ //记录最大的明细栏的个数
+ int maxCount = 0;
+ for (int j = (lineCount == 0 ? 0 : (lineCount + 1)); j < bomMsgBeanList.Count; j++) {
+ lineCount = j;
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(blockname)) {
+ maxCount++;
+ Point3d InsertPt = new Point3d((pointOrigin.X), (pointOrigin.Y + 10/myBili + (maxCount - 1) * (7 / myBili)), pointOrigin.Z);//-0.0224
+
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[blockname], OpenMode.ForRead, false) as BlockTableRecord;
+
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+ blockRef.ScaleFactors = scale3d;
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ tool.insertAttri(blockRef, tran, acCurDb, bomMsgBeanList[j]);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ if (maxCount == 29) {//设置单张图框里面的明细栏的最大数量为29
+ break;
+ }
+ }
+ if (bomMsgBeanList.Count <= 1)
+ break;
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ //[CommandMethod("MXL_TEST")]
+ public void insertBomMXL2()
+ {
+ string btlBlockName = "KHMX1";
+ Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ ed = acDoc.Editor;
+ Scale3d scale3d = new Scale3d(1.0d / 2);
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ ed.WriteMessage("获取明细栏 mxn \n");
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName))
+ {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlBlockName)
+ {
+ Point3d point = bref.Position;
+ ed.WriteMessage("X=" + point.X + " | Y=" + point.Y + " | Z=" + point.Z + "\n");
+ }
+ }
+ }
+ }
+ //插入明细栏
+ }
+ //插入明细表
+ //锁定文件
+ using (acDoc.LockDocument()) {
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ //pointList[i];
+ PromptPointResult pPtRes = null;
+ PromptPointOptions pPtOpts = new PromptPointOptions("");
+ pPtOpts.Message = "选取插入的点:";
+ pPtRes = ed.GetPoint(pPtOpts);
+
+ pointOrigin = pPtRes.Value;
+ ed.WriteMessage(" x=" + pointOrigin.X + " y=" + pointOrigin.Y + " z=" + pointOrigin.Z);
+ //KH offset
+ //矩阵变换
+ double[] dMatrix = new double[16];
+ dMatrix[0] = 1.0;
+ dMatrix[1] = 0.0;
+ dMatrix[2] = 0.0;
+ dMatrix[3] = -1642.62;//-3285.25;
+ dMatrix[4] = 0.0;
+ dMatrix[5] = 1.0;
+ dMatrix[6] = 0.0;
+ dMatrix[7] = -1249.29;// -2498.59;
+ dMatrix[8] = 0.0;
+ dMatrix[9] = 0.0;
+ dMatrix[10] = 1.0;
+ dMatrix[11] = 0.0;
+ dMatrix[12] = 0.0;
+ dMatrix[13] = 0.0;
+ dMatrix[14] = 0.0;
+ dMatrix[15] = 1.0;
+ pointOrigin = pointOrigin.TransformBy(new Matrix3d(dMatrix));
+ ed.WriteMessage(" Newx=" + pointOrigin.X + " Newy=" + pointOrigin.Y + " Newz=" + pointOrigin.Z);
+ OriginTool tool = new OriginTool();
+ BomMsgBean bean = new BomMsgBean();
+ bean.CodeNo = "1";
+ bean.Index = "2";
+ bean.Material = "3";
+ bean.Name = "全牙一字圆柱头螺钉";
+ bean.Note = "5";
+ bean.Quantity = "6";
+ bean.Zhongliang = "7";
+ bean.Gg = "8";
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(btlBlockName)) {
+ Point3d InsertPt = pointOrigin;
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[btlBlockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+ blockRef.ScaleFactors = scale3d;
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ tool.insertAttri(blockRef, tran, acCurDb, bean);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ }
+ return;
+ }
+ ///
+ /// 搭建BOM
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool CreateBomStructure(ItemRevision parentRev, Dataset parent_ds, List bom_Vec, Folder folder)
+ {
+
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Reservation res = ReservationService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor;
+ ed1.WriteMessage("bom_Vec size:" + bom_Vec.Count.ToString() + "\n");
+
+ ItemRevision[] revVec = new ItemRevision[bom_Vec.Count];
+ ed1.WriteMessage("revVec size:" + revVec.Length.ToString() + "\n");
+ for (int i = 0; i < bom_Vec.Count; i++)
+ {
+ OriginMXL it_bom = bom_Vec[i];
+ OriginTool origintool = new OriginTool();
+ if (origintool.getKeyFromValue(it_bom.Mxltctable, "wx3_tzbm") == null)
+ {
+ ed1.WriteMessage("明细栏中没有配置wx3_tzbm\n");
+ return false;
+ }
+ ed1.WriteMessage(string.Format("明细栏中没有配置wx3_tzbm key=>{0}\n", origintool.getKeyFromValue(it_bom.Mxltctable, "wx3_tzbm")));
+ string item_id = it_bom.Mxldatatable[origintool.getKeyFromValue(it_bom.Mxltctable, "wx3_tzbm")].ToString();
+ Item item = origintool.wxGetItem(item_id);
+
+ if(item ==null)
+ {
+ MessageBox.Show(string.Format("没有查找到图号[{0}]", item_id));
+ return false;
+ }
+ else
+
+ {
+ ItemRevision itemRev = null;
+ ModelObject[] objects = { item};
+ string[] attributes = { "revision_list", "object_name","item_revision"};
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ ModelObject[] revList = item.Revision_list;
+ dmService.RefreshObjects(revList);
+ for (int l = 0; l < revList.Length; l++)
+ {
+ itemRev = revList[l] as ItemRevision;
+ }
+ revVec[i] = itemRev;
+ //写form属性
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec = new FormInfo[1];
+ ModelObject[] form_vec;
+ ModelObject[] objects1 = {itemRev };
+ string[] attributes1 = { "IMAN_master_form_rev",
+ "is_modifiable","item_revision_id",
+ "date_released","item_id",
+ "release_status_list"};
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+
+ ReleaseStatus[] releaselist = itemRev.Release_status_list;
+ if (releaselist.Length > 0)
+ {
+ MessageBox.Show("Item ID为" + itemRev.Item_id + "的最新版本已发布!");
+ continue;
+ }
+ if (!itemRev.Is_modifiable)
+ {
+ MessageBox.Show("当前用户对Item ID为" + itemRev.Item_id + "无权修改或该Item最新版本已发布");
+ continue;
+ }
+ else if (itemRev.Is_modifiable)
+ {
+ ed1.WriteMessage("is_modifiable!\n");
+
+ form_vec = itemRev.IMAN_master_form_rev;
+ ed1.WriteMessage("get_IMAN_master_form_rev sucessful!\n");
+
+ for (int j = 0; j < form_vec.Length; j++)
+ {
+ Form form = form_vec[j] as Form;
+ bool frash = false;
+ string[] props = new string[1];
+ string revId = itemRev.Object_string;
+ Hashtable formAttrs = new Hashtable();
+ //如果配置了Form属性,则执行如下代码
+ if (it_bom.Mxltypetable.ContainsValue("Form"))
+ {
+ foreach (DictionaryEntry de in it_bom.Mxltypetable)
+ {
+ if (de.Value.ToString() == "Form" && it_bom.Mxlisbomtable[de.Key].ToString() == "0" &&
+ it_bom.Mxlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = it_bom.Mxldatatable[cadstring].ToString();
+ string tcstring = it_bom.Mxltctable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(form_vec, props);
+ if (serviceData.sizeOfPartialErrors() > 0)
+ {
+ continue;
+ }
+ Property my_prop = form_vec[j].GetProperty(tcstring);
+ if (cadvalue != my_prop.StringValue)
+ {
+ if (my_prop.StringValue == "")
+ frash = true;
+ else
+ {
+ string message = "当前明细栏图纸:" + cadstring + "属性值" + cadvalue + "与系统内:" + tcstring + "属性值" + my_prop.StringValue + "不一致,是否覆盖系统内属性?";
+ DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (updateresult == DialogResult.Yes)
+ {
+ frash = true;
+ }
+ }
+ string[] formAttrValue = new string[1];
+ formAttrValue[0] = "";
+ if (frash)
+ formAttrValue[0] = cadvalue;
+ else
+ formAttrValue[0] = my_prop.StringValue;
+ ed1.WriteMessage(tcstring + ":" + formAttrValue[0] + "\n");
+ formAttrs.Add(tcstring, formAttrValue);
+ props[0] = "";
+ }
+
+ }
+ }
+ }
+
+ forminfo.AttributesMap = formAttrs;
+ //forminfo.ClientId = "";
+ //forminfo.Description = "";
+ forminfo.FormObject = form;
+ // forminfo.Name = item_id + "/" + itemRev.Item_revision_id;
+ //forminfo.ParentObject = null;
+ // forminfo.RelationName = "IMAN_master_form";
+ forminfo.SaveDB = true;
+ //forminfo.FormType = "ItemRevision Master";
+
+ forminfo_vec[0] = forminfo;
+ try
+ {
+ CreateOrUpdateFormsResponse formResp
+ = dmService.CreateOrUpdateForms(forminfo_vec);
+ }
+ catch (SoaException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+ }
+
+ }
+ }
+ //创建BOM
+ Teamcenter.Services.Strong.Cad.StructureManagementService ssService =
+ Services.Strong.Cad.StructureManagementService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2
+ structInfo = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2();
+
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[]
+ structInfoVec = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[1];
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo[]
+ childInfoVec;
+
+ //Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo
+ // occInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo();
+
+ //Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo
+ // attrsInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo();
+
+
+ Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2
+ sPref = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2();
+
+ //ItemRevision childRev;
+ ed1.WriteMessage("开始准备pse属性列\n");
+ childInfoVec = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo[revVec.Length];
+ ed1.WriteMessage("childInfoVec size:"+childInfoVec.Length+"\n");
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[]
+ attrsToSet = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[4];
+ for (int i = 0; i < revVec.Length; i++)
+ {
+ OriginMXL bomv = bom_Vec[i];
+ OriginTool origintool = new OriginTool();
+ string item_id = bomv.Mxldatatable[origintool.getKeyFromValue(bomv.Mxltctable, "wx3_tzbm")].ToString();
+ ed1.WriteMessage("处理" + item_id + "...\n");
+ int updatenum = 0;
+ if (bomv.Mxltypetable.ContainsValue("bomline"))
+ {
+ foreach (DictionaryEntry de in bomv.Mxltypetable)
+ {
+ if (de.Value.ToString() == "bomline" && bomv.Mxlisbomtable[de.Key].ToString() == "1" && bomv.Mxlupdatetable[de.Key].ToString() =="1")
+ {
+ updatenum = updatenum + 1;
+ }
+ }
+
+ }
+
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo
+ childInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo();
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo
+ occInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo();
+ attrsToSet = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[updatenum];
+
+
+
+ if (bomv.Mxltypetable.ContainsValue("bomline"))
+ {
+ int stepnum = 0;
+ foreach (DictionaryEntry de in bomv.Mxltypetable)
+ {
+ if (de.Value.ToString() == "bomline" && bomv.Mxlisbomtable[de.Key].ToString() == "1" &&
+ bomv.Mxlupdatetable[de.Key].ToString() == "1")
+ {
+ string cadstring = de.Key.ToString();
+ string cadvalue = bomv.Mxldatatable[cadstring].ToString();
+ string tcstring = bomv.Mxltctable[cadstring].ToString();
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo
+ attrsInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo();
+ attrsInfo.Name = tcstring;
+ attrsInfo.Value = cadvalue;
+ attrsToSet[stepnum] = attrsInfo;
+ stepnum = stepnum + 1;
+ }
+ }
+ }
+
+ occInfo.AttrsToSet = attrsToSet;
+
+ childInfo.Child = revVec[i];
+ childInfo.OccInfo = occInfo;
+
+ childInfoVec[i] = childInfo;
+
+ }
+ for (int j = 0; j < childInfoVec.Length; j++)
+ {
+ for(int k=0;k 0)
+ {
+ ed1.WriteMessage("checkout bom returned a partial error.");
+ return false;
+ }
+ }
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+
+ ed1.WriteMessage("开始创建Bom\n");
+ try
+ {
+ Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateOrUpdateRelativeStructureResponse
+ cursResp = ssService.CreateOrUpdateRelativeStructure(structInfoVec, "view", true, sPref);
+ ed1.WriteMessage("Bom创建成功\n");
+ MessageBox.Show("Bom创建成功\n");
+ }
+ catch (System.Exception ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ return false;
+ }
+
+ if (bvr != null)
+ {
+ ModelObject[] checkIn_vec = new ModelObject[1];
+ checkIn_vec[0] = bvr;
+ try
+ {
+ res.Checkin(checkIn_vec);
+ ed1.WriteMessage("Bomview 签入成功!\n");
+ }
+ catch (ServiceException ex)
+ {
+ ed1.WriteMessage(ex.Message);
+ }
+ }
+ return true;
+ }
+
+ private void loginbuttonclick(object Sender,EventArgs e)
+ {
+ login();
+ }
+
+ private void openbuttonclick(object Sender, EventArgs e)
+ {
+ openformtc();
+ }
+
+ private void savebuttonclick(object Sender, EventArgs e)
+ {
+ savetotc();
+ }
+
+ private void logoutbuttonclick(object Sender, EventArgs e)
+ {
+ layout();
+ }
+
+
+ //private void addComtextMenu()
+ //{
+ // ContextMenuExtension m_contextmenu = new ContextMenuExtension();
+ // m_contextmenu.Title = "MyTeamCenter";
+ // Autodesk.AutoCAD.Windows.MenuItem mi = new Autodesk.AutoCAD.Windows.MenuItem("登录");
+ // Autodesk.AutoCAD.Windows.MenuItem mi1 = new Autodesk.AutoCAD.Windows.MenuItem("打开");
+ // Autodesk.AutoCAD.Windows.MenuItem mi2 = new Autodesk.AutoCAD.Windows.MenuItem("保存");
+ // Autodesk.AutoCAD.Windows.MenuItem mi3 = new Autodesk.AutoCAD.Windows.MenuItem("退出");
+
+ // mi.Click += new EventHandler (loginbuttonclick);
+ // mi1.Click += new EventHandler(openbuttonclick);
+ // mi2.Click += new EventHandler(savebuttonclick);
+ // mi3.Click += new EventHandler(logoutbuttonclick);
+
+
+ // m_contextmenu.MenuItems.Add(mi);
+ // m_contextmenu.MenuItems.Add(mi1);
+ // m_contextmenu.MenuItems.Add(mi2);
+ // m_contextmenu.MenuItems.Add(mi3);
+
+ // Autodesk.AutoCAD.ApplicationServices.Application.AddDefaultContextMenuExtension(m_contextmenu);
+ //}
+
+ ////退出时触发
+ //public void acdocmgr_DocumentToBeDestroyed(object sender, DocumentCollectionEventArgs e)
+ //{
+ // DialogResult updateresult = MessageBox.Show("请确保您已经将文件保存!以免造成数据丢失!是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // if (updateresult == DialogResult.Yes)
+ // {
+ // savetotc();
+ // }
+ // else
+ // {
+ // loginuser = null;
+ // hadlogin = false;
+ // }
+ //}
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/HomeFolder.cs b/OriginAutoCAD_chint/hello/HomeFolder.cs
new file mode 100644
index 0000000..d597ace
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/HomeFolder.cs
@@ -0,0 +1,79 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Exceptions;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+
+namespace Teamcenter.Hello
+{
+public class HomeFolder
+{
+
+ /**
+ * List the contents of the Home folder.
+ *
+ */
+ public void listHomeFolder(User user)
+ {
+ Folder home = null;
+ WorkspaceObject[] contents = null;
+
+ // Get the service stub
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ try
+ {
+ // User was a primary object returned from the login command
+ // the Object Property Policy should be configured to include the
+ // 'home_folder' property. However the actuall 'home_folder' object
+ // was a secondary object returned from the login request and
+ // therefore does not have any properties associated with it. We will need to
+ // get those properties explicitly with a 'getProperties' service request.
+ home = user.Home_folder;
+ }
+ catch (NotLoadedException e)
+ {
+ Console.Out.WriteLine(e.Message);
+ Console.Out.WriteLine("The Object Property Policy ($TC_DATA/soa/policies/Default.xml) is not configured with this property.");
+ return;
+ }
+
+ try
+ {
+ ModelObject[] objects = { home };
+ String[] attributes = { "contents" };
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ dmService.GetProperties(objects, attributes);
+
+
+ // The above getProperties call returns a ServiceData object, but it
+ // just has pointers to the same object we passed into the method, so the
+ // input object have been updated with new property values
+ contents = home.Contents;
+ }
+ // This should never be thrown, since we just explicitly asked for this
+ // property
+ catch (NotLoadedException /*e*/){}
+
+ Console.Out.WriteLine("");
+ Console.Out.WriteLine("Home Folder:");
+ Session.printObjects( contents );
+
+ }
+
+}
+}
diff --git a/OriginAutoCAD_chint/hello/ItemMsgBean.cs b/OriginAutoCAD_chint/hello/ItemMsgBean.cs
new file mode 100644
index 0000000..2d7a089
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/ItemMsgBean.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HelloTeamcenter.hello
+{
+ class ItemMsgBean
+ {
+
+ private String itemId ;//零组件id
+ private String itemRev ;//零组件版本
+ ///
+ /// 获取和得到id的方法
+ ///
+ public String ItemId {
+ set {
+ itemId = value;
+ }
+ get {
+ return itemId;
+ }
+
+ }
+
+ ///
+ /// 获取和得到版本的方法
+ ///
+ public String ItemRev {
+
+ set
+ {
+ itemRev = value;
+ }
+ get
+ {
+ return itemRev;
+ }
+ }
+ }
+
+
+
+}
diff --git a/OriginAutoCAD_chint/hello/KBomUpdater.cs b/OriginAutoCAD_chint/hello/KBomUpdater.cs
new file mode 100644
index 0000000..167668d
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KBomUpdater.cs
@@ -0,0 +1,800 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml;
+using System.Collections;
+using Teamcenter.Services.Strong.Core;
+using Session = Teamcenter.ClientX.Session;
+using Autodesk.AutoCAD.EditorInput;
+using System.Windows.Forms;
+using Teamcenter.Soa.Client.Model.Strong;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Services.Strong.Query;
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+using Autodesk.AutoCAD.DatabaseServices;
+using System.Reflection;
+
+namespace HelloTeamcenter.hello {
+ public class KBomUpdater {
+
+ public const string CHINTMXL = "CHINTMXL";
+ public const string CHINTTRMXL = "CHINTTRMXL";
+
+ public class BomBean : IComparable {
+ public string itemId { get; set; }
+ public string revId { get; set; }
+ public string index { get; set; }
+ public ItemRevision rev { get; set; }
+ public Hashtable bomProps { get; set; }
+
+ public override string ToString() {
+ if(string.IsNullOrWhiteSpace(revId)){
+ return itemId;
+ }else{
+ return itemId+"/"+revId;
+ }
+ }
+
+
+ int IComparable.CompareTo(BomBean other) {
+ if(string.IsNullOrWhiteSpace(index)){
+ return -1;
+ }
+ if(other==null||string.IsNullOrWhiteSpace(other.index)){
+ return 1;
+ }
+ int myInd = -1;
+ int otherInd = -1;
+ Int32.TryParse(index, out myInd);
+ Int32.TryParse(other.index, out otherInd);
+ return myInd - otherInd;
+ }
+ }
+
+ //通过value值找key值
+ public static string GetKeyFromValue(Dictionary table, string value) {
+ if (table.ContainsValue(value)) {
+ foreach (string key in table.Keys) {
+ string val = table[key];
+ if (value.Equals(val)) {
+ return key;
+ }
+ }
+ }
+ return null;
+ }
+
+
+ public static Dictionary ReadBomConfig(string xmlpath) {
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ Dictionary dic = new Dictionary();
+ try {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(xmlpath + "明细表.xml", settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList bomLineList = xmldocument.SelectSingleNode("BomLine").ChildNodes;
+ if (bomLineList == null) {
+ MessageBox.Show("请检查明细表.xml文件,没有找到标签");
+ return null;
+ }
+ foreach (XmlNode node in bomLineList) {
+ //获得一个bomline
+ XmlElement xeone = (XmlElement)node;
+ string cad = "";
+ string tc = "";
+ if (xeone.HasAttribute("tc")) {
+ tc = xeone.GetAttribute("tc").ToString().Trim();
+ }
+ if (xeone.HasAttribute("cad")) {
+ cad = xeone.GetAttribute("cad").ToString().Trim();
+ }
+
+ if ("".Equals(tc)) {
+ continue;
+ }
+ if ("".Equals(cad)) {
+ continue;
+ }
+ if(dic.ContainsKey(tc)){
+ continue;
+ }
+ dic.Add(tc,cad);
+ }
+ }
+ finally {
+ xmlreader.Close();
+ }
+ if (dic.Count == 0) {
+ throw new System.Exception("请检查明细表.xml文件,没有找到可用的同步配置");
+ }
+ if (!dic.ContainsKey("item_id")) {
+ throw new System.Exception("请检查明细表.xml文件,没有配置item_id属性");
+ }
+ //if (!dic.ContainsKey("bl_sequence_no")) {
+ // throw new System.Exception("请检查明细表.xml文件,没有配置bl_sequence_no属性");
+ //}
+ return dic;
+ }
+
+ public static List ReadCADBom(Dictionary mxlConfig,string itemIdTag,string revIdTag) {
+ List res1 = new List();
+ List res2 = new List();
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction()) {
+ // BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+
+ // if (blt.Has(CHINTMXL) || blt.Has(CHINTTRMXL)) {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ string blockName = bref.Name;
+ // if (blockName == CHINTMXL || blockName == CHINTTRMXL) {
+ //2023.3.14修改,改成只要包括就行
+ if (blockName.Contains(CHINTMXL) || blockName.Contains(CHINTTRMXL)) {
+ ed.WriteMessage("块名称:" + blockName + "\n");
+ if (bref.AttributeCollection.Count != 0) {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ string itemId = "";
+ string revId = "";
+ string index = "";
+ Hashtable bomProps = new Hashtable();
+ while (bRefEnum.MoveNext()) {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ string tagName = aRef.Tag;
+ if (string.IsNullOrWhiteSpace(tagName)) {
+ continue;
+ }
+ if(tagName.Equals(itemIdTag)){
+ itemId = aRef.TextString;
+ }else if(tagName.Equals(revIdTag)){
+ revId = aRef.TextString;
+ }else if(tagName.Equals("序号")){
+ index = aRef.TextString;
+ }else if(mxlConfig.ContainsValue(tagName)){
+ string tcName = GetKeyFromValue(mxlConfig, tagName);
+ bomProps.Add(tcName, aRef.TextString);
+ }
+ }
+ if (string.IsNullOrWhiteSpace(itemId)) {
+ continue;
+ //throw new Exception("请检查明细栏,"+(string.IsNullOrWhiteSpace(index)?"":"序号"+index)+"未填写对象ID");
+ }
+ BomBean bomBean = new BomBean();
+ bomBean.itemId = itemId;
+ bomBean.revId = revId;
+ bomBean.index = index;
+ bomBean.bomProps = bomProps;
+ //2023.3.14修改
+ if (blockName.Contains(CHINTMXL))
+ {
+ res1.Add(bomBean);
+ }
+ else {
+ res2.Add(bomBean);
+ }
+ }
+ }
+ }
+ }
+ // }
+ tran.Commit();
+ }
+ if (res1.Count>0 && res2.Count>0) {
+ throw new Exception("图纸包含两种明细栏类型");
+ }
+ if (res1.Count > 0) {
+ res1.Sort();
+ return res1;
+ }
+ res2.Sort();
+ return res2;
+ }
+
+ public static List ReadCADBom2(Dictionary mxlConfig, string itemIdTag, string revIdTag, Database db)
+ {
+ List res1 = new List();
+ List res2 = new List();
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ //Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ // BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+
+ // if (blt.Has(CHINTMXL) || blt.Has(CHINTTRMXL))
+ // {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ string blockName = bref.Name;
+ //2023.3.14修改,改成只要包括就行
+ // if (blockName == CHINTMXL || blockName == CHINTTRMXL)
+ if (blockName.Contains(CHINTMXL) || blockName.Contains(CHINTTRMXL))
+ {
+ ed.WriteMessage("块名称:" + blockName + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ string itemId = "";
+ string revId = "";
+ string index = "";
+ Hashtable bomProps = new Hashtable();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ string tagName = aRef.Tag;
+ if (string.IsNullOrWhiteSpace(tagName))
+ {
+ continue;
+ }
+ if (tagName.Equals(itemIdTag))
+ {
+ itemId = aRef.TextString;
+ }
+ else if (tagName.Equals(revIdTag))
+ {
+ revId = aRef.TextString;
+ }
+ else if (tagName.Equals("序号"))
+ {
+ index = aRef.TextString;
+ }
+ else if (mxlConfig.ContainsValue(tagName))
+ {
+ string tcName = GetKeyFromValue(mxlConfig, tagName);
+ bomProps.Add(tcName, aRef.TextString);
+ }
+ }
+ if (string.IsNullOrWhiteSpace(itemId))
+ {
+ continue;
+ //throw new Exception("请检查明细栏,"+(string.IsNullOrWhiteSpace(index)?"":"序号"+index)+"未填写对象ID");
+ }
+ BomBean bomBean = new BomBean();
+ bomBean.itemId = itemId;
+ bomBean.revId = revId;
+ bomBean.index = index;
+ bomBean.bomProps = bomProps;
+ //2023.3.14修改
+ if (blockName.Contains(CHINTMXL)) {
+ res1.Add(bomBean);
+ }
+ else
+ {
+ res2.Add(bomBean);
+ }
+ }
+ }
+ }
+ }
+ // }
+ tran.Commit();
+ }
+ if (res1.Count > 0 && res2.Count > 0)
+ {
+ throw new Exception("图纸包含两种明细栏类型");
+ }
+ if (res1.Count > 0)
+ {
+ res1.Sort();
+ return res1;
+ }
+ res2.Sort();
+ return res2;
+ }
+
+ public static ImanQuery QUERY_REV;
+ public static ImanQuery QUERY_LATEST_REV;
+ //chint_query_design
+ public static ImanQuery QUERY_CHINT_DESIGN;
+
+ public static void InitQueries(SavedQueryService queryService) {
+ if (QUERY_LATEST_REV != null && QUERY_REV != null && QUERY_CHINT_DESIGN != null) {
+ return;
+ }
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0) {
+ throw new System.Exception("没有从TC中找到保存的查询");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++) {
+ string name = savedQueries.Queries[i].Name;
+ if (name.Equals("Latest Item Revision...")) {
+ QUERY_LATEST_REV = savedQueries.Queries[i].Query;
+ }
+ else if(name.Equals("Item Revision...")){
+ QUERY_REV = savedQueries.Queries[i].Query;
+ }
+ else if (name.Equals("chint_query_design")) {
+ QUERY_CHINT_DESIGN = savedQueries.Queries[i].Query;
+ }
+ else if (QUERY_REV != null && QUERY_LATEST_REV != null && QUERY_CHINT_DESIGN != null) {
+ break;
+ }
+ }
+ if (QUERY_REV == null) {
+ throw new System.Exception("TC中不存在“零组件版本...”查询");
+ }
+ if (QUERY_LATEST_REV == null) {
+ throw new System.Exception("TC中不存在“最新零组件版本...”查询");
+ }
+ if (QUERY_CHINT_DESIGN == null) {
+ throw new System.Exception("TC中不存在“chint_query_design”查询");
+ }
+ }
+
+ public const string PROP_GUIGE = "ZT2_TYSpecifications";
+
+ public static ItemRevision SearchChintRev(Editor ed, BomBean bean) {
+ if (bean == null) {
+ return null;
+ }
+ string itemId = bean.itemId;
+ string revId = bean.revId;
+ string guige = "";
+ if (bean.bomProps != null) {
+ foreach (string key in bean.bomProps.Keys) {
+ if (key.Contains(PROP_GUIGE)) {
+ guige = (string)bean.bomProps[key];
+ break;
+ }
+ }
+ }
+ if(string.IsNullOrWhiteSpace(itemId)){
+ return null;
+ }
+ int ind =0;
+ int size = itemId.Count();
+ for(int i=0;i 1) {
+ throw new Exception("通过 ID = “" + itemId + "*”,型号规格 = “"+guige+"” 查询到多个版本");
+ }
+ return null;
+ }
+
+ public static ItemRevision SearchRevOrLatestRev(string itemId,string revId) {
+ if(string.IsNullOrWhiteSpace(itemId)){
+ return null;
+ }
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ InitQueries(queryService);
+ ItemRevision res = null;
+ if(string.IsNullOrWhiteSpace(revId)){
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = QUERY_LATEST_REV;
+ savedQueryInput[0].Entries = new String[] { "零组件 ID" };// new String[] { "Item ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = itemId;
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ ThrowServiceDataError("查询出错:",savedQueryResult.ServiceData);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+ if (found.NumOfObjects == 1) {
+ res = found.Objects[0] as ItemRevision;
+ }
+ else if (found.NumOfObjects > 1) {
+ throw new Exception("通过“" + itemId + "”查询到多个版本");
+ }
+ }else{
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = QUERY_REV;
+ savedQueryInput[0].Entries = new String[] { "零组件 ID", "版本" };// new String[] { "Item ID", "Revision" };
+ savedQueryInput[0].Values = new String[2];
+ savedQueryInput[0].Values[0] = itemId;
+ savedQueryInput[0].Values[1] = revId;
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ ThrowServiceDataError("查询出错:",savedQueryResult.ServiceData);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+ if (found.NumOfObjects == 1) {
+ res = found.Objects[0] as ItemRevision;
+ }
+ else if (found.NumOfObjects > 1) {
+ throw new Exception("通过“"+itemId+"/"+revId+"”查询到多个版本");
+ }
+ }
+ return res;
+ }
+ //抛出异常信息
+ public static void ThrowServiceDataError(String msgHeader, ServiceData data) {
+ if (data.sizeOfPartialErrors() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < data.sizeOfPartialErrors(); i++) {
+ foreach (string msg in data.GetPartialError(i).Messages) {
+ sb.Append(msg + "\n");
+ }
+ }
+ if (sb.Length > 0) {
+ throw new System.Exception(msgHeader + sb.ToString());
+ }
+ }
+ }
+
+ public static void test() {
+ MessageBox.Show(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "BomCreator.dll");
+ Assembly ass = Assembly.LoadFile(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase+"BomCreator.dll");
+ Type tp = ass.GetType("BomCreator.BomCreator");
+ Object obj = Activator.CreateInstance(tp);
+ MethodInfo method = tp.GetMethod("CreateBom");
+ method.Invoke(obj, new object[] { null, new List()});
+ }
+
+ public static void UpdateBomFromCAD2(bool checkPrivilege, bool alert, Database db)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ KOriginTool origintool = new KOriginTool(db);
+ string xmlpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+ //ed1.WriteMessage("当前工作路径:" + xmlpath + "\n");
+ //ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ ArrayList btllist = new ArrayList();
+ KOriginReadXml readxml = new KOriginReadXml(db);
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ Dictionary mxlConfig = ReadBomConfig(xmlpath);
+ string itemIdTag = "";
+ string revIdTag = "";
+ if (mxlConfig.ContainsKey("item_id"))
+ {
+ itemIdTag = mxlConfig["item_id"];
+ mxlConfig.Remove("item_id");
+ }
+ if (mxlConfig.ContainsKey("item_revision_id"))
+ {
+ revIdTag = mxlConfig["item_revision_id"];
+ mxlConfig.Remove("item_revision_id");
+ }
+ if (string.IsNullOrWhiteSpace(itemIdTag))
+ {
+ throw new System.Exception("请检查明细表.xml文件,没有配置item_id属性");
+ }
+ StringBuilder errInfo = new StringBuilder();
+ List bomBeans = ReadCADBom2(mxlConfig, itemIdTag, revIdTag, db);
+ if (bomBeans.Count == 0)
+ {
+ KUtil.WriteLog("未读取到明细栏信息");
+ if (alert)
+ {
+ MessageBox.Show("未读取到明细栏信息");
+ }
+ return;
+ }
+ for (int i = 0; i < bomBeans.Count; i++)
+ {
+ BomBean bean = bomBeans[i];
+ ed1.WriteMessage("明细栏" + i + "详细信息:" + "\n");
+ ed1.WriteMessage("对象信息:" + bean.itemId + (string.IsNullOrWhiteSpace(bean.revId) ? "" : ("/" + bean.revId)) + "\n");
+ bean.rev = SearchChintRev(ed1, bean);
+ if (bean.rev == null)
+ {
+ errInfo.Append(" ").Append(bean.ToString()).Append(",");
+ }
+ if (bean.bomProps == null)
+ {
+ continue;
+ }
+ foreach (DictionaryEntry de in bean.bomProps)
+ {
+ ed1.WriteMessage("属性名:" + de.Key + "\t属性值:" + de.Value + "\n");
+ }
+ }
+ if (errInfo.Length > 0)
+ {
+ errInfo.Length = errInfo.Length - 1;
+ if (alert)
+ {
+ MessageBox.Show("未查询到以下对象,请维护后进行操作:\n" + errInfo.ToString());
+ }
+ else
+ {
+ throw new System.Exception("未查询到以下对象,请维护后进行操作:\n" + errInfo.ToString());
+ }
+ return;
+ }
+ ed1.WriteMessage("明细栏个数为:" + bomBeans.Count);
+ //检查明细栏对象是否存在
+
+ //处理标题栏
+ bool foundTitle = false;
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+
+ if (key == null || rev == null)
+ {
+ if (alert)
+ {
+ MessageBox.Show(string.Format("没有找到\"图号\"或者\"版本号\"!"));
+ }
+ else
+ {
+ throw new System.Exception(string.Format("没有找到\"图号\"或者\"版本号\"!"));
+ }
+
+ return;
+ }
+ //Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ //ItemRevision itemRev = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString(), btlinfo.Btldatatable[rev].ToString());
+ ItemRevision itemRev = SearchRevOrLatestRev(btlinfo.Btldatatable[key].ToString(), btlinfo.Btldatatable[rev].ToString());
+ if (itemRev != null)
+ {
+ if (checkPrivilege)
+ {
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.GetProperties(new ModelObject[] { itemRev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ {
+ if (!itemRev.Is_modifiable)
+ {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "为只读,您没有保存权限!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "为只读,您没有保存权限!");
+ }
+
+ return;
+ }
+ User checkuserinfo = itemRev.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid)
+ {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "已被其他用户签出,无法保存到系统!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "已被其他用户签出,无法保存到系统!");
+ }
+
+ return;
+ }
+ }
+ if (itemRev.Release_status_list.Length > 0)
+ {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "已发布!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "已发布!");
+ }
+
+ return;
+ }
+ }
+ }
+
+ foundTitle = true;
+ //创建BOM
+ if (bomBeans.Count > 0)
+ {
+
+ BomCreator.BomCreator.CreateBom(itemRev, bomBeans, alert);
+ //DialogResult flushbomresult = MessageBox.Show("是否更新BOM:" + btlinfo.Btldatatable[key].ToString(), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (flushbomresult == DialogResult.Yes) {
+ //Assembly ass = Assembly.LoadFile(xmlpath + "BomCreator.dll");
+ //Type tp = ass.GetType("BomCreator.BomCreator");
+ //Object obj = Activator.CreateInstance(tp);
+ //MethodInfo method = tp.GetMethod("CreateBom");
+ //method.Invoke(obj, new object[] { itemRev, bomBeans });
+ //CreateBom(itemRev, bomBeans);
+ //}
+ SocketUtil.Refresh(itemRev.Uid);
+ }
+ }
+ }
+ if (!foundTitle)
+ {
+ throw new Exception("更新BOM失败,没有找到顶层对象信息");
+ }
+ }
+
+
+ public static void UpdateBomFromCAD(bool checkPrivilege, bool alert) {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ string xmlpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+ ed1.WriteMessage("当前工作路径:" + xmlpath + "\n");
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ Dictionary mxlConfig = ReadBomConfig(xmlpath);
+ string itemIdTag = "";
+ string revIdTag = "";
+ if (mxlConfig.ContainsKey("item_id")) {
+ itemIdTag = mxlConfig["item_id"];
+ mxlConfig.Remove("item_id");
+ }
+ if (mxlConfig.ContainsKey("item_revision_id")) {
+ revIdTag = mxlConfig["item_revision_id"];
+ mxlConfig.Remove("item_revision_id");
+ }
+ if (string.IsNullOrWhiteSpace(itemIdTag)) {
+ throw new System.Exception("请检查明细表.xml文件,没有配置item_id属性");
+ }
+ StringBuilder errInfo = new StringBuilder();
+ List bomBeans = ReadCADBom(mxlConfig,itemIdTag,revIdTag);
+ if (bomBeans.Count == 0) {
+ KUtil.WriteLog("未读取到明细栏信息");
+ //if (alert)
+ //{
+ // MessageBox.Show("未读取到明细栏信息");
+ //}
+ return;
+ }
+ for (int i = 0; i < bomBeans.Count; i++) {
+ BomBean bean = bomBeans[i];
+ ed1.WriteMessage("明细栏" + i + "详细信息:" + "\n");
+ ed1.WriteMessage("对象信息:" + bean.itemId + (string.IsNullOrWhiteSpace(bean.revId) ? "" : ("/" + bean.revId))+"\n");
+ bean.rev = SearchChintRev(ed1, bean);
+ if (bean.rev == null) {
+ errInfo.Append(" ").Append(bean.ToString()).Append(",");
+ }
+ if (bean.bomProps == null) {
+ continue;
+ }
+ foreach (DictionaryEntry de in bean.bomProps) {
+ ed1.WriteMessage("属性名:" + de.Key + "\t属性值:" + de.Value + "\n");
+ }
+ }
+ if (errInfo.Length > 0) {
+ errInfo.Length = errInfo.Length - 1;
+ if (alert)
+ {
+ MessageBox.Show("未查询到以下对象,请维护后进行操作:\n" + errInfo.ToString());
+ }
+ else
+ {
+ throw new System.Exception("未查询到以下对象,请维护后进行操作:\n" + errInfo.ToString());
+ }
+ return;
+ }
+ ed1.WriteMessage("明细栏个数为:" + bomBeans.Count);
+ //检查明细栏对象是否存在
+
+ //处理标题栏
+ bool foundTitle = false;
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ object rev = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+
+ if (key == null || rev == null) {
+ if (alert)
+ {
+ MessageBox.Show(string.Format("没有找到\"图号\"或者\"版本号\"!"));
+ }
+ else
+ {
+ throw new System.Exception(string.Format("没有找到\"图号\"或者\"版本号\"!"));
+ }
+
+ return;
+ }
+ //Item item = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString());
+ //ItemRevision itemRev = origintool.wxGetItem(btlinfo.Btldatatable[key].ToString(), btlinfo.Btldatatable[rev].ToString());
+ ItemRevision itemRev = SearchRevOrLatestRev(btlinfo.Btldatatable[key].ToString(), btlinfo.Btldatatable[rev].ToString());
+ if (itemRev != null) {
+ if (checkPrivilege) {
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.GetProperties(new ModelObject[] { itemRev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ {
+ if (!itemRev.Is_modifiable) {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "为只读,您没有保存权限!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "为只读,您没有保存权限!");
+ }
+
+ return;
+ }
+ User checkuserinfo = itemRev.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "已被其他用户签出,无法保存到系统!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "已被其他用户签出,无法保存到系统!");
+ }
+
+ return;
+ }
+ }
+ if (itemRev.Release_status_list.Length > 0) {
+ if (alert)
+ {
+ MessageBox.Show(itemRev.Object_string + "已发布!");
+ }
+ else
+ {
+ throw new System.Exception(itemRev.Object_string + "已发布!");
+ }
+
+ return;
+ }
+ }
+ }
+
+ foundTitle = true;
+ //创建BOM
+ if (bomBeans.Count > 0) {
+
+ BomCreator.BomCreator.CreateBom(itemRev, bomBeans,alert);
+ //DialogResult flushbomresult = MessageBox.Show("是否更新BOM:" + btlinfo.Btldatatable[key].ToString(), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (flushbomresult == DialogResult.Yes) {
+ //Assembly ass = Assembly.LoadFile(xmlpath + "BomCreator.dll");
+ //Type tp = ass.GetType("BomCreator.BomCreator");
+ //Object obj = Activator.CreateInstance(tp);
+ //MethodInfo method = tp.GetMethod("CreateBom");
+ //method.Invoke(obj, new object[] { itemRev, bomBeans });
+ //CreateBom(itemRev, bomBeans);
+ //}
+ SocketUtil.Refresh(itemRev.Uid);
+ }
+ }
+ }
+ if (!foundTitle) {
+ throw new Exception("更新BOM失败,没有找到顶层对象信息");
+ }
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/KHQAtoDB.cs b/OriginAutoCAD_chint/hello/KHQAtoDB.cs
new file mode 100644
index 0000000..6e10806
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KHQAtoDB.cs
@@ -0,0 +1,424 @@
+using System;
+using System.Collections.Generic;
+
+//*******************************************//
+// Type Library //
+//*******************************************//
+//using Autodesk.AutoCAD.Customization; //accui.dll
+
+//*******************************************//
+// acdbmgd.dll //
+//*******************************************//
+
+using Autodesk.AutoCAD.DatabaseServices;
+//******************************************//
+
+//--------------------------------------------//
+
+// acmgd.dll //
+
+//------------------------------------------*//
+using Autodesk.AutoCAD.EditorInput;
+using Autodesk.AutoCAD.ApplicationServices;
+using System.Collections;
+using System.Windows.Forms;
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Teamcenter.Hello;
+
+namespace HelloTeamcenter.hello {
+
+ class KHQAtoDB {
+ public static Editor ed;
+ public string itemId {
+ get;
+ set;
+ }
+
+ public string revId {
+ get;
+ set;
+ }
+
+ public Document doc {
+ get;
+ set;
+ }
+
+ public List qcList {
+ get;
+ set;
+ }
+
+ public List ccList {
+ get;
+ set;
+ }
+
+ public List scList {
+ get;
+ set;
+ }
+
+ public KHQAtoDB(Document document) {
+ doc = document;
+ ed = doc.Editor;
+ }
+ //是否存在块表
+ private bool IsExistBlockTable(string blockName) {
+ Document acDoc = doc;
+ using (Transaction t = acDoc.TransactionManager.StartTransaction()) {
+ BlockTable bt = t.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //已有明细栏
+ if (bt.Has(blockName)) {
+ return true;
+ }
+ else
+ return false;
+ }
+ }
+
+ //public void writeData() {
+ // int size = qcList.Count;
+ // int counter = 0;
+ // delete(itemId);
+ // DateTime now = DateTime.Now;
+ // string userUid = "kk";//user.Uid;
+ // for (int i = 0; i < size; i++) {
+ // if (ccList.Contains(qcList[i][0])) {
+ // counter += insert(qcList[i], "CC", userUid, now);
+ // }
+ // else if (scList.Contains(qcList[i][0])) {
+ // counter += insert(qcList[i], "SC", userUid, now);
+ // }
+ // else {
+ // counter += insert(qcList[i], "", userUid, now);
+ // }
+ // }
+ // ed.WriteMessage("增加了" + counter + "条数据\n");
+ //}
+
+ //public void writeData2(User user) {
+ // //排序
+ // //for (int i = 0; i < size; i++) {
+ // // for (int j = 0; j < size - i - 1; j++) {
+ // // int index1 = int.Parse(qcList[j][0]);
+ // // int index2 = int.Parse(qcList[j+1][0]);
+ // // ed.WriteMessage("indexI=" + index1 + "|indexJ=" + index2 + "\n");
+ // // if (index1 > index2) {
+ // // String[] temp = qcList[j];
+ // // qcList[j] = qcList[j+1];
+ // // qcList[j+1] = temp;
+ // // }
+ // // }
+ // //}
+
+ //}
+
+ public bool writeData(User user) {
+ qcList = new List();
+ scList = new List();
+ ccList = new List();
+ Database acCurDb = doc.Database;
+
+ using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable acBlkTbl;
+ acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ // Open the Block table record for read
+ BlockTableRecord acBlkTblRec;
+ acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+ BlockReference reference;
+ BlockTableRecordEnumerator enumbtr = acBlkTblRec.GetEnumerator();
+ while (enumbtr.MoveNext()) {
+ Entity entity = acTrans.GetObject(enumbtr.Current, OpenMode.ForRead) as Entity;
+ if (entity is BlockReference) {
+ reference = entity as BlockReference;
+ //int i = m_Frame.BinarySearch(new PrintFrame() { BKName = reference.Name }, new FrameCompare());
+ if (string.Compare("QCDetail", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ string[] attrArray = new string[] { "", "", "", "" };
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ if (string.Compare("XUHAO", attrRef.Tag, true) == 0) {
+ attrArray[0] = attrRef.TextString;
+ }
+ else if (string.Compare("DOWN", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if(temp.EndsWith("%%D")){
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[1] = temp;
+ }
+ else if (string.Compare("MIDDLE", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if (temp.EndsWith("%%D")) {
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[2] = temp;
+ }
+ else if (string.Compare("UP", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if (temp.EndsWith("%%D")) {
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[3] = temp;
+ }
+ }
+ if (attrArray[0] != null && attrArray[0] != "")
+ qcList.Add(attrArray);
+ }
+ else if (string.Compare("SC", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ //ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ string attrStr = null;
+ if (attrRef.Tag.StartsWith("SC")) {
+ attrStr = attrRef.TextString;
+ }
+ if (attrStr != null)
+ scList.Add(attrStr);
+ }
+ }
+ else if (string.Compare("CC", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ //ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ string attrArray = null;
+ if (attrRef.Tag.StartsWith("CC")) {
+ attrArray = attrRef.TextString;
+ }
+ if (attrArray != null)
+ ccList.Add(attrArray);
+ }
+ }
+ //else if (string.Compare("GYBTL-JXTX", reference.Name, true) == 0) {
+ // AttributeCollection attrs = reference.AttributeCollection;
+ // for (int i = 0; i < attrs.Count; i++) {
+ // AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ // //ed.WriteMessage("###属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ // if (attrRef.Tag.Contains("TUHAO")) {
+ // itemId = attrRef.TextString;
+ // }
+ // if (attrRef.Tag.Contains("VERSION")) {
+ // revId = attrRef.TextString;
+ // }
+ // }
+ //}
+ //else if (string.Compare("KHBTL", reference.Name, true) == 0) {
+ // AttributeCollection attrs = reference.AttributeCollection;
+ // for (int i = 0; i < attrs.Count; i++) {
+ // AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ // //ed.WriteMessage("###属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ // if (attrRef.Tag.Contains("TUHAO")) {
+ // itemId = attrRef.TextString;
+ // }
+ // if (attrRef.Tag.Contains("VERSION")) {
+ // revId = attrRef.TextString;
+ // }
+ // }
+ //}
+
+ }
+ }
+ acTrans.Commit();
+ }
+
+ if (qcList.Count <= 0) {
+ MessageBox.Show("没有找到标注数据");
+ return false;
+ }
+
+ OriginTool origintool = new OriginTool();
+ ed.WriteMessage("\n开始获取标题栏信息...\n");
+
+ OriginReadXml readxml = new OriginReadXml();
+ ArrayList btllist = readxml.OriginReadBTLXML(Hello.xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++) {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ ed.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+
+ //处理标题栏
+ bool foundBTL = false;
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ MessageBox.Show("系统没有找到\"图号\"所对应的图纸信息,系统中断\n");
+ return false;
+ }
+ itemId = btlinfo.Btldatatable[key].ToString();
+ object key2 = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key2 == null) {
+ continue;
+ }
+ revId = btlinfo.Btldatatable[key2].ToString();
+ if (string.Compare("", itemId, true) != 0 && string.Compare("", revId, true) != 0) {
+ QAData qaForm = new QAData(user, qcList, ccList, scList, itemId, revId);
+ qaForm.ShowDialog();
+ foundBTL = true;
+ }
+ }
+
+ if (!foundBTL) {
+ MessageBox.Show("没有找到对象ID或版本号信息\n请检查数据是否完整,或标题栏.xml文件中本图纸标题栏信息是否有误\n");
+ }
+ return true;
+ }
+
+ public bool writeHistoryData(User user) {
+ qcList = new List();
+ scList = new List();
+ ccList = new List();
+ Database acCurDb = doc.Database;
+
+ using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable acBlkTbl;
+ acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ // Open the Block table record for read
+ BlockTableRecord acBlkTblRec;
+ acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
+ OpenMode.ForRead) as BlockTableRecord;
+ BlockReference reference;
+ BlockTableRecordEnumerator enumbtr = acBlkTblRec.GetEnumerator();
+ while (enumbtr.MoveNext()) {
+ Entity entity = acTrans.GetObject(enumbtr.Current, OpenMode.ForRead) as Entity;
+ if (entity is BlockReference) {
+ reference = entity as BlockReference;
+ //int i = m_Frame.BinarySearch(new PrintFrame() { BKName = reference.Name }, new FrameCompare());
+ if (string.Compare("QCDetail", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ string[] attrArray = new string[] { "", "", "", "" };
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ //ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ if (string.Compare("XUHAO", attrRef.Tag, true) == 0) {
+ attrArray[0] = attrRef.TextString;
+ }
+ else if (string.Compare("DOWN", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if (temp.EndsWith("%%D")) {
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[1] = temp;
+ }
+ else if (string.Compare("MIDDLE", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if (temp.EndsWith("%%D")) {
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[2] = temp;
+ }
+ else if (string.Compare("UP", attrRef.Tag, true) == 0) {
+ string temp = attrRef.TextString.ToUpper();
+ if (temp.EndsWith("%%D")) {
+ temp = temp.Replace("%%D", "°");
+ }
+ attrArray[3] = temp;
+ }
+ }
+ if (attrArray[0] != null && attrArray[0] != "")
+ qcList.Add(attrArray);
+ }
+ else if (string.Compare("SC", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ //ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ string attrStr = null;
+ if (attrRef.Tag.StartsWith("SC")) {
+ attrStr = attrRef.TextString;
+ }
+ if (attrStr != null)
+ scList.Add(attrStr);
+ }
+ }
+ else if (string.Compare("CC", reference.Name, true) == 0) {
+ AttributeCollection attrs = reference.AttributeCollection;
+ for (int i = 0; i < attrs.Count; i++) {
+ AttributeReference attrRef = acTrans.GetObject(attrs[i], OpenMode.ForRead) as AttributeReference;
+ //ed.WriteMessage("属性:" + attrRef.Tag + " = " + attrRef.TextString + "\n");
+ string attrArray = null;
+ if (attrRef.Tag.StartsWith("CC")) {
+ attrArray = attrRef.TextString;
+ }
+ if (attrArray != null)
+ ccList.Add(attrArray);
+ }
+ }
+ }
+ }
+ acTrans.Commit();
+ }
+
+ if (qcList.Count <= 0) {
+ Hello.WriteHistoryLog("没有找到标注数据\r\n");
+ return false;
+ }
+
+ OriginTool origintool = new OriginTool();
+ ed.WriteMessage("\n开始获取标题栏信息...\n");
+
+ OriginReadXml readxml = new OriginReadXml();
+ ArrayList btllist = readxml.OriginReadBTLXML(Hello.xmlpath);
+
+ //for (int i = 0; i < btllist.Count; i++) {
+ // OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ // //ed.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ // //ed.WriteMessage("标题栏详细信息:" + "\n");
+ // foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ // ed.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ // "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ // "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ // "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ // }
+ //}
+
+ //处理标题栏
+ bool foundBTL = false;
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ Hello.WriteHistoryLog("系统没有找到\"图号\"所对应的图纸信息,系统中断\r\n");
+ return false;
+ }
+ itemId = btlinfo.Btldatatable[key].ToString();
+ object key2 = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key2 == null) {
+ continue;
+ }
+ revId = btlinfo.Btldatatable[key2].ToString();
+ if (string.Compare("", itemId, true) != 0 && string.Compare("", revId, true) != 0) {
+ foundBTL = true;
+ QAData qaForm = new QAData(user, qcList, ccList, scList, itemId, revId);
+ if (qaForm.saveHistoryData()) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ }
+
+ if (!foundBTL) {
+ Hello.WriteHistoryLog("没有找到对象ID或版本号信息\n请检查数据是否完整,或标题栏.xml文件中本图纸标题栏信息是否有误\r\n");
+ }
+ return true;
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/KOriginReadXml.cs b/OriginAutoCAD_chint/hello/KOriginReadXml.cs
new file mode 100644
index 0000000..4f906b9
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KOriginReadXml.cs
@@ -0,0 +1,608 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Xml;
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.EditorInput;
+
+namespace HelloTeamcenter.hello
+{
+ class KOriginReadXml
+ {
+ private Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ private Database db;
+
+ public KOriginReadXml(Database db)
+ {
+ this.db = db;
+ //this.ed = acDoc.Editor;
+ }
+
+ public OriginBTL OriginReadBTL(string filepath,string btlname)
+ {
+ OriginBTL btlinfo = new OriginBTL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认标题栏.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ string tempbtlname = xeonetitle.GetAttribute("blockname").ToString();
+ ed.WriteMessage("标题栏块名称:" + tempbtlname + "\n");
+
+ if (tempbtlname == btlname)
+ {
+ //获得title子节点
+ XmlNodeList onetitleinfo = xeonetitle.ChildNodes;
+
+ btlinfo.Btlname = btlname;
+ foreach (XmlNode node in onetitleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ string titletype = "";
+ string titlecad = "";
+ string titletc = "";
+ string titlewriteable = "";
+ string titleupdateable = "";
+ string titlefromtc = "";
+ if (xeone.HasAttribute("type"))
+ {
+ titletype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ titlecad = xeone.GetAttribute("cad").ToString();
+ ed.WriteMessage("CAD ATTR =" + titlecad + "\n");
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ titletc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("writeable"))
+ {
+ titlewriteable = xeone.GetAttribute("writeable").ToString();
+ }
+ if (xeone.HasAttribute("updateable"))
+ {
+ titleupdateable = xeone.GetAttribute("updateable").ToString();
+ }
+ if (xeone.HasAttribute("fromtc"))
+ {
+ titlefromtc = xeone.GetAttribute("fromtc").ToString();
+ }
+ /*ed.WriteMessage(xeone.GetAttribute("type").ToString() + " " +
+ xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() +"\n");*/
+ btlinfo.Btldatatable = KOriginTool.TableHasKey(btlinfo.Btldatatable, titlecad, "");
+ btlinfo.Btltctable = KOriginTool.TableHasKey(btlinfo.Btltctable, titlecad, titletc);
+ btlinfo.Btltypetable = KOriginTool.TableHasKey(btlinfo.Btltypetable, titlecad, titletype);
+ btlinfo.Btlwritetable = KOriginTool.TableHasKey(btlinfo.Btlwritetable, titlecad, titlewriteable);
+ btlinfo.Btlupdatetable = KOriginTool.TableHasKey(btlinfo.Btlupdatetable, titlecad, titleupdateable);
+ btlinfo.Btlfromtctable = KOriginTool.TableHasKey(btlinfo.Btlfromtctable,titlecad,titlefromtc);
+ }
+ }
+ }
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return btlinfo;
+ }
+
+ //获取标题栏.XML信息,将信息与OriginBTL对应
+ public ArrayList OriginReadBTLXML(string filepath)
+ {
+ ArrayList listbtl = new ArrayList();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "标题栏.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认标题栏.xml文件配置含有blockname属性\n");
+ return listbtl;
+ }
+ string btlname = xeonetitle.GetAttribute("blockname").ToString();
+ ed.WriteMessage("标题栏块名称:" + btlname + "\n");
+
+ OriginBTL btlinfo = KOriginTool.GetTitleInfo(filepath, btlname);
+ if (btlinfo != null)
+ listbtl.Add(btlinfo);
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message+"\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return listbtl;
+ }
+
+
+ public OriginMXL OriginReadMXL(string filepath)
+ {
+ OriginMXL mxlinfo = new OriginMXL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+ KOriginTool KOriginTool = new KOriginTool(db);
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ //获得bomline子节点
+ XmlNodeList onebomlineinfo = xeonebomline.ChildNodes;
+
+ mxlinfo.Mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ foreach (XmlNode node in onebomlineinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+
+ /*ed.WriteMessage(xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() + " " +
+ xeone.GetAttribute("is_bomline").ToString() + " " +
+ xeone.GetAttribute("overwrite").ToString() + "\n");*/
+ string bomlinetype = "";
+ string bomlinecad = "";
+ string bomlinetc = "";
+ string isbomline = "";
+ string updatebomline = "";
+
+ if (xeone.HasAttribute("type"))
+ {
+ bomlinetype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ bomlinecad = xeone.GetAttribute("cad").ToString();
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ bomlinetc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("is_bomline"))
+ {
+ isbomline = xeone.GetAttribute("is_bomline").ToString();
+ }
+ if (xeone.HasAttribute("overwrite"))
+ {
+ updatebomline = xeone.GetAttribute("overwrite").ToString();
+ }
+ mxlinfo.Mxltypetable = KOriginTool.TableHasKey(mxlinfo.Mxltypetable, bomlinecad, bomlinetype);
+ mxlinfo.Mxldatatable = KOriginTool.TableHasKey(mxlinfo.Mxldatatable, bomlinecad, "");
+ mxlinfo.Mxltctable = KOriginTool.TableHasKey(mxlinfo.Mxltctable, bomlinecad, bomlinetc);
+ mxlinfo.Mxlisbomtable = KOriginTool.TableHasKey(mxlinfo.Mxlisbomtable, bomlinecad, isbomline);
+ mxlinfo.Mxlupdatetable = KOriginTool.TableHasKey(mxlinfo.Mxlupdatetable, bomlinecad, updatebomline);
+
+ ed.WriteMessage("==================================\n");
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return mxlinfo;
+ }
+
+
+
+ //获取明细表.XML信息,将信息与OriginMXL对应
+ public List OriginReadMXLXML(string filepath)
+ {
+ List listmxl = new List();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "明细表.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+ string mxlname = "";
+
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString() + "\n");
+ mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ }
+ else
+ {
+ ed.WriteMessage("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ }
+
+ listmxl = KOriginTool.GetMXLInfo(filepath, mxlname);
+
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return listmxl;
+ }
+
+
+
+ //获取Item类型.xml文件信息
+ public Hashtable OriginReadTypeXML(string filepath,Hashtable itemtypetable)
+ {
+
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "Item类型.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点ItemTypes
+ XmlNodeList xmltypelist = xmldocument.SelectSingleNode("ItemTypes").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+
+
+ foreach (XmlNode onetype in xmltypelist)
+ {
+ //获得一个ItemType
+ XmlElement xeonetype = (XmlElement)onetype;
+ //获得ItemType子节点
+ XmlNodeList onetypeinfo = xeonetype.ChildNodes;
+ foreach (XmlNode node in onetypeinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ //string typecad = "";
+ string typetc = "";
+
+ //if (xeone.HasAttribute("cad"))
+ //{
+ // typecad = xeone.GetAttribute("cad").ToString();
+ //}
+ //else
+ // ed.WriteMessage("Item类型.xml文件配置不符合规范\n");
+ if (xeone.HasAttribute("tc"))
+ {
+ typetc = xeone.GetAttribute("tc").ToString();
+ }
+ else
+ ed.WriteMessage("Item类型.xml文件配置不符合规范\n");
+ /*ed.WriteMessage(xeone.GetAttribute("type").ToString() + " " +
+ xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() +"\n");*/
+ itemtypetable = KOriginTool.TableHasKey(itemtypetable, typetc, typetc);
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return itemtypetable;
+ }
+
+
+ //获取Item类型.xml文件信息
+ public OriginDataSet OriginReadDataSetXML(string filepath)
+ {
+ OriginDataSet dataset = new OriginDataSet();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "数据集.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点ItemTypes
+ XmlNodeList xmldatalist = xmldocument.SelectSingleNode("DataSets").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+
+
+ foreach (XmlNode onedata in xmldatalist)
+ {
+ //获得一个data
+ XmlElement xeonedata = (XmlElement)onedata;
+ if (xeonedata.HasAttribute("type") && xeonedata.HasAttribute("refname") && xeonedata.HasAttribute("separator"))
+ {
+ dataset.Datatype = xeonedata.GetAttribute("type").ToString();
+ dataset.Refname = xeonedata.GetAttribute("refname").ToString();
+ dataset.Separator = xeonedata.GetAttribute("separator").ToString();
+ ed.WriteMessage(dataset.Datatype + "\t" + dataset.Refname + "\t" + dataset.Separator + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("数据集.xml文件配置有误,请确认!\n");
+ return null;
+ }
+
+ //获得dataset子节点
+ XmlNodeList onedatainfo = xeonedata.ChildNodes;
+ foreach (XmlNode node in onedatainfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ if (xeone.HasAttribute("seq") && xeone.HasAttribute("from"))
+ {
+ int seq = Convert.ToInt32(xeone.GetAttribute("seq").ToString());
+ string from = xeone.GetAttribute("from").ToString();
+ dataset.Dsnametable = KOriginTool.TableHasKey(dataset.Dsnametable, seq, from);
+ ed.WriteMessage(seq+"\t"+from+"\n");
+ }
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return dataset;
+ }
+
+
+ //获取规则.xml文件信息
+ public OriginTypeRule OriginReadRuleXML(string filepath)
+ {
+ OriginTypeRule origintyperule = new OriginTypeRule();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "规则.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点Rule
+ XmlNodeList xmlrulelist = xmldocument.SelectSingleNode("Rules").ChildNodes;
+
+ KOriginTool KOriginTool = new KOriginTool(db);
+
+
+ foreach (XmlNode onerule in xmlrulelist)
+ {
+ //获得一个rule
+ XmlElement xeonerule = (XmlElement)onerule;
+ if (xeonerule.HasAttribute("default"))
+ {
+ origintyperule.Defaulttype = xeonerule.GetAttribute("default").ToString();
+ ed.WriteMessage("默认类型:"+origintyperule.Defaulttype + "\n");
+ }
+ else
+ {
+ origintyperule.Defaulttype = "Item";
+ }
+
+ //获得rule子节点
+ XmlNodeList oneruleinfo = xeonerule.ChildNodes;
+ foreach (XmlNode node in oneruleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ if (xeone.HasAttribute("seq"))
+ {
+ int seq = Convert.ToInt32(xeone.GetAttribute("seq").ToString());
+ ed.WriteMessage("序号" + seq + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("规则.xml文件中没有配置seq属性列,请检查配置\n");
+ return null;
+ }
+ string seqstring = xeone.GetAttribute("seq").ToString();
+ if (xeone.HasAttribute("source"))
+ {
+ string sourcestring = xeone.GetAttribute("source").ToString();
+ ed.WriteMessage("序号:"+seqstring+"要处理的对象:" + sourcestring + "\n");
+ origintyperule.Sourcetable = KOriginTool.TableHasKey(origintyperule.Sourcetable, seqstring, sourcestring);
+ }
+ else
+ origintyperule.Sourcetable = KOriginTool.TableHasKey(origintyperule.Sourcetable, seqstring, "");
+ if (xeone.HasAttribute("startwith"))
+ {
+ string startstring = xeone.GetAttribute("startwith").ToString();
+ ed.WriteMessage("序号:" + seqstring + "startwith:" + startstring + "\n");
+ origintyperule.Starttable = KOriginTool.TableHasKey(origintyperule.Starttable, seqstring, startstring);
+ }
+ else
+ origintyperule.Starttable = KOriginTool.TableHasKey(origintyperule.Starttable, seqstring, "");
+ if (xeone.HasAttribute("endwith"))
+ {
+ string endstring = xeone.GetAttribute("endwith").ToString();
+ ed.WriteMessage("序号:" + seqstring + "endwith:" + endstring + "\n");
+ origintyperule.Endtable = KOriginTool.TableHasKey(origintyperule.Endtable, seqstring, endstring);
+ }
+ else
+ origintyperule.Endtable = KOriginTool.TableHasKey(origintyperule.Endtable, seqstring, "");
+ if (xeone.HasAttribute("contain"))
+ {
+ string containstring = xeone.GetAttribute("contain").ToString();
+ ed.WriteMessage("序号:" + seqstring + "contain:" + containstring + "\n");
+ origintyperule.Containtable = KOriginTool.TableHasKey(origintyperule.Containtable,seqstring,containstring);
+ }
+ else
+ origintyperule.Containtable = KOriginTool.TableHasKey(origintyperule.Containtable, seqstring, "");
+ if (xeone.HasAttribute("equal"))
+ {
+ string equalstring = xeone.GetAttribute("equal").ToString();
+ ed.WriteMessage("序号:" + seqstring + "equal:" + equalstring + "\n");
+ origintyperule.Equaltable = KOriginTool.TableHasKey(origintyperule.Equaltable,seqstring,equalstring);
+ }
+ else
+ origintyperule.Equaltable = KOriginTool.TableHasKey(origintyperule.Equaltable, seqstring, "");
+ if (xeone.HasAttribute("type"))
+ {
+ string typestring = xeone.GetAttribute("type").ToString();
+ ed.WriteMessage("序号:" + seqstring + "type:" + typestring + "\n");
+ origintyperule.Typetable = KOriginTool.TableHasKey(origintyperule.Typetable,seqstring,typestring);
+ }
+ else
+ origintyperule.Typetable = KOriginTool.TableHasKey(origintyperule.Typetable, seqstring, "");
+ if (xeone.HasAttribute("true"))
+ {
+ string truestring = xeone.GetAttribute("true").ToString();
+ ed.WriteMessage("序号:" + seqstring + "true:" + truestring + "\n");
+ origintyperule.Truetable = KOriginTool.TableHasKey(origintyperule.Truetable,seqstring,truestring);
+ }
+ else
+ origintyperule.Truetable = KOriginTool.TableHasKey(origintyperule.Truetable, seqstring, "");
+ if (xeone.HasAttribute("false"))
+ {
+ string falsestring = xeone.GetAttribute("false").ToString();
+ ed.WriteMessage("序号:" + seqstring + "false:" + falsestring + "\n");
+ origintyperule.Falsetable = KOriginTool.TableHasKey(origintyperule.Falsetable,seqstring,falsestring);
+ }
+ else
+ origintyperule.Falsetable = KOriginTool.TableHasKey(origintyperule.Falsetable, seqstring, "");
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return origintyperule;
+ }
+
+ }
+
+
+}
diff --git a/OriginAutoCAD_chint/hello/KOriginTool.cs b/OriginAutoCAD_chint/hello/KOriginTool.cs
new file mode 100644
index 0000000..2282b77
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KOriginTool.cs
@@ -0,0 +1,1557 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Text;
+using System.IO;
+using System.Data;
+//using System.Windows.Forms;
+
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Services.Strong.Query;
+
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using System.Configuration;
+using System.Reflection;
+
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+namespace HelloTeamcenter.hello
+{
+
+ class KOriginTool
+ {
+
+ private Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ private static User loginuser;
+ private Database db;
+
+ public static User Loginuser
+ {
+ get { return KOriginTool.loginuser; }
+ set { KOriginTool.loginuser = value; }
+ }
+
+ public KOriginTool(Database db)
+ {
+ this.db = db;
+ //this.ed = acDoc.Editor;
+ }
+
+ //获取标题栏信息
+ public OriginBTL GetTitleInfo(string filepath,string btlname)
+ {
+ //OriginTool origintool = new OriginTool();
+ OriginBTL btlinfo = new OriginBTL();
+ OriginReadXml originreadxml = new OriginReadXml();
+ btlinfo = originreadxml.OriginReadBTL(filepath,btlname);
+ if(btlinfo ==null)
+ return null;
+
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (btlinfo.Btldatatable.ContainsKey(aRef.Tag))
+ {
+ btlinfo.Btldatatable = this.TableHasKey(btlinfo.Btldatatable, aRef.Tag, aRef.TextString);
+ }
+
+ btlinfo.Btlinfotable = this.TableHasKey(btlinfo.Btlinfotable, aRef.Tag, aRef.TextString);
+
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return btlinfo;
+ }
+
+ public static string getGroupSource(string groupName)
+ {
+
+ var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
+ string path = Assembly.GetExecutingAssembly().Location;
+ AppSettingsSection section = appConfig.Sections.Get("group") as AppSettingsSection;
+ if (section == null)
+ {
+ KUtil.WriteLog("无法读取");
+ return "";
+ }
+ KeyValueConfigurationElement cif = section.Settings[groupName];
+ if (cif == null)
+ {
+ KUtil.WriteLog("未配置-->" + groupName);
+ return "";
+ }
+ return cif.Value == null ? "" : cif.Value;
+ }
+
+ public void SetTitleInfo(string btlname, Hashtable tempvaluetable)
+ {
+ ed.WriteMessage("块名称:" + btlname + "\n");
+ // Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
+
+ if (blt.Has(btlname))
+ {
+
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+
+ foreach (ObjectId item in bltr)
+ {
+
+ Entity ent = null;
+ try
+ {
+
+ ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ }catch(Autodesk.AutoCAD.Runtime.Exception e){
+ continue;
+ }
+
+ if (ent.GetType().Name == "BlockReference")
+ {
+
+ BlockReference bref = (BlockReference)ent;
+
+ if (bref.Name == btlname)
+ {
+
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ ed.WriteMessage("设置" + aRef.Tag.ToString() + "\t" + tempvaluetable[aRef.Tag.ToString()].ToString() + "\n");
+ if (string.IsNullOrWhiteSpace(tempvaluetable[aRef.Tag.ToString()].ToString())) {
+ ed.WriteMessage("跳过空属性\n");
+ continue;
+ }
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+
+ }
+
+ }
+ }
+ }
+ System.Windows.Forms.MessageBox.Show("属性同步结束!", "提示");
+ }
+ tran.Commit();
+ }
+
+ }
+
+
+
+ public void SetTitleInfo_v1(string btlname, Hashtable tempvaluetable)
+ {
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ ed.WriteMessage("设置" + aRef.Tag.ToString() + "\t" + tempvaluetable[aRef.Tag.ToString()].ToString() + "\n");
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+ }
+ }
+ }
+ }
+ //System.Windows.Forms.MessageBox.Show("属性同步结束!", "提示");
+ }
+ tran.Commit();
+ }
+
+ }
+
+ //判断当前table是否还有指定key值,如果有,则用新的value值替换
+ public Hashtable TableHasKey(Hashtable target, object key, object value)
+ {
+ if(target.Contains(key))
+ {
+ target.Remove(key);
+ }
+ target.Add(key, value);
+
+ return target;
+ }
+
+
+ //获取明细栏信息
+ public List GetMXLInfo(string filepath, string mxlname)
+ {
+ //OriginTool origintool = new OriginTool();
+ List mxllist = new List();
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+ if (blt.Has(mxlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == mxlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ OriginMXL onemxlinfo = new OriginMXL();
+ OriginReadXml originreadxml = new OriginReadXml();
+ onemxlinfo = originreadxml.OriginReadMXL(filepath);
+
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (onemxlinfo.Mxldatatable.ContainsKey(aRef.Tag))
+ {
+ onemxlinfo.Mxldatatable = this.TableHasKey(onemxlinfo.Mxldatatable, aRef.Tag, aRef.TextString);
+ }
+
+ onemxlinfo.Mxlinfotable = this.TableHasKey(onemxlinfo.Mxlinfotable, aRef.Tag, aRef.TextString);
+
+ }
+
+ mxllist.Add(onemxlinfo);
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return mxllist;
+ }
+
+ ///
+
+
+ public bool isChintCNBTL(BlockTable block,string blockName, Transaction tran, Database db) {
+ bool flag = false;
+ BlockTableRecord modelSpace = tran.GetObject(block[blockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference br = new BlockReference(new Point3d(0, 0, 0), modelSpace.ObjectId);
+ BlockTableRecord btrec = tran.GetObject(br.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
+ if (btrec.HasAttributeDefinitions) {
+ // ed.WriteMessage("ppppp\n");
+ AttributeCollection atcoll = br.AttributeCollection;
+ foreach (ObjectId id in btrec) {
+ DBObject obj = id.GetObject(OpenMode.ForRead);
+ if (obj is Entity) {
+ Entity ent = obj as Entity;
+ if (ent is AttributeDefinition) {
+
+ AttributeDefinition attdef = ent as AttributeDefinition;
+ if (attdef != null) {
+ if( attdef.Tag.StartsWith("图样代号")){
+ if (attdef.Prompt.Contains("图样代号")) {
+ flag = true;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ return flag;
+ }
+
+ public Point3d getBtlPoint(BlockTable block, string blockName, Transaction tran, Database acCurDb) {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ if (blockName.Equals(bref.Name)) {
+ return bref.Position;
+ }
+ }
+ }
+ return new Point3d(0, 0, 0);
+ }
+
+ public Point3d getPoint3d(string btlName, BlockTable block, Transaction tran, Database acCurDb) {
+ //Point3d pointOrigin = new Point3d(0, 0, 0);
+ string suffix = "";
+ if (isChintCNBTL(block, btlName, tran, acCurDb)) {
+ suffix = "-CN";
+ }
+ else {
+ suffix = "-EN";
+ }
+ string config = btlName + suffix;
+ string xStr = GetConfigValue(config + "-X");
+ string yStr = GetConfigValue(config + "-Y");
+ float x = StrToFloat(xStr);
+ float y = StrToFloat(yStr);
+ return new Point3d(x, y, 0);
+ }
+
+ public static string GetConfigValue(string configName) {
+ var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
+ KeyValueConfigurationElement config = appConfig.AppSettings.Settings[configName];
+ if (config == null) {
+ return "";
+ }
+ return config.Value == null ? "" : config.Value;
+ }
+
+ public static float StrToFloat(object FloatString) {
+ float result;
+ if (FloatString != null) {
+ if (float.TryParse(FloatString.ToString(), out result))
+ return result;
+ else {
+ return (float)0.00;
+ }
+ }
+ else {
+ return (float)0.00;
+ }
+ }
+
+ public Point3d getChintBomInsertPoint(double bili) {
+
+ Database acCurDb = db;
+ //Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ Point3d btlPoint = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ string blockName = getBTLName(block);
+ if (blockName != null && !"".Equals(blockName)) {
+ pointOrigin = getPoint3d(blockName, block, tran, acCurDb);
+ btlPoint = getBtlPoint(block, blockName, tran, acCurDb);
+ ed.WriteMessage("标题栏坐标:" + btlPoint.X + ", " + btlPoint.Y + "\n");
+ }
+ //查找存放明细栏的图框
+ //if (block.Has("CHINT-TITLE-A0")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A0", block, tran, acCurDb);
+
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A0")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A0", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A1")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A1", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A1")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A1", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A2")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A2", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A2")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A2", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A3")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A3", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A3")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A3", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A4")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A4", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A4")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A4", block, tran, acCurDb);
+ //}
+ tran.Commit();
+ }
+ pointOrigin = ConvertBili(pointOrigin, bili);
+ return new Point3d(btlPoint.X + pointOrigin.X, btlPoint.Y + pointOrigin.Y, 0);
+ }
+
+ private string getBTLName(BlockTable block) {
+ string blockName = "";
+ if (block.Has("CHINT-TITLE-A0")) {
+ blockName = "CHINT-TITLE-A0";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A0")) {
+ blockName = "GC-CHINT-TITLE-A0";
+ }
+ else if (block.Has("CHINT-TITLE-A1")) {
+ blockName = "CHINT-TITLE-A1";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A1")) {
+ blockName = "GC-CHINT-TITLE-A1";
+ }
+ else if (block.Has("CHINT-TITLE-A2")) {
+ blockName = "CHINT-TITLE-A2";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A2")) {
+ blockName = "GC-CHINT-TITLE-A2";
+ }
+ else if (block.Has("CHINT-TITLE-A3")) {
+ blockName = "CHINT-TITLE-A3";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A3")) {
+ blockName = "GC-CHINT-TITLE-A3";
+ }
+ else if (block.Has("CHINT-TITLE-A4")) {
+ blockName = "CHINT-TITLE-A4";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A4")) {
+ blockName = "GC-CHINT-TITLE-A4";
+ }
+ return blockName;
+ }
+
+
+ public double getChintBomInsertBili() {
+ double mybili = 1.0d;
+
+ Database acCurDb = db;
+ //Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name.StartsWith("CHINT-TITLE-A")||bref.Name.StartsWith("GC-CHINT-TITLE-A")) {
+ //ed.WriteMessage("scale x:" + (bref.ScaleFactors == null ? "" : bref.ScaleFactors.X + "") + "\n");
+ if (bref.ScaleFactors != null&&bref.ScaleFactors.X!=0) {
+ mybili = 1.0d / bref.ScaleFactors.X;
+ ed.WriteMessage("读取比例:"+bref.Name+" = "+mybili+"\n");
+ }
+ break;
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return mybili;
+ }
+
+
+ public Point3d getChintBomInsertPoint_old() {
+
+ Database acCurDb = db;
+ //Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //查找存放明细栏的图框
+ if (block.Has("CHINT-TITLE-A0")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A0", tran, acCurDb)) {
+ pointOrigin = new Point3d(2239.0336, -313.5048, 0);
+ }
+ else {
+ pointOrigin = new Point3d(766.3449, -1092.2177, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A0")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A0", tran, acCurDb)) {
+ pointOrigin = new Point3d(2268.4361, -380.0687, 0);
+ }
+ else {
+ pointOrigin = new Point3d(2122.6918, -311.0528, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A1")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A1", tran, acCurDb)) {
+ pointOrigin = new Point3d(2016.6554, -356.938, 0);
+ }
+ else {
+ pointOrigin = new Point3d(3874.9229, -442.1908, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A1")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A1", tran, acCurDb)) {
+ pointOrigin = new Point3d(2001.4803, -318.9944, 0);
+ }
+ else {
+ pointOrigin = new Point3d(3874.9229, -432.1908, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A2")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A2", tran, acCurDb)) {
+ pointOrigin = new Point3d(286.1828, -853.9018, 0);
+ }
+ else {
+ pointOrigin = new Point3d(1815.9079, -291.1625, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A2")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A2", tran, acCurDb)) {
+ pointOrigin = new Point3d(333.6702, -814.4684, 0);
+ }
+ else {
+ pointOrigin = new Point3d(1815.9079, -281.1625, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A3")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A3", tran, acCurDb)) {
+ pointOrigin = new Point3d(283.1309, -284.1189, 0);
+ }
+ else {
+ pointOrigin = new Point3d(283.1309, -284.1189, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A3")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A3", tran, acCurDb)) {
+ pointOrigin = new Point3d(-225.9579, -274.1189, 0);
+ }
+ else {
+ pointOrigin = new Point3d(283.1309, -274.1189, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A4")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A4", tran, acCurDb)) {
+ pointOrigin = new Point3d(14.0998, -240.4484, 0);
+ }
+ else {
+ pointOrigin = new Point3d(-95.1342, -235.1224, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A4")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A4", tran, acCurDb)) {
+ pointOrigin = new Point3d(261.4192, -226.4351, 0);
+ }
+ else {
+ pointOrigin = new Point3d(-95.1342, -225.1224, 0);
+ }
+ }
+ tran.Commit();
+ }
+ return pointOrigin;
+ }
+
+ public Point3d ConvertBili(Point3d p, double bili) {
+ double[] dMatrix = new double[16];
+ dMatrix[0] = 1.0 / bili;
+ dMatrix[1] = 0.0;
+ dMatrix[2] = 0.0;
+ dMatrix[3] = 0.0; //-1642.62;//-3285.25;
+
+ dMatrix[4] = 0.0;
+ dMatrix[5] = 1.0 / bili;
+ dMatrix[6] = 0.0;
+ dMatrix[7] = 0.0; //-1249.29;//-2498.59;
+
+ dMatrix[8] = 0.0;
+ dMatrix[9] = 0.0;
+ dMatrix[10] = 1.0;
+ dMatrix[11] = 0.0;
+
+ dMatrix[12] = 0.0;
+ dMatrix[13] = 0.0;
+ dMatrix[14] = 0.0;
+ dMatrix[15] = 1.0;
+ return p.TransformBy(new Matrix3d(dMatrix));
+ }
+
+
+
+
+ ///
+ /// 设置块的属性
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void insertAttri(BlockReference br, Transaction tran,Database db,BomMsgBean bean) {
+
+ BlockTableRecord btrec = tran.GetObject(br.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
+ if (btrec.HasAttributeDefinitions)
+ {
+ // ed.WriteMessage("ppppp\n");
+ AttributeCollection atcoll = br.AttributeCollection;
+ foreach(ObjectId id in btrec){
+ DBObject obj = id.GetObject(OpenMode.ForRead) ;
+ if(obj is Entity){
+ Entity ent = obj as Entity;
+ if (ent is AttributeDefinition) {
+
+ AttributeDefinition attdef = ent as AttributeDefinition;
+ if (attdef!=null)
+ {
+ AttributeReference attref = new AttributeReference();
+ attref.SetDatabaseDefaults();
+ attref.SetAttributeFromBlock(attdef, br.BlockTransform);
+ attref.Position = attdef.Position.TransformBy(br.BlockTransform);
+ attref.Tag = attdef.Tag;
+ if (bean != null)
+ {
+ if (attref.Tag.StartsWith("序号")) //if (attref.Tag.Equals("1GENST{2.8}"))
+ {
+ attref.TextString = bean.Index;
+
+ }
+ else if (attref.Tag.StartsWith("图样代号"))//else if (attref.Tag.Equals("11GENST{15.2}"))
+ {
+ attref.TextString = bean.CodeNo;
+ }
+ else if (attref.Tag.StartsWith("图样名称"))//else if (attref.Tag.Equals("28GENST{11.2}"))
+ {
+ attref.TextString = bean.Name;
+ // attref.TextStyleId = "";
+ }
+ else if (attref.Tag.StartsWith("数量"))//else if (attref.Tag.Equals("12GENST{2.4}"))
+ {
+ attref.TextString = bean.Quantity.Replace(".0000","");
+ }
+ else if (attref.Tag.StartsWith("材料"))//else if (attref.Tag.Equals("9GENST{9.6}"))
+ {
+ attref.TextString = bean.Material;
+ }
+ else if (attref.Tag.StartsWith("单重"))// else if (attref.Tag.Equals("15GENST{5.6}"))
+ {
+ attref.TextString = bean.Zhongliang;
+ }
+ else if (attref.Tag.StartsWith("规格"))// else if (attref.Tag.Equals("16GENST{5.6}"))
+ {
+ attref.TextString = bean.Gg;
+ }
+ else if (attref.Tag.StartsWith("备注"))//else if (attref.Tag.Equals("24GENST{19.4}"))
+ {
+ attref.TextString = bean.Note;
+ }
+ else if (attref.Tag.StartsWith("小计")) {
+ attref.TextString = bean.Xiaoji;
+
+ }
+ /*else
+ {
+ attref.TextString = attdef.TextString;
+ }
+ */
+ }
+ else {
+ attref.TextString = attdef.TextString;
+ }
+ attref.AdjustAlignment(db);
+ atcoll.AppendAttribute(attref);
+ tran.AddNewlyCreatedDBObject(attref, true);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void setBlockRefAttribute(BlockTableRecord modelSpace, Transaction tran,BomMsgBean bean)
+ {
+ ed.WriteMessage("aaaaaa\n");
+ foreach (ObjectId id in modelSpace)
+ {
+ Entity ent = tran.GetObject(id, OpenMode.ForRead, false) as Entity;
+ if(ent is AttributeDefinition){
+ ed.WriteMessage("bbbbb\n");
+ //AttributeReference attriRef = new AttributeReference();
+ AttributeDefinition attriDef = ent as AttributeDefinition;
+ ed.WriteMessage("Name = "+attriDef.TextStyleName + "\n");
+
+
+ }
+
+ }
+
+
+ }
+
+
+ //获取指定块参照名称中对应的属性值
+ public string GetValueByBlock(string blockname,string attributename)
+ {
+
+ string attrvalue = "";
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+ if (block.Has(blockname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == blockname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (aRef.Tag.ToString() == attributename)
+ {
+ attrvalue = aRef.TextString;
+ return attrvalue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return attrvalue;
+ }
+
+
+ //获取数据集.xml文件配置信息
+ public OriginDataSet GetDataSetInfo(OriginDataSet dataset, OriginBTL btlinfo)
+ {
+ string ds_name = "";
+
+ for (int i = 1; i < dataset.Dsnametable.Count+1; i++)
+ {
+ string[] tempstring = dataset.Dsnametable[i].ToString().Split('.');
+ string blockname = tempstring[0];
+ string attributename = tempstring[1];
+ if (blockname == btlinfo.Btlname)
+ {
+ if (btlinfo.Btlinfotable.ContainsKey(attributename))
+ {
+ ds_name = ds_name + btlinfo.Btlinfotable[attributename].ToString();
+ }
+ }
+ else
+ {
+ ds_name = ds_name + this.GetValueByBlock(blockname, attributename);
+ }
+
+ }
+ ed.WriteMessage(ds_name+"\n");
+ dataset.Ds_name = ds_name;
+
+ return dataset;
+ }
+
+ //对bomline进行排序
+ public List sortbomlist(List sortbomlist)
+ {
+ sortbomlist.Sort(new SortMXL1());
+ return sortbomlist;
+ }
+
+
+ ///
+ /// 搜索ItemRevision
+ ///
+ ///
+ ///
+ ///
+ public SavedQueryResults getSearchItemRev(String itemId ,String itemRev) {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("originSearchItemRevision"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'originSearchItemRevision' query.\n");
+ return null;
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'originSearchItemRevision' Item ID =" + itemId + " Item Rev = " + itemRev + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "ItemID1","Revision1"};
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[2];
+ savedQueryInput[0].Values[0] = itemId;
+ savedQueryInput[0].Values[1] = itemRev;
+ //savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found ItemRevs:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ public Item wxGetItem(string item_id) {
+ Item item = null;
+ ItemRevision itemRev = this.wxGetItem(item_id,"*");
+ if (itemRev != null)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.GetProperties(new ModelObject[] { itemRev }, new String[] { "items_tag" });
+ item = itemRev.Items_tag;
+ }
+
+ return item;
+ }
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ ///
+ public ItemRevision wxGetItem(string item_id,string rev_id) {
+ ItemRevision item_rev = null;
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("CAD_SearchItem"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchItemID' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID =" + item_id + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "TZBM","REVID" ,"SEQ"};
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[3];
+ savedQueryInput[0].Values[0] = item_id;
+ savedQueryInput[0].Values[1] = rev_id;
+ savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+
+
+ if (found.NumOfObjects > 0)
+ {
+ item_rev = found.Objects[0] as ItemRevision;
+ }
+ else {
+ item_rev = wxGetWLRev(item_id,rev_id);
+ }
+ return item_rev;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ ///
+ public ItemRevision wxGetWLRev(string bmID,string revID)
+ {
+ ItemRevision item = null;
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("CAD_SearchWLRev"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'CAD_SearchWLRev' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID =" + bmID + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "TZBM","REVID","SEQ" };
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[3];
+ savedQueryInput[0].Values[0] = bmID;
+ savedQueryInput[0].Values[1] = revID;
+ savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+
+
+ if (found.NumOfObjects > 0)
+ {
+ item = found.Objects[0] as ItemRevision;
+ }
+ return item;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ //根据item_id搜索
+ public SavedQueryResults getSearchItem(string item_id)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchItemID"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchItemID' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID ="+item_id+".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "Item ID" };
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = item_id;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+
+ //根据item_id,name,type,owner搜索
+ public SavedQueryResults getSearchItem(string item_id, string name, string type, string owner)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchForItem"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchForItem' query.\n");
+ }
+
+ try
+ {
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "Name", "Item ID", "Type", "Owning User" };
+ savedQueryInput[0].Entries = new String[] { "名称", "零组件 ID", "类型", "所有权用户" };
+ savedQueryInput[0].Values = new String[4];
+ savedQueryInput[0].Values[0] = name;
+ savedQueryInput[0].Values[1] = item_id;
+ savedQueryInput[0].Values[2] = type;
+ savedQueryInput[0].Values[3] = owner;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ //查询所有用户
+ public SavedQueryResults getSearchUser()
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchForUser"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchForUser' query.\n");
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "User Id" };
+ savedQueryInput[0].Entries = new String[] { "用户 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = "*";
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Users:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+
+ //获得指定名称首选项:站点类型
+ public Hashtable getTCPreferences(string prefername)
+ {
+ Hashtable prefValues = new Hashtable();
+ SessionService sessionservice = SessionService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[] prefNames = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[1];
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames scopedPref = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames();
+ scopedPref.Names = new String[] { prefername };
+ scopedPref.Scope = "site";
+ prefNames[0] = scopedPref;
+
+
+ Teamcenter.Services.Strong.Core._2007_01.Session.MultiPreferencesResponse resp = sessionservice.GetPreferences(prefNames);
+ Teamcenter.Services.Strong.Core._2007_01.Session.ReturnedPreferences[] preferenceResp = resp.Preferences;
+ prefValues.Add(preferenceResp[0].Name, preferenceResp[0].Values);
+ //string temp = preferenceResp[0].Name.ToString();
+ //string[] value = (string[])prefValues[preferenceResp[0].Name.ToString()];
+
+ return prefValues;
+ }
+
+
+ public bool checkxml(string xmlpath)
+ {
+ if (File.Exists(xmlpath + "标题栏.xml"))
+ ed.WriteMessage("标题栏.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在标题栏.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "明细表.xml"))
+ ed.WriteMessage("明细表.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在明细表.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "Item类型.xml"))
+ ed.WriteMessage("Item类型.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在Item类型.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "数据集.xml"))
+ ed.WriteMessage("数据集.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在数据集.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "规则.xml"))
+ ed.WriteMessage("规则.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在规则.xml文件\n");
+ return false;
+ }
+ return true;
+ }
+
+
+ //通过value值找key值
+ public object getKeyFromValue(Hashtable table,object value)
+ {
+ if (table.ContainsValue(value))
+ {
+ foreach (DictionaryEntry de in table)
+ {
+ if (de.Value.Equals(value))
+ {
+ return de.Key;
+ }
+ }
+ }
+ return null;
+ }
+
+
+ //获得标题栏Item类型
+ public string getItemType(OriginBTL btlinfo, OriginTypeRule origintyperule)
+ {
+ if (origintyperule == null)
+ return "Item";
+ this.itemtype = origintyperule.Defaulttype.ToString();
+
+ this.getTypeByRule(btlinfo.Btlinfotable, origintyperule, "1", "");
+
+ return this.itemtype;
+ }
+
+
+ private string itemtype = "";
+
+ //获得明细栏Item类型
+ public string getItemType(OriginMXL mxlinfo, OriginTypeRule origintyperule)
+ {
+ if (origintyperule == null)
+ return "Item";
+ this.itemtype = origintyperule.Defaulttype.ToString();
+
+ this.getTypeByRule(mxlinfo.Mxlinfotable, origintyperule, "1","");
+
+ return this.itemtype;
+ }
+
+
+ //通过规则获得需要的Item类型
+ private void getTypeByRule(Hashtable infotable, OriginTypeRule origintyperule,
+ string pos,string usestringvalue)
+ {
+ ed.WriteMessage("当前source" + usestringvalue + "\n");
+ ed.WriteMessage("当前pos" + pos + "\n");
+ //获得source对应的数据
+ string sourcestring = origintyperule.Sourcetable[pos].ToString();
+ string sourcevalue = "";
+ if (sourcestring == "")
+ {
+ sourcevalue = usestringvalue;
+ }
+ else
+ {
+ ed.WriteMessage("source值:"+sourcestring+"\n");
+ sourcevalue = infotable[sourcestring].ToString();
+ }
+ //检查是否存在type,如果有,则直接返回
+ string typestring = origintyperule.Typetable[pos].ToString();
+ if (typestring != "")
+ {
+ this.itemtype = typestring;
+ return;
+ }
+ //处理判断条件
+ string startstring = origintyperule.Starttable[pos].ToString();
+ string endstring = origintyperule.Endtable[pos].ToString();
+ string containstring = origintyperule.Containtable[pos].ToString();
+ string equalstring = origintyperule.Equaltable[pos].ToString();
+
+ if (startstring != "")
+ {
+ if (sourcevalue.StartsWith(startstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (endstring != "")
+ {
+ if (sourcevalue.EndsWith(endstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (containstring != "")
+ {
+ if (sourcevalue.Contains(containstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (equalstring !="")
+ {
+ if (sourcevalue.Equals(equalstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ }
+
+
+ //分割字符串,取出对应xml文件的的Item的ID
+ public List getCorrespondItemID(string[] tempprevalues)
+ {
+ List itemidlist = new List();
+ Hashtable temptable = new Hashtable();
+ for (int i = 0; i < tempprevalues.Length; i++)
+ {
+ string tempvalueline = tempprevalues[i];
+ string[] tempvalue = tempvalueline.Split('=');
+ itemidlist.Add(tempvalue[1].ToString());
+ }
+
+ return itemidlist;
+ }
+
+
+ public bool downloadfile(Item DMTItem,string xmlpath)
+ {
+ bool result = false;
+ string DMTFilepath = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { DMTItem };
+ String[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = DMTItem.Revision_list;
+ ItemRevision itemrevision = itemrevisionlist[itemrevisionlist.Length - 1] as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ String[] typeVec = { "Text" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "Text")
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects2 = { dateset };
+ String[] attributes2 = { "is_modifiable", "checked_out", "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ ModelObject[] dsfilevec = dateset.Ref_list;
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects3 = { dsfile };
+ String[] attributes3 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects3);
+ dmService.GetProperties(objects3, attributes3);
+
+ string newfilename = dsfile.Original_file_name;
+ //ed.WriteMessage("Original_file_name : " + newfilename + "\n");
+ //string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ //ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ FileInfo file = fileinfovec[0];
+ DMTFilepath = xmlpath + newfilename;
+ // ed1.WriteMessage("拷贝路径:" + DMTFilepath + "\n");
+ System.IO.File.Copy(file.FullName, DMTFilepath, true);
+ System.IO.File.SetAttributes(DMTFilepath, FileAttributes.Normal);
+ if (DMTFilepath != "")
+ result = true;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/KSaveToTC.cs b/OriginAutoCAD_chint/hello/KSaveToTC.cs
new file mode 100644
index 0000000..26f15ae
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KSaveToTC.cs
@@ -0,0 +1,1383 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Session = Teamcenter.ClientX.Session;
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.Runtime;
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using Form = Teamcenter.Soa.Client.Model.Strong.Form;
+using Dataset = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using System.Windows.Forms;
+using Teamcenter.Services.Strong.Core._2007_01.DataManagement;
+using KCad;
+using System.IO;
+
+namespace HelloTeamcenter.hello {
+
+ public class UploadBean: IComparable
+ {
+ public string filePath;
+ public string id;
+ public string fileName;
+ public bool hasBom;
+
+ public override string ToString()
+ {
+ return string.Format("[{0}] {1} {2}", id, fileName, hasBom?"(装配)":"");
+ }
+
+ int IComparable.CompareTo(object obj)
+ {
+
+ if (obj == null) return 1;
+ UploadBean b = obj as UploadBean;
+ if (b == null)
+ {
+ return 1;
+ }
+ if (hasBom)
+ {
+ if (b.hasBom)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ else
+ {
+ if (b.hasBom)
+ {
+ return -1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ }
+
+ public class KSaveToTC {
+
+ public static void UploadFolder(List files, string xmlpath)
+ {
+ //xmlpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+ //Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ KUtil.WriteLog("xml path:" + xmlpath);
+ int fileCnt = files == null ? 0 : files.Count;
+ KUtil.WriteLog("File Count: " + fileCnt);
+ List uploadBeanList = new List();
+ ProgressMeter pmc = new ProgressMeter();
+ pmc.SetLimit(fileCnt);
+ pmc.Start("检查图纸");
+ // parse info
+ for (int i = 0; i < fileCnt; i++)
+ {
+ pmc.MeterProgress();
+ System.Windows.Forms.Application.DoEvents();
+ string path = files[i];
+ KUtil.WriteLog((i + 1) + ". 检查文件: " + path);
+ if (!path.ToUpper().EndsWith(".DWG"))
+ {
+ KUtil.WriteLog(">> 不是DWG文件");
+ continue;
+ }
+
+ using (Database db = new Database(false, true))
+ {
+ db.ReadDwgFile(path, FileOpenMode.OpenForReadAndAllShare, false, null);
+ db.CloseInput(true);
+ UploadBean bean = GetFileInfo(xmlpath, db, path);
+ uploadBeanList.Add(bean);
+ }
+
+ }
+ pmc.Stop();
+ uploadBeanList.Sort();
+ HelloTeamcenter.form.UploadFile dialog = new form.UploadFile();
+ // uploadBeanList = dialog.getSelectedFiles(uploadBeanList);
+
+ fileCnt = uploadBeanList == null ? 0 : uploadBeanList.Count;
+ KUtil.WriteLog("Select File Count: " + fileCnt);
+ if (fileCnt == 0)
+ {
+ return;
+ }
+ uploadBeanList.Sort();
+
+ StringBuilder err = new StringBuilder();
+ Database tempDb = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ string login_group = Teamcenter.Hello.Hello.getGroup();
+ KUtil.WriteLog("登录组[" + login_group + "]");
+ if (login_group == null || login_group.Length == 0)
+ {
+ KUtil.WriteLog("登录组为空");
+ ModelObject default_group = Teamcenter.Hello.Hello.loginuser.Default_group;
+ if (default_group != null)
+ {
+ dmService.RefreshObjects(new ModelObject[] { default_group });
+ dmService.GetProperties(new ModelObject[] { default_group }, new string[] { "name" });
+ login_group = default_group.GetProperty("name").StringValue;
+ KUtil.WriteLog("默认组:" + login_group);
+ }
+ }
+ String source = KOriginTool.getGroupSource(login_group);
+ KUtil.WriteLog("组:" + source);
+ Hashtable sourcetable = new Hashtable();
+
+ if (source.Length > 0)
+ {
+ sourcetable.Add("zt2_Source", source);
+ }
+ try
+ {
+ for (int i = 0; i < fileCnt; i++)
+ {
+ UploadBean bean = uploadBeanList[i];
+ string path = bean.filePath;
+ KUtil.WriteLog((i + 1) + ". 上传文件: " + path);
+ ProgressMeter pm = new ProgressMeter();
+ pm.SetLimit(fileCnt);
+ pm.Start("上传第 " + (i + 1) + " 张图纸,剩余 " + (fileCnt - i - 1) + " 张\n");
+ for (int j = 0; j <= i; j++)
+ {
+ pm.MeterProgress();
+ System.Windows.Forms.Application.DoEvents();
+ }
+ try
+ {
+ UploadFile(path, xmlpath, sourcetable);
+
+ }
+ catch (System.Exception ex)
+ {
+ KUtil.LogErr(ex);
+ err.Append("[" + bean.ToString() + "]: " + ex.Message + "\n");
+ }
+ pm.Stop();
+ }
+ }
+ finally
+ {
+ HostApplicationServices.WorkingDatabase = tempDb;
+ }
+
+ KUtil.WriteLog("Upload Folder Finished");
+ if (err.Length > 0)
+ {
+ MessageBox.Show(err.ToString(), "上传失败");
+ }
+ else
+ {
+ MessageBox.Show("上传完成");
+
+ }
+ }
+
+ public static Document getOpenedDoc(string file)
+ {
+ foreach (object doc in Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager)
+ {
+ if(doc is Document){
+ if (file.Equals(((Document)doc).Name))
+ {
+ return doc as Document;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static void UploadFile(string file, string xmlpath, Hashtable sourcetable)
+ {
+ Document openDoc = getOpenedDoc(file);
+ bool close = openDoc == null;
+ if (close)
+ {
+ openDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(file, false);
+ Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = openDoc;
+ }
+ try
+ {
+ using (openDoc.LockDocument())
+ {
+ KSaveToTC.SaveToTC2(xmlpath, openDoc, file, sourcetable);
+ }
+ }
+ finally
+ {
+ if (close)
+ {
+ openDoc.CloseAndDiscard();
+ }
+ }
+
+ }
+
+ public static void UploadFile_backup20210107(string file, string xmlpath)
+ {
+ Document openDoc = getOpenedDoc(file);
+ if (openDoc != null)
+ {
+ string newPath = Path.GetDirectoryName(file) + "\\temp\\" + Path.GetFileName(file);
+ if (!Directory.Exists(Path.GetDirectoryName(file) + "\\temp\\"))
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(file) + "\\temp\\");
+ }
+ KUtil.WriteLog("save opened doc to: " + newPath);
+ openDoc.Database.SaveAs(newPath, DwgVersion.Current);
+ file = newPath;
+
+ }
+ using (Database db = new Database(false, false))
+ {
+ HostApplicationServices.WorkingDatabase = db; //不然无法转PDF
+
+ db.ReadDwgFile(file, FileOpenMode.OpenForReadAndAllShare, true, null);
+ db.CloseInput(true);
+ // KSaveToTC.SaveToTC2(xmlpath, db, file);
+
+
+ }
+
+ }
+
+ public static UploadBean GetFileInfo(string xmlpath, Database db, string cadPath)
+ {
+ UploadBean bean = new UploadBean();
+ bean.filePath = cadPath;
+ bean.fileName = Path.GetFileName(cadPath);
+ bean.hasBom = false;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ //Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ KOriginTool origintool = new KOriginTool(db);
+ //if (1 == 1) {
+ // return true;
+ //}
+ //ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ KOriginReadXml readxml = new KOriginReadXml(db);
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ //string datasetName;
+ //string cadPath = document.Name;
+
+ //int index = cadPath.LastIndexOf("\\");
+ //if (index >= 0) {
+ // datasetName = cadPath.Substring(index + 1);
+ //}
+ //else {
+ // datasetName = cadPath;
+ //}
+ //KUtil.WriteLog("图纸文件名称:" + datasetName);
+ bool updated = false;
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null)
+ {
+ continue;
+ }
+ Dataset dwgDataset = null;
+ Dataset pdfDataset = null;
+
+ //20200403
+ string itemID = btlinfo.Btldatatable[key].ToString();
+
+ if (string.IsNullOrWhiteSpace(itemID))
+ {
+ //MessageBox.Show("没有填写对象ID");
+ continue;
+ }
+ bean.id = itemID;
+ break;
+ }
+ if (string.IsNullOrEmpty(bean.id))
+ {
+ return bean;
+ }
+
+ Dictionary mxlConfig = KBomUpdater.ReadBomConfig(xmlpath);
+ string itemIdTag = "";
+ string revIdTag = "";
+ if (mxlConfig.ContainsKey("item_id"))
+ {
+ itemIdTag = mxlConfig["item_id"];
+ mxlConfig.Remove("item_id");
+ }
+ if (mxlConfig.ContainsKey("item_revision_id"))
+ {
+ revIdTag = mxlConfig["item_revision_id"];
+ mxlConfig.Remove("item_revision_id");
+ }
+ if (string.IsNullOrWhiteSpace(itemIdTag))
+ {
+ throw new System.Exception("请检查明细表.xml文件,没有配置item_id属性");
+ }
+ StringBuilder errInfo = new StringBuilder();
+ List bomBeans = KBomUpdater.ReadCADBom2(mxlConfig, itemIdTag, revIdTag, db);
+ if (bomBeans.Count > 0)
+ {
+ bean.hasBom = true;
+ }
+ return bean;
+ }
+
+
+ public static bool SaveToTC2(string xmlpath, Document doc, string cadPath, Hashtable sourcetable)
+ {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ //Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ KUtil.WriteLog("=================================================");
+ KUtil.WriteLog("开始执行保存");
+ KOriginTool origintool = new KOriginTool(doc.Database);
+ //if (1 == 1) {
+ // return true;
+ //}
+ //ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ KOriginReadXml readxml = new KOriginReadXml(doc.Database);
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ //string datasetName;
+ //string cadPath = document.Name;
+ KUtil.WriteLog("图纸路径:" + cadPath);
+ //int index = cadPath.LastIndexOf("\\");
+ //if (index >= 0) {
+ // datasetName = cadPath.Substring(index + 1);
+ //}
+ //else {
+ // datasetName = cadPath;
+ //}
+ //KUtil.WriteLog("图纸文件名称:" + datasetName);
+ bool updated = false;
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++)
+ {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ object key = null;
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key != null)
+ KUtil.WriteLog("版本号:" + btlinfo.Btldatatable[key].ToString());
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "zt2_MaterialMark");
+ if (key != null)
+ KUtil.WriteLog("材料标记:" + btlinfo.Btldatatable[key].ToString());
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "zt2_ProductModel");
+ if (key != null)
+ KUtil.WriteLog("产品型号:" + btlinfo.Btldatatable[key].ToString());
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "zt2_JobNo");
+ if (key != null)
+ KUtil.WriteLog("工作号:" + btlinfo.Btldatatable[key].ToString());
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "zt2_DesignWeight");
+ if (key != null)
+ KUtil.WriteLog("重量:" + btlinfo.Btldatatable[key].ToString());
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "zt2_Specifications");
+ if (key != null)
+ KUtil.WriteLog("规格:" + btlinfo.Btldatatable[key].ToString());
+ //获得item_id所对应的cad图纸信息
+ key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null)
+ {
+ continue;
+ }
+ Dataset dwgDataset = null;
+ Dataset pdfDataset = null;
+
+ //20200403
+ string itemID = btlinfo.Btldatatable[key].ToString();
+ KUtil.WriteLog("查询对象:" + itemID);
+ if (string.IsNullOrWhiteSpace(itemID))
+ {
+ //MessageBox.Show("没有填写对象ID");
+ continue;
+ }
+ string datasetName = itemID;
+ KUtil.WriteLog("查询对象:" + itemID);
+ ItemRevision rev = KUtil.searchLatestRev(itemID);
+ if (rev == null)
+ {
+ KUtil.WriteLog("未找到对象,开始新建");
+ //DialogResult upresult = MessageBox.Show("没有找到对应标题栏Item,是否新建?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (upresult == DialogResult.No || upresult == DialogResult.None)
+ //{
+ // ed1.WriteMessage("放弃更新\n");
+ // return false;
+ //}
+ //1) 如果该cad图号对象在系统中不存在,保存过程中会创建图纸对象,根据标题栏映射属性,并把cad文件上传到图纸版本中,生成pdf文件保存到图纸版本中。
+ // 20210312 创建新版本取图纸中的版本号
+ string revID = "";
+ {
+
+ object revkey = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key != null)
+ {
+ revID = btlinfo.Btldatatable[revkey].ToString();
+ KUtil.WriteLog("图纸版本号:" + revID);
+ }
+ }
+ rev = KUtil.createNewRev(itemID, revID, "", Teamcenter.Hello.Hello.TITLE_ITEM_TYPE);
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.SetDisplayProperties(new ModelObject[] { rev }, sourcetable);
+ }
+ else
+ {
+ //a)最新版本没有被其它用户检出;
+ // b)当前用户有文件的浏览、修改权限;
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ KUtil.WriteLog(">> 找到最新版本:" + rev.Object_string);
+ dwgDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, Teamcenter.Hello.Hello.CAD_TYPE);
+ pdfDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, "PDF");
+ {
+ if (!rev.Is_modifiable)
+ {
+ throw new System.Exception(rev.Object_string + "为只读,您没有保存权限!");
+ //return false;
+ }
+ User checkuserinfo = rev.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid)
+ {
+ throw new System.Exception(rev.Object_string + "已被其他用户签出,无法保存到系统!");
+ //return false;
+ }
+ }
+ if (rev.Release_status_list.Length > 0)
+ {
+ throw new System.Exception(rev.Object_string + "已发布!");
+ //return false;
+ }
+ }
+ if (dwgDataset != null)
+ {
+ dmService.GetProperties(new ModelObject[] { dwgDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!dwgDataset.Is_modifiable)
+ {
+ throw new System.Exception(rev.Object_string + "下的CAD图纸为只读,您没有保存权限!");
+ //return false;
+ }
+ User checkuserinfo = dwgDataset.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid)
+ {
+ throw new System.Exception(rev.Object_string + "下的CAD图纸已被其他用户签出,无法保存到系统!");
+ //return false;
+ }
+ }
+ }
+ if (pdfDataset != null)
+ {
+ dmService.GetProperties(new ModelObject[] { pdfDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!pdfDataset.Is_modifiable)
+ {
+ throw new System.Exception(rev.Object_string + "下的PDF图纸为只读,您没有保存权限!");
+ //return false;
+ }
+ User checkuserinfo = pdfDataset.Checked_out_user as User;
+ if (checkuserinfo != null)
+ {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid)
+ {
+ throw new System.Exception(rev.Object_string + "下的PDF图纸已被其他用户签出,无法保存到系统!");
+ //return false;
+ }
+ }
+ }
+ //DialogResult upresult = MessageBox.Show("找到对应标题栏Item <" + rev.Object_string + ">,是否更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (upresult == DialogResult.No || upresult == DialogResult.None)
+ //{
+ // ed1.WriteMessage("放弃更新\n");
+ // return false;
+ //}
+ }
+ SocketUtil.Refresh(rev.Uid);
+
+ Hashtable tempvaluetable = new Hashtable();
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "item_revision_id" });
+ object revKey = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (revKey != null)
+ {
+ KUtil.WriteLog("更新标题栏版本号:" + revKey + " -> " + rev.Item_revision_id);
+ origintool.TableHasKey(tempvaluetable, revKey.ToString(), rev.Item_revision_id);
+ origintool.SetTitleInfo_v1(btlinfo.Btlname, tempvaluetable);//
+ }
+
+ //if (getOpenedDoc(cadPath)!=null)
+ //{
+ // string newPath = Path.GetDirectoryName(cadPath) + "\\temp\\" + Path.GetFileName(cadPath);
+ // if (!Directory.Exists(Path.GetDirectoryName(cadPath) + "\\temp\\"))
+ // {
+ // Directory.CreateDirectory(Path.GetDirectoryName(cadPath) + "\\temp\\");
+ // }
+ // KUtil.WriteLog("save midactivedoc to: "+newPath);
+ // db.SaveAs(newPath, DwgVersion.Current);
+ //}
+ //else
+ //{
+ // db.SaveAs(cadPath, DwgVersion.Current);
+ //}
+
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ // doc.Database.SaveAs(cadPath, false, DwgVersion.Current, doc.Database.SecurityParameters);
+ ed.Regen();
+ DoSave(btlinfo, ed, dmService, rev, dwgDataset, pdfDataset, cadPath, datasetName, mxllist);
+ // upload file
+ KUtil.WriteLog("开始导出PDF");
+ //保存PDF到TC
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(doc);
+ string tempPDFPath = pdfdwg.MultiSheetPlot();
+ KUtil.WriteLog("导出文件:" + tempPDFPath);
+ if (File.Exists(tempPDFPath))
+ {
+ //ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ if (tempPDFPath.Length > 0)
+ {
+ KUtil.uploadFile(rev, pdfDataset, datasetName, tempPDFPath, "IMAN_specification", "PDF", "PDF_Reference");
+
+ }
+ }
+ else
+ {
+ throw new System.Exception("PDF转换异常,未找到文件");
+ }
+ {
+ string newPath = Path.GetDirectoryName(cadPath) + "\\temp\\" + Path.GetFileName(cadPath);
+ if (!Directory.Exists(Path.GetDirectoryName(cadPath) + "\\temp\\"))
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(cadPath) + "\\temp\\");
+ }
+ KUtil.WriteLog("save midactivedoc to: " + newPath);
+ doc.Database.SaveAs(newPath, DwgVersion.Current);
+ cadPath = newPath;
+ }
+ KUtil.uploadFile(rev, dwgDataset, datasetName, cadPath, "IMAN_specification", Teamcenter.Hello.Hello.CAD_TYPE, Teamcenter.Hello.Hello.CAD_REF);
+ updated = true;
+ SocketUtil.Refresh(rev.Uid);
+ }
+ if (!updated)
+ {
+ throw new System.Exception("没有读取到标题栏信息");
+ //return false;
+ }
+ else
+ {
+ KBomUpdater.UpdateBomFromCAD2(false, false, doc.Database);
+ // MessageBox.Show("更新完成");
+ return true;
+ }
+ }
+
+ public static bool CheckCanSave() {
+ Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
+ Editor ed1 =acdoc.Editor;
+ if (acdoc.IsReadOnly) {
+ DialogResult upresult = MessageBox.Show("当前图纸为只读,是否进行另存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ ed1.WriteMessage("Cancel SaveAs\n");
+ return false;
+ }
+ }
+ else {
+ return true;
+ }
+ string fullPath = acdoc.Name;
+ String name = Path.GetFileName(fullPath);
+ string tempFolder = Path.GetTempPath() + Guid.NewGuid() + "\\";
+ String newPath = tempFolder + name;
+ ed1.WriteMessage("Save As...\n");
+ ed1.WriteMessage(fullPath + "\n");
+ ed1.WriteMessage("to \n");
+ ed1.WriteMessage(newPath + "\n");
+ DirectoryInfo info = Directory.CreateDirectory(tempFolder);
+ if (!info.Exists) {
+ MessageBox.Show("新建临时目录失败");
+ return false;
+ }
+ acdoc.Database.SaveAs(newPath, true, DwgVersion.Current, acdoc.Database.SecurityParameters);
+ return true;
+ }
+
+ public static bool SaveToTC_Revise2(string xmlpath) {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ KUtil.WriteLog("=================================================");
+ KUtil.WriteLog("开始执行保存");
+ //if (1 == 1) {
+ // return false;
+ //}
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++) {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ for (int i = 0; i < mxllist.Count; i++) {
+ OriginMXL mxlinfo = mxllist[i];
+ ed1.WriteMessage("明细栏块参照名称:" + mxlinfo.Mxlname + "\n");
+ ed1.WriteMessage("明细栏" + i + "详细信息:" + "\n");
+ foreach (DictionaryEntry de in mxlinfo.Mxldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + mxlinfo.Mxltctable[de.Key] +
+ "\tis_bomline:" + mxlinfo.Mxlisbomtable[de.Key] +
+ "\twritable:" + mxlinfo.Mxlupdatetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("明细栏个数为:" + mxllist.Count);
+ ed1.WriteMessage("开始为bom结构排序\n");
+ // mxllist = origintool.sortbomlist(mxllist);
+ ed1.WriteMessage("排序成功...\n");
+
+ //string datasetName;
+ string cadPath = AcAp.DocumentManager.MdiActiveDocument.Name;
+ KUtil.WriteLog("图纸路径:" + cadPath);
+ //int index = cadPath.LastIndexOf("\\");
+ //if (index >= 0) {
+ // datasetName = cadPath.Substring(index + 1);
+ //}
+ //else {
+ // datasetName = cadPath;
+ //}
+ //KUtil.WriteLog("图纸文件名称:" + datasetName);
+ bool updated = false;
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ ed1.WriteMessage("系统没有找到item_id所对应的图纸信息,系统中断\n");
+ return false;
+ }
+ Dataset dwgDataset = null;
+ Dataset pdfDataset = null;
+ //20200403
+ string itemID = btlinfo.Btldatatable[key].ToString();
+ KUtil.WriteLog("查询对象:" + itemID);
+ if (string.IsNullOrWhiteSpace(itemID)) {
+ //MessageBox.Show("没有填写对象ID");
+ continue;
+ }
+ string datasetName = itemID;
+ ItemRevision rev = KUtil.searchLatestRev(itemID);
+ if (rev == null) {
+ //1) 如果该cad图号对象在系统中不存在,保存过程中会创建图纸对象,根据标题栏映射属性,并把cad文件上传到图纸版本中,生成pdf文件保存到图纸版本中。
+ MessageBox.Show("没有查询到对象:" + itemID);
+ return false;
+ }
+ else {
+ //1)当前图纸最新版本是已发布状态;
+ //2)当前用户有图纸对象的修改权限。
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "items_tag", "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ KUtil.WriteLog(">> 找到最新版本:" + rev.Object_string);
+ //a)最新版本没有被其它用户检出;
+ // b)当前用户有文件的浏览、修改权限;
+ {
+ if (rev.Release_status_list.Length == 0) {
+ MessageBox.Show(rev.Object_string + "未发布!");
+ return false;
+ }
+ }
+ Item item = rev.Items_tag;
+ if (item == null) {
+ MessageBox.Show(rev.Object_string + " 未找到版本所在的对象信息!");
+ return false;
+ }
+ else {
+ dmService.GetProperties(new ModelObject[] { item }, new string[] { "object_string", "is_modifiable" });
+ if (!item.Is_modifiable) {
+ MessageBox.Show(item.Object_string + "对象为只读,您没有保存权限!");
+ return false;
+ }
+
+ }
+
+ DialogResult upresult = MessageBox.Show("找到对应标题栏Item <" + rev.Object_string + ">,是否升版?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ ed1.WriteMessage("放弃更新\n");
+ return false;
+ }
+ rev = KUtil.revise(rev);
+ if (rev == null) {
+ MessageBox.Show("升版失败");
+ return false;
+ }
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ KUtil.WriteLog(">> 升版完成:" + rev.Object_string);
+ dwgDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, Teamcenter.Hello.Hello.CAD_TYPE);
+ pdfDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, "PDF");
+
+ if (dwgDataset != null) {
+ KUtil.deleteRelation(dmService, rev, dwgDataset, "IMAN_specification");
+ dwgDataset = null;
+ KUtil.WriteLog(">> 移除CAD图纸成功");
+ }
+ if (pdfDataset != null) {
+ KUtil.deleteRelation(dmService, rev, pdfDataset, "IMAN_specification");
+ pdfDataset = null;
+ KUtil.WriteLog(">> 移除PDF图纸成功");
+ }
+
+ }
+
+ Hashtable tempvaluetable = new Hashtable();
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "item_revision_id" });
+ object revKey = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (revKey != null) {
+ KUtil.WriteLog("更新标题栏版本号:"+revKey+" -> " + rev.Item_revision_id);
+ origintool.TableHasKey(tempvaluetable, revKey, rev.Item_revision_id);
+ origintool.SetTitleInfo_v1(btlinfo.Btlname, tempvaluetable);//
+ }
+
+ DoSave(btlinfo, ed1, dmService, rev, dwgDataset, pdfDataset, cadPath, datasetName, mxllist);
+ updated = true;
+ }
+ if (!updated) {
+ MessageBox.Show("没有读取到标题栏信息");
+ return false;
+ }
+ else {
+ KBomUpdater.UpdateBomFromCAD(false, true);
+ //MessageBox.Show("更新完成");
+ return true;
+ }
+ }
+
+
+ public static bool SaveToTC2(string xmlpath) {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ KUtil.WriteLog("=================================================");
+ KUtil.WriteLog("开始执行保存");
+ //if (1 == 1) {
+ // return true;
+ //}
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+
+ for (int i = 0; i < btllist.Count; i++) {
+ OriginBTL onebtlinfo = (OriginBTL)btllist[i];
+ ed1.WriteMessage("标题栏块参照名称:" + onebtlinfo.Btlname + "\n");
+ ed1.WriteMessage("标题栏详细信息:" + "\n");
+ foreach (DictionaryEntry de in onebtlinfo.Btldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + onebtlinfo.Btltctable[de.Key] +
+ "\tTC系统类型:" + onebtlinfo.Btltypetable[de.Key] +
+ "\t可写:" + onebtlinfo.Btlwritetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("开始获取明细栏信息...\n");
+ List mxllist = new List();
+ mxllist = readxml.OriginReadMXLXML(xmlpath);
+
+ for (int i = 0; i < mxllist.Count; i++) {
+ OriginMXL mxlinfo = mxllist[i];
+ ed1.WriteMessage("明细栏块参照名称:" + mxlinfo.Mxlname + "\n");
+ ed1.WriteMessage("明细栏" + i + "详细信息:" + "\n");
+ foreach (DictionaryEntry de in mxlinfo.Mxldatatable) {
+ ed1.WriteMessage("CAD属性名:" + de.Key + "\tCAD属性值:" + de.Value +
+ "\tTC属性名:" + mxlinfo.Mxltctable[de.Key] +
+ "\tis_bomline:" + mxlinfo.Mxlisbomtable[de.Key] +
+ "\twritable:" + mxlinfo.Mxlupdatetable[de.Key] + "\n");
+ }
+ }
+ ed1.WriteMessage("明细栏个数为:" + mxllist.Count);
+ ed1.WriteMessage("开始为bom结构排序\n");
+ // mxllist = origintool.sortbomlist(mxllist);
+ ed1.WriteMessage("排序成功...\n");
+
+ //string datasetName;
+ string cadPath = AcAp.DocumentManager.MdiActiveDocument.Name;
+ KUtil.WriteLog("图纸路径:" + cadPath);
+ bool updated = false;
+ string login_group = Teamcenter.Hello.Hello.getGroup();
+ KUtil.WriteLog("登录组[" + login_group + "]");
+ if (login_group == null || login_group.Length == 0)
+ {
+ KUtil.WriteLog("登录组为空");
+ ModelObject default_group = Teamcenter.Hello.Hello.loginuser.Default_group;
+ if (default_group != null)
+ {
+ dmService.RefreshObjects(new ModelObject[] { default_group });
+ dmService.GetProperties(new ModelObject[] { default_group }, new string[] { "name" });
+ login_group = default_group.GetProperty("name").StringValue;
+ KUtil.WriteLog("默认组:" + login_group);
+ }
+ }
+ String source = KOriginTool.getGroupSource(login_group);
+ KUtil.WriteLog("组:" + source);
+ Hashtable sourcetable = new Hashtable();
+
+ if (source.Length > 0)
+ {
+ sourcetable.Add("zt2_Source", source);
+ }
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ continue;
+ }
+ Dataset dwgDataset = null;
+ Dataset pdfDataset = null;
+
+ //20200403
+ string itemID = btlinfo.Btldatatable[key].ToString();
+ KUtil.WriteLog("查询对象:" + itemID);
+ if (string.IsNullOrWhiteSpace(itemID)) {
+ //MessageBox.Show("没有填写对象ID");
+ continue;
+ }
+ string datasetName = itemID;
+ KUtil.WriteLog("查询对象:" + itemID);
+ ItemRevision rev = KUtil.searchLatestRevYH(itemID);
+ if (rev == null) {
+ //DialogResult upresult = MessageBox.Show("没有找到对应标题栏Item,是否新建?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ // ed1.WriteMessage("放弃更新\n");
+ // return false;
+ //}
+ //1) 如果该cad图号对象在系统中不存在,保存过程中会创建图纸对象,根据标题栏映射属性,并把cad文件上传到图纸版本中,生成pdf文件保存到图纸版本中。
+ // 20210312 创建新版本取图纸中的版本号
+ string revID = "";
+ {
+
+ object revkey = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (key != null)
+ {
+ revID = btlinfo.Btldatatable[revkey].ToString();
+ KUtil.WriteLog("图纸版本号:" + revID);
+ }
+ }
+ rev = KUtil.createNewRev(itemID, revID, "", Teamcenter.Hello.Hello.TITLE_ITEM_TYPE);
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.SetDisplayProperties(new ModelObject[] { rev }, sourcetable);
+ }
+ else {
+ //a)最新版本没有被其它用户检出;
+ // b)当前用户有文件的浏览、修改权限;
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ KUtil.WriteLog(">> 找到最新版本:" + rev.Object_string);
+ dwgDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, Teamcenter.Hello.Hello.CAD_TYPE);
+ pdfDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, "PDF");
+ {
+ if (!rev.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = rev.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ if (rev.Release_status_list.Length > 0) {
+ MessageBox.Show(rev.Object_string + "已发布!");
+ return false;
+ }
+ }
+ if (dwgDataset != null) {
+ dmService.GetProperties(new ModelObject[] { dwgDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!dwgDataset.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "下的CAD图纸为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = dwgDataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "下的CAD图纸已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ }
+ if (pdfDataset != null) {
+ dmService.GetProperties(new ModelObject[] { pdfDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!pdfDataset.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "下的PDF图纸为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = pdfDataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "下的PDF图纸已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ }
+ }
+ SocketUtil.Refresh(rev.Uid);
+
+ Hashtable tempvaluetable = new Hashtable();
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "item_revision_id" });
+ object revKey = origintool.getKeyFromValue(btlinfo.Btltctable, "item_revision_id");
+ if (revKey != null) {
+ KUtil.WriteLog("更新标题栏版本号:"+revKey+" -> "+rev.Item_revision_id);
+ origintool.TableHasKey(tempvaluetable, revKey.ToString(), rev.Item_revision_id);
+ origintool.SetTitleInfo_v1(btlinfo.Btlname, tempvaluetable);//
+ }
+
+ DoSave(btlinfo, ed1, dmService, rev, dwgDataset, pdfDataset, cadPath, datasetName, mxllist);
+ updated = true;
+ }
+ if (!updated) {
+ MessageBox.Show("没有读取到标题栏信息");
+ return false;
+ }
+ else {
+ KBomUpdater.UpdateBomFromCAD(false, true);
+ // MessageBox.Show("更新完成");
+ return true;
+ }
+ }
+
+ public static bool SaveFiles(string xmlpath) {
+ string filename = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ OriginTool origintool = new OriginTool();
+ KUtil.WriteLog("=================================================");
+ KUtil.WriteLog("开始执行保存");
+ ed1.WriteMessage("\n开始获取标题栏信息...\n");
+ /************************************************************************/
+ /* 以下是取数据的代码 */
+ /************************************************************************/
+ ArrayList btllist = new ArrayList();
+ OriginReadXml readxml = new OriginReadXml();
+ btllist = readxml.OriginReadBTLXML(xmlpath);
+ //string datasetName;
+ string cadPath = AcAp.DocumentManager.MdiActiveDocument.Name;
+ KUtil.WriteLog("图纸路径:" + cadPath);
+ //int index = cadPath.LastIndexOf("\\");
+ //if (index >= 0) {
+ // datasetName = cadPath.Substring(index + 1);
+ //}
+ //else {
+ // datasetName = cadPath;
+ //}
+ //KUtil.WriteLog("图纸文件名称:" + datasetName);
+ bool updated = false;
+ //处理标题栏
+ for (int btli = 0; btli < btllist.Count; btli++) {
+ OriginBTL btlinfo = (OriginBTL)btllist[btli];
+ //获得item_id所对应的cad图纸信息
+ object key = origintool.getKeyFromValue(btlinfo.Btltctable, "item_id");
+ if (key == null) {
+ continue;
+ }
+ Dataset dwgDataset = null;
+ Dataset pdfDataset = null;
+
+ //20200403
+ string itemID = btlinfo.Btldatatable[key].ToString();
+ KUtil.WriteLog("查询对象:" + itemID);
+ if (string.IsNullOrWhiteSpace(itemID)) {
+ //MessageBox.Show("没有填写对象ID");
+ continue;
+ }
+ string datasetName = itemID;
+ KUtil.WriteLog("查询对象:" + itemID);
+ ItemRevision rev = KUtil.searchLatestRev(itemID);
+ if (rev == null) {
+ DialogResult upresult = MessageBox.Show("没有找到对应标题栏Item,是否新建?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ ed1.WriteMessage("放弃更新\n");
+ return false;
+ }
+ //1) 如果该cad图号对象在系统中不存在,保存过程中会创建图纸对象,根据标题栏映射属性,并把cad文件上传到图纸版本中,生成pdf文件保存到图纸版本中。
+ rev = KUtil.createNewRev(itemID, "", "", Teamcenter.Hello.Hello.TITLE_ITEM_TYPE);
+ }
+ else {
+ //a)最新版本没有被其它用户检出;
+ // b)当前用户有文件的浏览、修改权限;
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "release_status_list", "object_string", "is_modifiable", "checked_out_user" });
+ KUtil.WriteLog(">> 找到最新版本:" + rev.Object_string);
+ dwgDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, Teamcenter.Hello.Hello.CAD_TYPE);
+ pdfDataset = KUtil.findDatasetByName(rev, "IMAN_specification", datasetName, "PDF");
+ {
+ if (!rev.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = rev.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ if (rev.Release_status_list.Length > 0) {
+ MessageBox.Show(rev.Object_string + "已发布!");
+ return false;
+ }
+ }
+ if (dwgDataset != null) {
+ dmService.GetProperties(new ModelObject[] { dwgDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!dwgDataset.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "下的CAD图纸为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = dwgDataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "下的CAD图纸已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ }
+ if (pdfDataset != null) {
+ dmService.GetProperties(new ModelObject[] { pdfDataset }, new string[] { "is_modifiable", "checked_out", "checked_out_user" });
+ if (!pdfDataset.Is_modifiable) {
+ MessageBox.Show(rev.Object_string + "下的PDF图纸为只读,您没有保存权限!");
+ return false;
+ }
+ User checkuserinfo = pdfDataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ MessageBox.Show(rev.Object_string + "下的PDF图纸已被其他用户签出,无法保存到系统!");
+ return false;
+ }
+ }
+ }
+ //DialogResult upresult = MessageBox.Show("找到对应标题栏Item <" + rev.Object_string + ">,是否更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ //if (upresult == DialogResult.No || upresult == DialogResult.None) {
+ // ed1.WriteMessage("放弃更新\n");
+ // return false;
+ //}
+ }
+ SocketUtil.Refresh(rev.Uid);
+ UpdateDsFiles(ed1, dmService, rev, dwgDataset, pdfDataset, cadPath, datasetName);
+ updated = true;
+ }
+ if (!updated) {
+ MessageBox.Show("没有读取到标题栏信息");
+ return false;
+ }
+ else {
+ //MessageBox.Show("更新完成");
+ return true;
+ }
+ }
+
+
+
+ private static void UpdateDsFiles(Editor ed1, DataManagementService dmService, ItemRevision rev, Dataset dwgDataset, Dataset pdfDataset, string cadPath, string datasetName) {
+ //保存图纸到TC
+ KUtil.uploadFile(rev, dwgDataset, datasetName, cadPath, "IMAN_specification", Teamcenter.Hello.Hello.CAD_TYPE, Teamcenter.Hello.Hello.CAD_REF);
+ KUtil.WriteLog("开始导出PDF");
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ PrintDwgWithMultiPageSize pdfdwg = new PrintDwgWithMultiPageSize(AcAp.DocumentManager.MdiActiveDocument);
+ string tempPDFPath = pdfdwg.MultiSheetPlot();
+ KUtil.WriteLog("导出文件:" + tempPDFPath);
+ if (File.Exists(tempPDFPath)) {
+ ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ if (tempPDFPath.Length > 0) {
+ KUtil.uploadFile(rev, pdfDataset, datasetName, tempPDFPath, "IMAN_specification", "PDF", "PDF_Reference");
+ //Teamcenter.Hello.Hello.savePDFToTC(rev, tempPDFPath, datasetName, "PDF", "PDF_Reference");
+ }
+ }
+ else {
+ ed1.WriteMessage("导出文件路径不存在:\n");
+ MessageBox.Show("PDF转换异常,未找到文件");
+ }
+ SocketUtil.Refresh(rev.Uid);
+ }
+
+
+ private static void DoSave(OriginBTL btlinfo, Editor ed1, DataManagementService dmService, ItemRevision rev, Dataset dwgDataset, Dataset pdfDataset, string cadPath, string datasetName, List mxllist) {
+
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ dmService.GetProperties(new ModelObject[] { rev }, new string[] { "items_tag" });
+
+ Item item = rev.Items_tag;
+ ModelObject[] objects = { item };
+ String[] attributes = { "item_id", "object_name", "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string item_id = item.Item_id;
+ string object_name = item.Object_name;
+
+ //这个层级上需要增加对Item属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("Item")) {
+ ed1.WriteMessage("正在更新Item属性\n");
+ Hashtable itemattrs = new Hashtable();
+ foreach (DictionaryEntry de in btlinfo.Btltypetable) {
+ if (de.Value.ToString() == "Item" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1") {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:"+cadstring+"\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemattrs.Add(tcstring, cadvalue);
+ }
+ else if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1") {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ if (tcstring == "object_name") {
+ itemattrs.Add(tcstring, cadvalue);
+ }
+ }
+ }
+ if (itemattrs.Count > 0) {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(objects, itemattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ ed1.WriteMessage("更新Item属性成功\n");
+ }
+ }
+ }
+ ModelObject[] objects2 = { rev };
+ String[] attributes2 = { "item_revision_id", "is_modifiable" ,
+ "checked_out","item_id","release_status_list",
+ "IMAN_master_form_rev"};
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ string rev_id = rev.Item_revision_id;
+ //这个层级上要增加对版本属性的更新
+ if (btlinfo.Btltypetable.ContainsValue("ItemRevision")) {
+ ed1.WriteMessage("正在更新ItemRevision属性\n");
+ Hashtable itemRevattrs = new Hashtable();
+ ModelObject[] olditemRev = new ModelObject[1];
+ olditemRev[0] = rev;
+ foreach (DictionaryEntry de in btlinfo.Btltypetable) {
+ if (de.Value.ToString() == "ItemRevision" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1") {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:" + cadstring + "\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ itemRevattrs.Add(tcstring, cadvalue);
+ }
+ }
+ if (itemRevattrs.Count > 0) {
+ ServiceData itemupdateresponse = dmService.SetDisplayProperties(olditemRev, itemRevattrs);
+ if (itemupdateresponse.sizeOfPartialErrors() <= 0) {
+ ed1.WriteMessage("更新ItemRevision属性成功\n");
+ }
+ }
+ }
+
+ //更新表单信息
+ FormInfo forminfo = new FormInfo();
+ FormInfo[] forminfo_vec = new FormInfo[1];
+ ModelObject[] form_vec;
+
+ form_vec = rev.IMAN_master_form_rev;
+
+
+
+ for (int k = 0; k < form_vec.Length; k++) {
+ //Type myType = form_vec[k].GetType();
+ //string fType = myType.Name;
+ Form form = form_vec[k] as Form;
+ bool frash = false;
+ string[] props = new string[1];
+
+ Hashtable formAttrs = new Hashtable();
+
+ //如果配置了Form属性,则执行如下代码
+ if (btlinfo.Btltypetable.ContainsValue("Form")) {
+ foreach (DictionaryEntry de in btlinfo.Btltypetable) {
+ if (de.Value.ToString() == "Form" && btlinfo.Btlwritetable[de.Key].ToString() == "1" &&
+ btlinfo.Btlupdatetable[de.Key].ToString() == "1") {
+ string cadstring = de.Key.ToString();
+ string cadvalue = btlinfo.Btldatatable[cadstring].ToString();
+ if (string.IsNullOrWhiteSpace(cadvalue)) {
+ ed1.WriteMessage("跳过空属性:" + cadstring + "\n");
+ continue;
+ }
+ string tcstring = btlinfo.Btltctable[cadstring].ToString();
+ string writestring = btlinfo.Btlwritetable[cadstring].ToString();
+
+ ed1.WriteMessage("取属性" + tcstring + "\n");
+ props[0] = tcstring;
+ ServiceData serviceData = dmService.GetProperties(form_vec, props);
+ if (serviceData.sizeOfPartialErrors() > 0) {
+ continue;
+ }
+ Property my_prop = form_vec[k].GetProperty(tcstring);
+ if (cadvalue != my_prop.StringValue) {
+ if (my_prop.StringValue == "")
+ frash = true;
+ else {
+ string message = "当前标题栏图纸:" + cadstring + "属性值" + cadvalue + "与系统内:" + tcstring + "属性值" + my_prop.StringValue + "不一致,是否覆盖系统内属性?";
+ DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (updateresult == DialogResult.Yes) {
+ frash = true;
+ }
+ }
+ string[] formAttrValue = new string[1];
+ formAttrValue[0] = "";
+ if (frash)
+ formAttrValue[0] = cadvalue;
+ else
+ formAttrValue[0] = my_prop.StringValue;
+ ed1.WriteMessage(tcstring + ":" + formAttrValue[0] + "\n");
+ formAttrs.Add(tcstring, formAttrValue);
+ props[0] = "";
+ }
+
+ }
+ }
+ }
+
+ ed1.WriteMessage("formAttrs:" + formAttrs.Count + "\n");
+
+ foreach (DictionaryEntry hash in formAttrs) {
+ ed1.WriteMessage(hash.Key + ":" + Convert.ToString(hash.Value) + "\n");
+ }
+
+
+ forminfo.AttributesMap = formAttrs;
+ forminfo.ClientId = "1";
+ forminfo.Description = "";
+ forminfo.FormObject = (Form)form;
+ forminfo.Name = item_id + "/" + rev_id;
+ forminfo.ParentObject = null;
+ forminfo.RelationName = "IMAN_master_form";
+ forminfo.SaveDB = true;
+ forminfo.FormType = "ItemRevision Master";
+ forminfo_vec[0] = forminfo;
+ ed1.WriteMessage("开始更新\n");
+ Teamcenter.Services.Strong.Core._2007_01.DataManagement.CreateOrUpdateFormsResponse formResp =
+ dmService.CreateOrUpdateForms(forminfo_vec);
+ ModelObject[] respon = { formResp.ServiceData.GetUpdatedObject(0) };
+ dmService.RefreshObjects(respon);
+ ed1.WriteMessage("更新完成\n");
+ break;
+ }
+
+ //保存图纸到TC
+ //KUtil.uploadFile(rev, dwgDataset, datasetName, cadPath, "IMAN_specification", Teamcenter.Hello.Hello.CAD_TYPE, Teamcenter.Hello.Hello.CAD_REF);
+ //KUtil.WriteLog("开始导出PDF");
+ //保存PDF到TC
+ //string tempPDFPath = System.Environment.GetEnvironmentVariable("TEMP")+"\\PDF.pdf";
+ //PrintDwg pdfdwg = new PrintDwg(AcAp.DocumentManager.MdiActiveDocument);
+ //string tempPDFPath = pdfdwg.MultiSheetPlot();
+ //KUtil.WriteLog("导出文件:" + tempPDFPath);
+ //if (File.Exists(tempPDFPath)) {
+ // ed1.WriteMessage("导出文件路径:" + tempPDFPath + "。\n");
+ // if (tempPDFPath.Length > 0) {
+ // KUtil.uploadFile(rev,pdfDataset, datasetName, tempPDFPath, "IMAN_specification", "PDF", "PDF_Reference");
+ // //Teamcenter.Hello.Hello.savePDFToTC(rev, tempPDFPath, datasetName, "PDF", "PDF_Reference");
+ // }
+ //}
+ //else {
+ // ed1.WriteMessage("导出文件路径不存在:\n");
+ // MessageBox.Show("PDF转换异常,未找到文件");
+ //}
+
+ SocketUtil.Refresh(rev.Uid);
+
+ //创建BOM
+ //if (mxllist.Count > 0) {
+ // DialogResult flushbomresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // if (flushbomresult == DialogResult.Yes) {
+ // Folder aimFolder = null;
+ // WorkspaceObject[] object_vec = new WorkspaceObject[1];
+ // object_vec[0] = item;
+ // Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedResponse
+ // refResp = dmService.WhereReferenced(object_vec, 1);
+ // Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedOutput[]
+ // refOutput = refResp.Output;
+
+ // for (int u = 0; u < refOutput.Length; u++) {
+ // Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo[]
+ // info = refOutput[u].Info;
+ // for (int p = 0; p < info.Length; p++) {
+ // Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo
+ // it_info = info[p];
+ // string type = it_info.Referencer.Object_type;
+ // if (type.Contains("Folder")) {
+ // aimFolder = it_info.Referencer as Folder;
+ // ed1.WriteMessage("找到目标文件夹\n");
+ // break;
+ // }
+ // }
+ // }
+
+ // if (aimFolder == null)
+ // Teamcenter.Hello.Hello.CreateBomStructure(rev, null, mxllist, null);
+ // else
+ // Teamcenter.Hello.Hello.CreateBomStructure(rev, null, mxllist, aimFolder);
+ // }
+ //}
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/KUtil.cs b/OriginAutoCAD_chint/hello/KUtil.cs
new file mode 100644
index 0000000..827df6b
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/KUtil.cs
@@ -0,0 +1,517 @@
+using System;
+using System.Text;
+using System.IO;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using Autodesk.AutoCAD.EditorInput;
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+using Teamcenter.Soa.Client;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Services.Strong.Query;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Soa.Client.Model.Strong;
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+using Session = Teamcenter.ClientX.Session;
+using Teamcenter.Services.Strong.Core._2008_06.DataManagement;
+using Teamcenter.Services.Strong.Core._2006_03.DataManagement;
+using Oracle.ManagedDataAccess.Client;
+using UploadFiles;
+
+namespace HelloTeamcenter.hello {
+ class KUtil {
+
+ public static Boolean checkPrivilege(ModelObject mo, String[] privs) {
+ if (mo == null || privs == null || privs.Length == 0) {
+ return true;
+ }
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+
+ return false;
+ }
+
+ public static ItemRevision revise(ItemRevision baseRev) {
+ KUtil.WriteLog("开始升版...");
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ dmService.RefreshObjects(new ModelObject[] { baseRev});
+ dmService.GetProperties(new ModelObject[] { baseRev },new string[]{"object_name"});
+ ReviseInfo reviseInfo = new ReviseInfo();
+ reviseInfo.BaseItemRevision = baseRev;
+ reviseInfo.Description = "";
+ reviseInfo.Name = baseRev.Object_name;
+ //reviseInfo.NewRevId = revId;
+ ReviseResponse2 resp = dmService.Revise2(new ReviseInfo[] { reviseInfo });
+ LogServiceDataError("升版异常",resp.ServiceData);
+ for (int i = 0; i < resp.ServiceData.sizeOfCreatedObjects(); i++) {
+ if ((resp.ServiceData.GetCreatedObject(i) is ItemRevision) || (resp.ServiceData.GetCreatedObject(i) is Design_Revision) || (resp.ServiceData.GetCreatedObject(i) is Part_Revision)) {
+ ItemRevision rev = resp.ServiceData.GetCreatedObject(i) as ItemRevision;
+ dmService.RefreshObjects(new ModelObject[] { rev });
+ return rev;
+ }
+ }
+ return null;
+ }
+
+ public static bool uploadFile(ItemRevision rev, Dataset dataset, String dsName, String filePath, String relation, String dsType, String refName) {
+ KUtil.WriteLog("开始上传文件:" + filePath);
+ //string fileName;
+ //int index = filePath.LastIndexOf("\\");
+ //if (index >= 0) {
+ // fileName = filePath.Substring(index + 1);
+ //}
+ //else {
+ // fileName = filePath;
+ //}
+ //KUtil.WriteLog("数据集名称:" + dsName);
+ //KUtil.WriteLog("开始查找数据集");
+ //Dataset dataset = findDatasetByName(rev, relation, dsName, dsType);
+ if (dataset == null) {
+ KUtil.WriteLog("开始新建数据集:"+dsName);
+ dataset = createDataset(rev, relation, dsName, dsType);
+ if (dataset == null) {
+ throw new System.Exception("创建数据集发生未知异常");
+ }
+ KUtil.WriteLog("新建完成");
+ }
+ //else {
+ // DialogResult updateresult = MessageBox.Show("版本下找到保存“" + fileName + "”的数据集,是否进行覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ // if (updateresult != DialogResult.Yes) {
+ // return false;
+ // }
+ //}
+ uploadFileRef(dataset, filePath, refName);
+ SocketUtil.Refresh(dataset.Uid);
+ return true;
+ }
+
+ ///
+ /// 创建数据集
+ ///
+ /// 目标版本
+ /// 版本和数据集之间的关系名称
+ /// 数据集名称
+ /// 数据集类型
+ ///
+ public static Dataset createDataset(ItemRevision rev, String relName, String dsName, String datasetType) {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties
+ oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties();
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[]
+ dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1];
+ oneDatasetProp.ClientId = "datasetWriteTixTestClientId";
+ oneDatasetProp.Type = datasetType;//datasetinfo.Datatype;
+ oneDatasetProp.Name = dsName;//datasetinfo.Ds_name;
+ oneDatasetProp.Description = "";
+ oneDatasetProp.Container = null;
+ dataset_vec[0] = oneDatasetProp;
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse
+ dsResp = dmService.CreateDatasets(dataset_vec);
+ ThrowServiceDataError("新建数据集失败",dsResp.ServiceData);
+ if (dsResp.Output.Length == 0) {
+ return null;
+ }
+ Dataset createdataset = dsResp.Output[0].Dataset;
+ //添加cad和pdf数据集
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[]
+ rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1];
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship
+ one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship();
+ one_rela.ClientId = "";
+ one_rela.PrimaryObject = rev;
+ one_rela.SecondaryObject = createdataset;
+ one_rela.RelationType = relName;
+ one_rela.UserData = null;
+ rela_vec[0] = one_rela;
+
+ Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse
+ reResp = dmService.CreateRelations(rela_vec);
+ ThrowServiceDataError("创建关系失败",reResp.ServiceData);
+ return createdataset;
+ }
+
+ ///
+ /// 更新数据集文件引用
+ ///
+ /// 数据集
+ /// 文件路径
+ /// 文件引用名称
+ public static void uploadFileRef(Dataset dataset, String filePath, String refName) {
+ KUtil.WriteLog("开始更新文件引用");
+ bool ischeckout = false;
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ ModelObject[] objects2 = { dataset };
+ String[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ if (!dataset.Is_modifiable) {
+ throw new System.Exception("您打开的CAD图纸数据集状态为只读, 无法保存到到系统!");
+ }
+ User checkuserinfo = dataset.Checked_out_user as User;
+ if (checkuserinfo != null) {
+ if (checkuserinfo.Uid != Teamcenter.Hello.Hello.loginuser.Uid) {
+ throw new System.Exception("该CAD图纸所在数据集已被其他用户签出,无法保存到系统!");
+ }
+ }
+ if (dataset.Checked_out == "Y") {
+ ischeckout = true;
+ }
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1];
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo();
+ fileInfo.FileName = filePath;//mdiactivefile;
+ fileInfo.AllowReplace = true;
+ fileInfo.IsText = false;
+ //数据集命名引用名称
+ fileInfo.NamedReferencedName = refName;//"PDF";//datasetinfo.Refname;
+ fileInfos[0] = fileInfo;
+ Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData();
+ inputData.Dataset = dataset;
+ inputData.CreateNewVersion = false;
+ inputData.DatasetFileInfos = fileInfos;
+ ModelObject[] datasets = new ModelObject[1];
+ datasets[0] = dataset;
+ Teamcenter.Services.Strong.Core._2006_03.Reservation.Reservation res = ReservationService.getService(Session.getConnection());
+ if (ischeckout) {
+ ServiceData sd = res.Checkin(datasets);
+ ThrowServiceDataError("签入数据集失败:", sd);
+ }
+ dmService.RefreshObjects(datasets);
+ dmService.GetProperties(datasets,new string[]{"ref_list"});
+ ModelObject[] oldRefs = dataset.Ref_list;
+ int refCnt = oldRefs==null?0:oldRefs.Length;
+ if(refCnt>0){
+ Teamcenter.Services.Strong.Core._2007_09.DataManagement.RemoveNamedReferenceFromDatasetInfo[] removeInfo = new Teamcenter.Services.Strong.Core._2007_09.DataManagement.RemoveNamedReferenceFromDatasetInfo[1];
+ removeInfo[0] = new Teamcenter.Services.Strong.Core._2007_09.DataManagement.RemoveNamedReferenceFromDatasetInfo();
+ removeInfo[0].Dataset = dataset;
+ Teamcenter.Services.Strong.Core._2007_09.DataManagement.NamedReferenceInfo[] nrInfo = new Teamcenter.Services.Strong.Core._2007_09.DataManagement.NamedReferenceInfo[refCnt];
+ for(int i=0;i 0) {
+ KUtil.WriteLog("发送失败");
+ return;
+ }
+ dmService.RefreshObjects(new ModelObject[] { home });
+ KUtil.WriteLog("发送成功");
+ }
+
+ public static void deleteRelation(DataManagementService dmService, ModelObject parent, ModelObject child, string relName) {
+ Relationship rel = new Relationship();
+ rel.ClientId = "";
+ rel.PrimaryObject = parent;
+ rel.SecondaryObject = child;
+ rel.RelationType = relName;
+ rel.UserData = null;
+ ServiceData sd = dmService.DeleteRelations(new Relationship[] { rel });
+ ThrowServiceDataError("删除关系失败",sd);
+ }
+
+ public static Dataset findDatasetByName(ItemRevision rev, String relName, String dsName, String datasetType) {
+ //查找dwg数据集
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref
+ myPref2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref();
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2
+ myFilter2 = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2();
+ myFilter2.RelationName = relName;
+ string[] typeVec2 = new string[1];
+ //数据集类型
+ typeVec2[0] = datasetType;//"PDF";//datasetinfo.Datatype;
+ myFilter2.ObjectTypeNames = typeVec2;
+ myPref2.ExpItemRev = false;
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec2 = { myFilter2 };
+ myPref2.Info = myFilterVec2;
+ ModelObject[] primaryObjects2 = { rev };
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse
+ myResp2 = dmService.ExpandGRMRelationsForPrimary(primaryObjects2, myPref2);
+ if (myResp2.Output.Length > 0) {
+ for (int k = 0; k < myResp2.Output.Length; k++) {
+ Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput
+ grmOutput2 = myResp2.Output[k];
+ for (int l = 0; l < grmOutput2.OtherSideObjData.Length; l++) {
+ ExpandGRMRelationsData otherSideData = grmOutput2.OtherSideObjData[l];
+ if (otherSideData.OtherSideObjects.Length > 0) {
+ dmService.RefreshObjects(otherSideData.OtherSideObjects);
+ for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++) {
+ Dataset tempDataset;
+ //Teamcenter.Soa.Client.Model.ServiceData sData;
+ tempDataset = otherSideData.OtherSideObjects[m] as Dataset;
+ ModelObject[] tObj = { tempDataset };
+ String[] tAttr = { "object_name" };
+ dmService.RefreshObjects(tObj);
+ dmService.GetProperties(tObj, tAttr);
+ if (tempDataset.Object_name.Equals(dsName)) {
+ return tempDataset;
+ }
+ ModelObject[] refs = tempDataset.Ref_list;
+ if (refs.Length == 0) {
+ continue;
+ }
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ //记录错误信息
+ public static void LogErr(System.Exception ex) {
+ if (ex.InnerException == null) {
+ WriteLog(ex.Message + "\r\n" + ex.StackTrace);
+ }
+ else {
+ WriteLog(ex.Message + "\r\n" + ex.StackTrace + "\r\n" + ex.InnerException.Message);
+ }
+ }
+ ///
+ /// 查询对象版本
+ ///
+ ///
+ ///
+ ///
+ public static ItemRevision searchLatestRevYH(string itemId)
+ {
+ ItemRevision rev = null;
+ OracleConnection myConnection = UploadFiles.SqlUtil.OpenConn();
+ if (myConnection == null)
+ {
+ ConnorUtils.WriteLog("连接数据库失败");
+ return null;
+ }
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ StringBuilder selectsql = new StringBuilder();
+ selectsql.Append("SELECT V.puid AS PLM版本UID,\r\n" +
+ "P.Pitem_Id AS PLM对象ID,\r\n" +
+ "V.pitem_revision_id AS PLM版本,\r\n" +
+ "(select u1.puser_id from infodba.PPOM_USER U1 where U1.Puid = O.Rowning_Useru) as 所有者ID,\r\n" +
+ "to_char(W.PDATE_RELEASED+ 8 / 24,'yyyy-MM-dd') AS PLM发布时间 \r\n" +
+ " FROM infodba.PITEM P,\r\n" +
+ "infodba.PITEMREVISION V,\r\n" +
+ "infodba.PPOM_APPLICATION_OBJECT O,\r\n" +
+ "infodba.PWORKSPACEOBJECT W\r\n" +
+ "WHERE P.puid = V.ritems_tagu\r\n" +
+ "AND V.puid = O.puid\r\n" +
+ "AND W.puid = V.puid\r\n" +
+ "AND W.Pactive_Seq <> 0\r\n" +
+ "AND v.pitem_revision_id = (select max(pitem_revision_id) from infodba.PITEMREVISION VC where vc.ritems_tagu = p.puid)\r\n" +
+ "AND P.Pitem_Id = '");
+
+ // ConnorUtils.WriteLog("查询sql:"+ selectsql.ToString());
+ selectsql.Append(itemId).Append("'");
+ OracleCommand myCommand = new OracleCommand(selectsql.ToString(), myConnection);
+ OracleDataReader rdr = myCommand.ExecuteReader();
+ while (rdr.Read())
+ {
+ string revuid = rdr["PLM版本UID"].ToString();
+ ServiceData resultDate = dmService.LoadObjects(new string[] { revuid });
+ if (resultDate.sizeOfPlainObjects() > 0)
+ {
+ rev = resultDate.GetPlainObject(0) as ItemRevision;
+ }
+ string item_id = rdr["PLM对象ID"].ToString();
+ string datereleased = rdr["PLM发布时间"].ToString();
+ string maxrevid = rdr["PLM版本"].ToString();
+ string owning_user = rdr["所有者ID"].ToString();
+ }
+ try
+ {
+ myConnection.Close();
+ }
+ catch (System.Exception ex)
+ {
+ ConnorUtils.WriteLog("数据库关闭失败");
+ return null;
+ }
+
+ return rev;
+ }
+ ///
+ /// 查询对象版本
+ ///
+ ///
+ ///
+ ///
+ public static ItemRevision searchLatestRev(string itemId) {
+ if (itemId == null||string.IsNullOrWhiteSpace(itemId)) {
+ return null;
+ }
+ ItemRevision item_rev = null;
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0) {
+ throw new System.Exception("没有从TC中找到保存的查询");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++) {
+ if (savedQueries.Queries[i].Name.Equals("Latest Item Revision...")) {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+
+ if (query == null) {
+ throw new System.Exception("TC中不存在“最新零组件版本...”查询");
+ }
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = itemId;
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ ThrowServiceDataError("查询最新零组件版本失败",savedQueryResult.ServiceData);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+ if (found.NumOfObjects > 0) {
+ item_rev = found.Objects[0] as ItemRevision;
+ }
+ return item_rev;
+ }
+
+ //抛出异常信息
+ public static void ThrowServiceDataError(String msgHeader, ServiceData data) {
+ if (data.sizeOfPartialErrors() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < data.sizeOfPartialErrors(); i++) {
+ foreach (string msg in data.GetPartialError(i).Messages) {
+ sb.Append(msg + "\n");
+ }
+ }
+ if (sb.Length > 0) {
+ throw new System.Exception(msgHeader + sb.ToString());
+ }
+ }
+ }
+
+ //抛出异常信息
+ public static void LogServiceDataError(String msgHeader, ServiceData data) {
+ if (data.sizeOfPartialErrors() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < data.sizeOfPartialErrors(); i++) {
+ foreach (string msg in data.GetPartialError(i).Messages) {
+ sb.Append(msg + "\n");
+ }
+ }
+ if (sb.Length > 0) {
+ KUtil.WriteLog(msgHeader + "\r\n" + sb.ToString());
+ }
+ }
+ }
+
+ public static void WriteLog(string msg) {
+ FileStream fs = null;
+ try {
+ string time = DateTime.Now.ToString("yyyyMMdd");
+ string now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ fs = new FileStream(System.Environment.GetEnvironmentVariable("TEMP") + "\\TC_CAD_Integration_log_" + time + ".txt", FileMode.Append);
+ //获得字节数组
+ byte[] data = System.Text.Encoding.Default.GetBytes("[" + now + "]" + msg + "\r\n");
+ //开始写入
+ fs.Write(data, 0, data.Length);
+ fs.Flush();
+ fs.Close();
+ }
+ catch (System.Exception e) {
+ Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
+ ed.WriteMessage("写入日志出错:"+e.Message+"\n");
+ }
+ }
+
+ public static string GetPropValue(Teamcenter.Soa.Client.Model.Property property) {
+ if (property == null) {
+ return "";
+ }
+ string result = "";
+ int type = property.PropertyDescription.Type;
+ switch (type) {
+ case Teamcenter.Soa.Client.Model.PropertyValueType.TYPE_string:
+ result = property.StringValue;
+ break;
+ case Teamcenter.Soa.Client.Model.PropertyValueType.TYPE_float:
+ result = Teamcenter.Hello.Hello.removeTrailingZero(property.FloatValueAsDouble.ToString("#0.000"));
+ break;
+ case Teamcenter.Soa.Client.Model.PropertyValueType.TYPE_double:
+ result = Teamcenter.Hello.Hello.removeTrailingZero(property.DoubleValue.ToString("#0.000"));
+ break;
+ default:
+ result = property.DisplayableValue;
+ break;
+ }
+ return result;
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/MXLClass.cs b/OriginAutoCAD_chint/hello/MXLClass.cs
new file mode 100644
index 0000000..ae2cd73
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/MXLClass.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HelloTeamcenter.hello
+{
+ public class MXLClass
+ {
+ private string index;
+
+ public string Index
+ {
+ get { return index; }
+ set { index = value; }
+ }
+ private string item_id;
+
+ public string Item_id
+ {
+ get { return item_id; }
+ set { item_id = value; }
+ }
+ private string partnumber;
+
+ public string Partnumber
+ {
+ get { return partnumber; }
+ set { partnumber = value; }
+ }
+ private string name;
+
+ public string Name
+ {
+ get { return name; }
+ set { name = value; }
+ }
+ private string object_desc;
+
+ public string Object_desc
+ {
+ get { return object_desc; }
+ set { object_desc = value; }
+ }
+ private string count;
+
+ public string Count
+ {
+ get { return count; }
+ set { count = value; }
+ }
+ private string material;
+
+ public string Material
+ {
+ get { return material; }
+ set { material = value; }
+ }
+ private string tolweight;
+
+ public string Tolweight
+ {
+ get { return tolweight; }
+ set { tolweight = value; }
+ }
+ private string perweight;
+
+ public string Perweight
+ {
+ get { return perweight; }
+ set { perweight = value; }
+ }
+ private string memo;
+
+ public string Memo
+ {
+ get { return memo; }
+ set { memo = value; }
+ }
+ private string itemtype;
+
+ public string Itemtype
+ {
+ get { return itemtype; }
+ set { itemtype = value; }
+ }
+ private int index_num;
+
+ public int Index_num
+ {
+ get { return index_num; }
+ set { index_num = value; }
+ }
+ private string producttype;
+
+ public string Producttype
+ {
+ get { return producttype; }
+ set { producttype = value; }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/MyExtension.cs b/OriginAutoCAD_chint/hello/MyExtension.cs
new file mode 100644
index 0000000..48b5800
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/MyExtension.cs
@@ -0,0 +1,15 @@
+
+namespace HelloTeamcenter.hello
+{
+ class MyExtension:Autodesk.AutoCAD.Runtime.IExtensionApplication
+ {
+ public void Initialize()
+ {
+
+ }
+ public void Terminate()
+ {
+
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginBTL.cs b/OriginAutoCAD_chint/hello/OriginBTL.cs
new file mode 100644
index 0000000..637e5b9
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginBTL.cs
@@ -0,0 +1,152 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Text;
+using Teamcenter.Soa.Client.Model.Strong;
+using HelloTeamcenter.upload;
+
+namespace HelloTeamcenter.hello
+{
+ public class OriginBTL
+ {
+ private Hashtable btlinfotable = null; // 块参照上所有信息
+
+ public Hashtable Btlinfotable
+ {
+ get { return btlinfotable; }
+ set { btlinfotable = value; }
+ }
+
+ //明细表bom信息
+ private List bomlines = null;
+
+ public List Bomlines
+ {
+ get { return bomlines; }
+ set { bomlines = value; }
+ }
+
+ private string dwgpath;
+ public string Dwgpath
+ {
+ get { return dwgpath; }
+ set { dwgpath = value; }
+ }
+ private string itemid;
+ public string Itemid
+ {
+ get { return itemid; }
+ set { itemid = value; }
+ }
+
+ private string revid;
+ public string Revid
+ {
+ get { return revid; }
+ set { revid = value; }
+ }
+ private string revuid;
+ public string Revuid
+ {
+ get { return revuid; }
+ set { revuid = value; }
+ }
+
+ private ItemRevision rev;
+
+ public ItemRevision Rev
+ {
+ get { return rev; }
+ set { rev = value; }
+ }
+
+ private Dataset pdfDataset;
+
+ public Dataset PdfDataset
+ {
+ get { return pdfDataset; }
+ set { pdfDataset = value; }
+ }
+
+ private Dataset dwgDataset;
+
+ public Dataset DwgDataset
+ {
+ get { return dwgDataset; }
+ set { dwgDataset = value; }
+ }
+
+ public OriginBTL()
+ {
+ this.btlname = "";
+ this.dwgpath = "";
+ this.revid = "";
+ this.revuid = "";
+ this.itemid = "";
+ this.btlinfotable = new Hashtable();
+ this.btldatatable = new Hashtable();
+ this.btltctable = new Hashtable();
+ this.btltypetable = new Hashtable();
+ this.btlwritetable = new Hashtable();
+ this.Btlupdatetable = new Hashtable();
+ this.Btlfromtctable = new Hashtable();
+ this.bomlines = new List();
+ }
+
+ private string btlname; //标题栏块参照名
+
+ public string Btlname
+ {
+ get { return btlname; }
+ set { btlname = value; }
+ }
+ private Hashtable btldatatable = null; //
+
+ public Hashtable Btldatatable
+ {
+ get { return btldatatable; }
+ set { btldatatable = value; }
+ }
+ private Hashtable btltctable = null; //
+
+ public Hashtable Btltctable
+ {
+ get { return btltctable; }
+ set { btltctable = value; }
+ }
+ private Hashtable btltypetable = null; //
+
+ public Hashtable Btltypetable
+ {
+ get { return btltypetable; }
+ set { btltypetable = value; }
+ }
+
+ private Hashtable btlwritetable = null; //
+
+ public Hashtable Btlwritetable
+ {
+ get { return btlwritetable; }
+ set { btlwritetable = value; }
+ }
+
+
+ private Hashtable btlupdatetable = null; //
+
+ public Hashtable Btlupdatetable
+ {
+ get { return btlupdatetable; }
+ set { btlupdatetable = value; }
+ }
+
+ private Hashtable btlfromtctable = null; //
+
+ public Hashtable Btlfromtctable
+ {
+ get { return btlfromtctable; }
+ set { btlfromtctable = value; }
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginDataSet.cs b/OriginAutoCAD_chint/hello/OriginDataSet.cs
new file mode 100644
index 0000000..155e3eb
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginDataSet.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections;
+
+namespace HelloTeamcenter.hello
+{
+ class OriginDataSet
+ {
+ private string datatype = null;
+
+ public string Datatype
+ {
+ get { return datatype; }
+ set { datatype = value; }
+ }
+ private string refname = null;
+
+ public string Refname
+ {
+ get { return refname; }
+ set { refname = value; }
+ }
+ private string separator = null;
+
+ public string Separator
+ {
+ get { return separator; }
+ set { separator = value; }
+ }
+ private string ds_name = null;
+
+ public string Ds_name
+ {
+ get { return ds_name; }
+ set { ds_name = value; }
+ }
+
+ public OriginDataSet()
+ {
+ this.datatype = "";
+ this.refname = "";
+ this.separator = "";
+ this.ds_name = "";
+ this.dsnametable = new Hashtable();
+ }
+
+ private Hashtable dsnametable = null;
+
+ public Hashtable Dsnametable
+ {
+ get { return dsnametable; }
+ set { dsnametable = value; }
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginItemType.cs b/OriginAutoCAD_chint/hello/OriginItemType.cs
new file mode 100644
index 0000000..90f110e
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginItemType.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections;
+
+namespace HelloTeamcenter.hello
+{
+ class OriginItemType
+ {
+ private Hashtable itemtypetable = null; //记录Item类型.xml文件的信息
+
+ public Hashtable Itemtypetable
+ {
+ get { return itemtypetable; }
+ set { itemtypetable = value; }
+ }
+
+ public OriginItemType()
+ {
+ itemtypetable = new Hashtable();
+ }
+
+ public void getType(string xmlpath)
+ {
+ OriginReadXml originreadxml = new OriginReadXml();
+ itemtypetable = originreadxml.OriginReadTypeXML(xmlpath, itemtypetable);
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginMXL.cs b/OriginAutoCAD_chint/hello/OriginMXL.cs
new file mode 100644
index 0000000..9ac3f02
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginMXL.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Text;
+
+
+namespace HelloTeamcenter.hello
+{
+ public class OriginMXL
+ {
+
+ public OriginMXL()
+ {
+ this.mxlname = "";
+ this.Mxlinfotable = new Hashtable();
+ this.Mxldatatable = new Hashtable();
+ this.Mxltctable = new Hashtable();
+ this.Mxlisbomtable = new Hashtable();
+ this.Mxlupdatetable = new Hashtable();
+ this.Mxltypetable = new Hashtable();
+ }
+
+
+ private string mxlname; //明细栏块参照名
+
+ public string Mxlname
+ {
+ get { return mxlname; }
+ set { mxlname = value; }
+ }
+
+ private Hashtable mxlinfotable = null; //块参照上所有信息
+
+ public Hashtable Mxlinfotable
+ {
+ get { return mxlinfotable; }
+ set { mxlinfotable = value; }
+ }
+
+ private Hashtable mxldatatable = null; //
+
+ public Hashtable Mxldatatable
+ {
+ get { return mxldatatable; }
+ set { mxldatatable = value; }
+ }
+ private Hashtable mxltctable = null; //
+
+ public Hashtable Mxltctable
+ {
+ get { return mxltctable; }
+ set { mxltctable = value; }
+ }
+ private Hashtable mxlisbomtable = null; //
+
+ public Hashtable Mxlisbomtable
+ {
+ get { return mxlisbomtable; }
+ set { mxlisbomtable = value; }
+ }
+ private Hashtable mxlupdatetable = null;//
+
+ public Hashtable Mxlupdatetable
+ {
+ get { return mxlupdatetable; }
+ set { mxlupdatetable = value; }
+ }
+
+ private Hashtable mxltypetable = null; //
+
+ public Hashtable Mxltypetable
+ {
+ get { return mxltypetable; }
+ set { mxltypetable = value; }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginReadXml.cs b/OriginAutoCAD_chint/hello/OriginReadXml.cs
new file mode 100644
index 0000000..bd0e400
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginReadXml.cs
@@ -0,0 +1,600 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Xml;
+using Autodesk.AutoCAD.EditorInput;
+
+namespace HelloTeamcenter.hello
+{
+ class OriginReadXml
+ {
+ private Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ public OriginBTL OriginReadBTL(string filepath,string btlname)
+ {
+ OriginBTL btlinfo = new OriginBTL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认标题栏.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ string tempbtlname = xeonetitle.GetAttribute("blockname").ToString();
+ ed.WriteMessage("标题栏块名称:" + tempbtlname + "\n");
+
+ if (tempbtlname == btlname)
+ {
+ //获得title子节点
+ XmlNodeList onetitleinfo = xeonetitle.ChildNodes;
+
+ btlinfo.Btlname = btlname;
+ foreach (XmlNode node in onetitleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ string titletype = "";
+ string titlecad = "";
+ string titletc = "";
+ string titlewriteable = "";
+ string titleupdateable = "";
+ string titlefromtc = "";
+ if (xeone.HasAttribute("type"))
+ {
+ titletype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ titlecad = xeone.GetAttribute("cad").ToString();
+ ed.WriteMessage("CAD ATTR =" + titlecad + "\n");
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ titletc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("writeable"))
+ {
+ titlewriteable = xeone.GetAttribute("writeable").ToString();
+ }
+ if (xeone.HasAttribute("updateable"))
+ {
+ titleupdateable = xeone.GetAttribute("updateable").ToString();
+ }
+ if (xeone.HasAttribute("fromtc"))
+ {
+ titlefromtc = xeone.GetAttribute("fromtc").ToString();
+ }
+ /*ed.WriteMessage(xeone.GetAttribute("type").ToString() + " " +
+ xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() +"\n");*/
+ btlinfo.Btldatatable = origintool.TableHasKey(btlinfo.Btldatatable, titlecad, "");
+ btlinfo.Btltctable = origintool.TableHasKey(btlinfo.Btltctable, titlecad, titletc);
+ btlinfo.Btltypetable = origintool.TableHasKey(btlinfo.Btltypetable, titlecad, titletype);
+ btlinfo.Btlwritetable = origintool.TableHasKey(btlinfo.Btlwritetable, titlecad, titlewriteable);
+ btlinfo.Btlupdatetable = origintool.TableHasKey(btlinfo.Btlupdatetable, titlecad, titleupdateable);
+ btlinfo.Btlfromtctable = origintool.TableHasKey(btlinfo.Btlfromtctable,titlecad,titlefromtc);
+ }
+ }
+ }
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return btlinfo;
+ }
+
+ //获取标题栏.XML信息,将信息与OriginBTL对应
+ public ArrayList OriginReadBTLXML(string filepath)
+ {
+ ArrayList listbtl = new ArrayList();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "标题栏.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认标题栏.xml文件配置含有blockname属性\n");
+ return listbtl;
+ }
+ string btlname = xeonetitle.GetAttribute("blockname").ToString();
+ ed.WriteMessage("标题栏块名称:" + btlname + "\n");
+
+ OriginBTL btlinfo = origintool.GetTitleInfo(filepath, btlname);
+ if (btlinfo != null)
+ listbtl.Add(btlinfo);
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message+"\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return listbtl;
+ }
+
+
+ public OriginMXL OriginReadMXL(string filepath)
+ {
+ OriginMXL mxlinfo = new OriginMXL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+ OriginTool origintool = new OriginTool();
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString() + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ //获得bomline子节点
+ XmlNodeList onebomlineinfo = xeonebomline.ChildNodes;
+
+ mxlinfo.Mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ foreach (XmlNode node in onebomlineinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+
+ /*ed.WriteMessage(xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() + " " +
+ xeone.GetAttribute("is_bomline").ToString() + " " +
+ xeone.GetAttribute("overwrite").ToString() + "\n");*/
+ string bomlinetype = "";
+ string bomlinecad = "";
+ string bomlinetc = "";
+ string isbomline = "";
+ string updatebomline = "";
+
+ if (xeone.HasAttribute("type"))
+ {
+ bomlinetype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ bomlinecad = xeone.GetAttribute("cad").ToString();
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ bomlinetc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("is_bomline"))
+ {
+ isbomline = xeone.GetAttribute("is_bomline").ToString();
+ }
+ if (xeone.HasAttribute("overwrite"))
+ {
+ updatebomline = xeone.GetAttribute("overwrite").ToString();
+ }
+ mxlinfo.Mxltypetable = origintool.TableHasKey(mxlinfo.Mxltypetable, bomlinecad, bomlinetype);
+ mxlinfo.Mxldatatable = origintool.TableHasKey(mxlinfo.Mxldatatable, bomlinecad, "");
+ mxlinfo.Mxltctable = origintool.TableHasKey(mxlinfo.Mxltctable, bomlinecad, bomlinetc);
+ mxlinfo.Mxlisbomtable = origintool.TableHasKey(mxlinfo.Mxlisbomtable, bomlinecad, isbomline);
+ mxlinfo.Mxlupdatetable = origintool.TableHasKey(mxlinfo.Mxlupdatetable, bomlinecad, updatebomline);
+
+ ed.WriteMessage("==================================\n");
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return mxlinfo;
+ }
+
+
+
+ //获取明细表.XML信息,将信息与OriginMXL对应
+ public List OriginReadMXLXML(string filepath)
+ {
+ List listmxl = new List();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "明细表.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+ string mxlname = "";
+
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ ed.WriteMessage("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString() + "\n");
+ mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ }
+ else
+ {
+ ed.WriteMessage("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ }
+
+ listmxl = origintool.GetMXLInfo(filepath, mxlname);
+
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return listmxl;
+ }
+
+
+
+ //获取Item类型.xml文件信息
+ public Hashtable OriginReadTypeXML(string filepath,Hashtable itemtypetable)
+ {
+
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "Item类型.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点ItemTypes
+ XmlNodeList xmltypelist = xmldocument.SelectSingleNode("ItemTypes").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+
+
+ foreach (XmlNode onetype in xmltypelist)
+ {
+ //获得一个ItemType
+ XmlElement xeonetype = (XmlElement)onetype;
+ //获得ItemType子节点
+ XmlNodeList onetypeinfo = xeonetype.ChildNodes;
+ foreach (XmlNode node in onetypeinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ //string typecad = "";
+ string typetc = "";
+
+ //if (xeone.HasAttribute("cad"))
+ //{
+ // typecad = xeone.GetAttribute("cad").ToString();
+ //}
+ //else
+ // ed.WriteMessage("Item类型.xml文件配置不符合规范\n");
+ if (xeone.HasAttribute("tc"))
+ {
+ typetc = xeone.GetAttribute("tc").ToString();
+ }
+ else
+ ed.WriteMessage("Item类型.xml文件配置不符合规范\n");
+ /*ed.WriteMessage(xeone.GetAttribute("type").ToString() + " " +
+ xeone.GetAttribute("cad").ToString() + " " +
+ xeone.GetAttribute("tc").ToString() +"\n");*/
+ itemtypetable = origintool.TableHasKey(itemtypetable, typetc, typetc);
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return itemtypetable;
+ }
+
+
+ //获取Item类型.xml文件信息
+ public OriginDataSet OriginReadDataSetXML(string filepath)
+ {
+ OriginDataSet dataset = new OriginDataSet();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "数据集.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点ItemTypes
+ XmlNodeList xmldatalist = xmldocument.SelectSingleNode("DataSets").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+
+
+ foreach (XmlNode onedata in xmldatalist)
+ {
+ //获得一个data
+ XmlElement xeonedata = (XmlElement)onedata;
+ if (xeonedata.HasAttribute("type") && xeonedata.HasAttribute("refname") && xeonedata.HasAttribute("separator"))
+ {
+ dataset.Datatype = xeonedata.GetAttribute("type").ToString();
+ dataset.Refname = xeonedata.GetAttribute("refname").ToString();
+ dataset.Separator = xeonedata.GetAttribute("separator").ToString();
+ ed.WriteMessage(dataset.Datatype + "\t" + dataset.Refname + "\t" + dataset.Separator + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("数据集.xml文件配置有误,请确认!\n");
+ return null;
+ }
+
+ //获得dataset子节点
+ XmlNodeList onedatainfo = xeonedata.ChildNodes;
+ foreach (XmlNode node in onedatainfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ if (xeone.HasAttribute("seq") && xeone.HasAttribute("from"))
+ {
+ int seq = Convert.ToInt32(xeone.GetAttribute("seq").ToString());
+ string from = xeone.GetAttribute("from").ToString();
+ dataset.Dsnametable = origintool.TableHasKey(dataset.Dsnametable, seq, from);
+ ed.WriteMessage(seq+"\t"+from+"\n");
+ }
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return dataset;
+ }
+
+
+ //获取规则.xml文件信息
+ public OriginTypeRule OriginReadRuleXML(string filepath)
+ {
+ OriginTypeRule origintyperule = new OriginTypeRule();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "规则.xml";
+ try
+ {
+ ed.WriteMessage("XML路径:" + filepath + "\n");
+
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点Rule
+ XmlNodeList xmlrulelist = xmldocument.SelectSingleNode("Rules").ChildNodes;
+
+ OriginTool origintool = new OriginTool();
+
+
+ foreach (XmlNode onerule in xmlrulelist)
+ {
+ //获得一个rule
+ XmlElement xeonerule = (XmlElement)onerule;
+ if (xeonerule.HasAttribute("default"))
+ {
+ origintyperule.Defaulttype = xeonerule.GetAttribute("default").ToString();
+ ed.WriteMessage("默认类型:"+origintyperule.Defaulttype + "\n");
+ }
+ else
+ {
+ origintyperule.Defaulttype = "Item";
+ }
+
+ //获得rule子节点
+ XmlNodeList oneruleinfo = xeonerule.ChildNodes;
+ foreach (XmlNode node in oneruleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ if (xeone.HasAttribute("seq"))
+ {
+ int seq = Convert.ToInt32(xeone.GetAttribute("seq").ToString());
+ ed.WriteMessage("序号" + seq + "\n");
+ }
+ else
+ {
+ ed.WriteMessage("规则.xml文件中没有配置seq属性列,请检查配置\n");
+ return null;
+ }
+ string seqstring = xeone.GetAttribute("seq").ToString();
+ if (xeone.HasAttribute("source"))
+ {
+ string sourcestring = xeone.GetAttribute("source").ToString();
+ ed.WriteMessage("序号:"+seqstring+"要处理的对象:" + sourcestring + "\n");
+ origintyperule.Sourcetable = origintool.TableHasKey(origintyperule.Sourcetable, seqstring, sourcestring);
+ }
+ else
+ origintyperule.Sourcetable = origintool.TableHasKey(origintyperule.Sourcetable, seqstring, "");
+ if (xeone.HasAttribute("startwith"))
+ {
+ string startstring = xeone.GetAttribute("startwith").ToString();
+ ed.WriteMessage("序号:" + seqstring + "startwith:" + startstring + "\n");
+ origintyperule.Starttable = origintool.TableHasKey(origintyperule.Starttable, seqstring, startstring);
+ }
+ else
+ origintyperule.Starttable = origintool.TableHasKey(origintyperule.Starttable, seqstring, "");
+ if (xeone.HasAttribute("endwith"))
+ {
+ string endstring = xeone.GetAttribute("endwith").ToString();
+ ed.WriteMessage("序号:" + seqstring + "endwith:" + endstring + "\n");
+ origintyperule.Endtable = origintool.TableHasKey(origintyperule.Endtable, seqstring, endstring);
+ }
+ else
+ origintyperule.Endtable = origintool.TableHasKey(origintyperule.Endtable, seqstring, "");
+ if (xeone.HasAttribute("contain"))
+ {
+ string containstring = xeone.GetAttribute("contain").ToString();
+ ed.WriteMessage("序号:" + seqstring + "contain:" + containstring + "\n");
+ origintyperule.Containtable = origintool.TableHasKey(origintyperule.Containtable,seqstring,containstring);
+ }
+ else
+ origintyperule.Containtable = origintool.TableHasKey(origintyperule.Containtable, seqstring, "");
+ if (xeone.HasAttribute("equal"))
+ {
+ string equalstring = xeone.GetAttribute("equal").ToString();
+ ed.WriteMessage("序号:" + seqstring + "equal:" + equalstring + "\n");
+ origintyperule.Equaltable = origintool.TableHasKey(origintyperule.Equaltable,seqstring,equalstring);
+ }
+ else
+ origintyperule.Equaltable = origintool.TableHasKey(origintyperule.Equaltable, seqstring, "");
+ if (xeone.HasAttribute("type"))
+ {
+ string typestring = xeone.GetAttribute("type").ToString();
+ ed.WriteMessage("序号:" + seqstring + "type:" + typestring + "\n");
+ origintyperule.Typetable = origintool.TableHasKey(origintyperule.Typetable,seqstring,typestring);
+ }
+ else
+ origintyperule.Typetable = origintool.TableHasKey(origintyperule.Typetable, seqstring, "");
+ if (xeone.HasAttribute("true"))
+ {
+ string truestring = xeone.GetAttribute("true").ToString();
+ ed.WriteMessage("序号:" + seqstring + "true:" + truestring + "\n");
+ origintyperule.Truetable = origintool.TableHasKey(origintyperule.Truetable,seqstring,truestring);
+ }
+ else
+ origintyperule.Truetable = origintool.TableHasKey(origintyperule.Truetable, seqstring, "");
+ if (xeone.HasAttribute("false"))
+ {
+ string falsestring = xeone.GetAttribute("false").ToString();
+ ed.WriteMessage("序号:" + seqstring + "false:" + falsestring + "\n");
+ origintyperule.Falsetable = origintool.TableHasKey(origintyperule.Falsetable,seqstring,falsestring);
+ }
+ else
+ origintyperule.Falsetable = origintool.TableHasKey(origintyperule.Falsetable, seqstring, "");
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ed.WriteMessage(ex.Message + "\n");
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return origintyperule;
+ }
+
+ }
+
+
+}
diff --git a/OriginAutoCAD_chint/hello/OriginTool.cs b/OriginAutoCAD_chint/hello/OriginTool.cs
new file mode 100644
index 0000000..9cb7ebb
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginTool.cs
@@ -0,0 +1,1936 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.IO;
+//using System.Windows.Forms;
+
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Teamcenter.Services.Strong.Query;
+
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using System.Configuration;
+using System.Reflection;
+
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+namespace HelloTeamcenter.hello
+{
+ public class SortMXL1 : IComparer
+ {
+ public int Compare(OriginMXL one, OriginMXL two)
+ {
+ return (Convert.ToInt32(one.Mxldatatable["序号"].ToString())).CompareTo((Convert.ToInt32(two.Mxldatatable["序号"].ToString())));
+ }
+ }
+
+
+ class OriginTool
+ {
+
+ private Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ private static User loginuser;
+
+ public static User Loginuser
+ {
+ get { return OriginTool.loginuser; }
+ set { OriginTool.loginuser = value; }
+ }
+
+ //获取标题栏信息
+ public OriginBTL GetTitleInfo(string filepath,string btlname)
+ {
+ //OriginTool origintool = new OriginTool();
+ OriginBTL btlinfo = new OriginBTL();
+ OriginReadXml originreadxml = new OriginReadXml();
+ btlinfo = originreadxml.OriginReadBTL(filepath,btlname);
+ if(btlinfo ==null)
+ return null;
+
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (btlinfo.Btldatatable.ContainsKey(aRef.Tag))
+ {
+ btlinfo.Btldatatable = this.TableHasKey(btlinfo.Btldatatable, aRef.Tag, aRef.TextString);
+ }
+
+ btlinfo.Btlinfotable = this.TableHasKey(btlinfo.Btlinfotable, aRef.Tag, aRef.TextString);
+
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return btlinfo;
+ }
+
+
+
+ public void SetTitleInfo(string btlname, Hashtable tempvaluetable)
+ {
+ ed.WriteMessage("块名称:" + btlname + "\n");
+ Database db = HostApplicationServices.WorkingDatabase;
+
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
+
+ if (blt.Has(btlname))
+ {
+
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+
+ foreach (ObjectId item in bltr)
+ {
+
+ Entity ent = null;
+ try
+ {
+
+ ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ }catch(Autodesk.AutoCAD.Runtime.Exception e){
+ continue;
+ }
+
+ if (ent.GetType().Name == "BlockReference")
+ {
+
+ BlockReference bref = (BlockReference)ent;
+
+ if (bref.Name == btlname)
+ {
+
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ ed.WriteMessage("设置" + aRef.Tag.ToString() + "\t" + tempvaluetable[aRef.Tag.ToString()].ToString() + "\n");
+ if (string.IsNullOrWhiteSpace(tempvaluetable[aRef.Tag.ToString()].ToString())) {
+ ed.WriteMessage("跳过空属性\n");
+ continue;
+ }
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+
+ }
+
+ }
+ }
+ }
+ System.Windows.Forms.MessageBox.Show("属性同步结束!", "提示");
+ }
+ tran.Commit();
+ }
+
+ }
+
+
+
+ public void SetTitleInfo_v1(string btlname, Hashtable tempvaluetable)
+ {
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ ed.WriteMessage("设置" + aRef.Tag.ToString() + "\t" + tempvaluetable[aRef.Tag.ToString()].ToString() + "\n");
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+ }
+ }
+ }
+ }
+ //System.Windows.Forms.MessageBox.Show("属性同步结束!", "提示");
+ }
+ tran.Commit();
+ }
+
+ }
+
+ //判断当前table是否还有指定key值,如果有,则用新的value值替换
+ public Hashtable TableHasKey(Hashtable target, object key, object value)
+ {
+ if(target.Contains(key))
+ {
+ target.Remove(key);
+ }
+ target.Add(key, value);
+
+ return target;
+ }
+
+
+ //获取明细栏信息
+ public List GetMXLInfo(string filepath, string mxlname)
+ {
+ //OriginTool origintool = new OriginTool();
+ List mxllist = new List();
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+ if (blt.Has(mxlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == mxlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ OriginMXL onemxlinfo = new OriginMXL();
+ OriginReadXml originreadxml = new OriginReadXml();
+ onemxlinfo = originreadxml.OriginReadMXL(filepath);
+
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (onemxlinfo.Mxldatatable.ContainsKey(aRef.Tag))
+ {
+ onemxlinfo.Mxldatatable = this.TableHasKey(onemxlinfo.Mxldatatable, aRef.Tag, aRef.TextString);
+ }
+
+ onemxlinfo.Mxlinfotable = this.TableHasKey(onemxlinfo.Mxlinfotable, aRef.Tag, aRef.TextString);
+
+ }
+
+ mxllist.Add(onemxlinfo);
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return mxllist;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public Boolean insertBomMXL(List bomMsgBeanList) {
+ Boolean isOk = false;
+ String blockname = "KHMX1";//明细表内容
+ String btlBlockName = "KHMX0";//明细表表头
+ // Database db = HostApplicationServices.WorkingDatabase;
+ Document acDoc = Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ Editor ed = acDoc.Editor;
+ List pointList = new List();
+ //删除所有的明细栏
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ ed.WriteMessage("删除明细栏 mxl \n");
+ TypedValue[] typedValue = new TypedValue[1];
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, blockname), 0);
+ SelectionFilter filter = new SelectionFilter(typedValue);
+ PromptSelectionResult result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK)
+ {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds())
+ {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, btlBlockName), 0);
+ filter = new SelectionFilter(typedValue);
+ result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK)
+ {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds())
+ {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ tran.Commit();
+ }
+
+
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ ed.WriteMessage("获取明细栏 mxn \n");
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName))
+ {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlBlockName)
+ {
+ Point3d point = bref.Position;
+ pointList.Add(point);
+ ed.WriteMessage("X="+point.X+" | Y="+point.Y+" | Z="+point.Z +"\n");
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ //插入明细表
+ //锁定文件
+ using (acDoc.LockDocument())
+ {
+ int lineCount = 0;
+ for (int i = 0; ; i++)
+ {
+ if (bomMsgBeanList.Count!=1)
+ {
+ if (lineCount >= bomMsgBeanList.Count-1)
+ {
+ break;
+ }
+ }
+
+ Point3d pointOrigin = new Point3d(0,0,0);
+ if (i >= pointList.Count)
+ {
+
+ //pointList[i];
+ PromptPointResult pPtRes = null;
+ PromptPointOptions pPtOpts = new PromptPointOptions("");
+ pPtOpts.Message = "选取插入的点:";
+ pPtRes = ed.GetPoint(pPtOpts);
+
+ pointOrigin = pPtRes.Value;
+ ed.WriteMessage(" x=" + pointOrigin.X + " y=" + pointOrigin.Y + " z=" + pointOrigin.Z);
+
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(btlBlockName))
+ {
+ Point3d InsertPt = pointOrigin;
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[btlBlockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ insertAttri(blockRef, tran, acCurDb, null);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ }
+ else {
+ pointOrigin = pointList[i];
+ }
+ //记录最大的明细栏的个数
+ int maxCount = 0;
+ for (int j = (lineCount==0?0:(lineCount + 1)); j < bomMsgBeanList.Count; j++)
+ {
+ lineCount = j;
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(blockname))
+ {
+ maxCount++;
+ Point3d InsertPt = new Point3d((pointOrigin.X ), (pointOrigin.Y + 5 + (maxCount - 1) * 5), pointOrigin.Z);//-0.0224
+
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite,false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[blockname], OpenMode.ForRead,false) as BlockTableRecord;
+
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ insertAttri(blockRef,tran,acCurDb,bomMsgBeanList[j]);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ if(maxCount == 29){//设置单张图框里面的明细栏的最大数量为29
+ break;
+ }
+ }
+ if (bomMsgBeanList.Count <= 1)
+ break;
+ }
+ }
+ return isOk;
+ }
+
+ public bool isChintCNBTL(BlockTable block,string blockName, Transaction tran, Database db) {
+ bool flag = false;
+ BlockTableRecord modelSpace = tran.GetObject(block[blockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference br = new BlockReference(new Point3d(0, 0, 0), modelSpace.ObjectId);
+ BlockTableRecord btrec = tran.GetObject(br.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
+ if (btrec.HasAttributeDefinitions) {
+ // ed.WriteMessage("ppppp\n");
+ AttributeCollection atcoll = br.AttributeCollection;
+ foreach (ObjectId id in btrec) {
+ DBObject obj = id.GetObject(OpenMode.ForRead);
+ if (obj is Entity) {
+ Entity ent = obj as Entity;
+ if (ent is AttributeDefinition) {
+
+ AttributeDefinition attdef = ent as AttributeDefinition;
+ if (attdef != null) {
+ if( attdef.Tag.StartsWith("图样代号")){
+ if (attdef.Prompt.Contains("图样代号")) {
+ flag = true;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ return flag;
+ }
+
+ public Point3d getBtlPoint(BlockTable block, string blockName, Transaction tran, Database acCurDb) {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ if (blockName.Equals(bref.Name)) {
+ return bref.Position;
+ }
+ }
+ }
+ return new Point3d(0, 0, 0);
+ }
+
+ public Point3d getPoint3d(string btlName, BlockTable block, Transaction tran, Database acCurDb) {
+ //Point3d pointOrigin = new Point3d(0, 0, 0);
+ string suffix = "";
+ if (isChintCNBTL(block, btlName, tran, acCurDb)) {
+ suffix = "-CN";
+ }
+ else {
+ suffix = "-EN";
+ }
+ string config = btlName + suffix;
+ string xStr = GetConfigValue(config + "-X");
+ string yStr = GetConfigValue(config + "-Y");
+ float x = StrToFloat(xStr);
+ float y = StrToFloat(yStr);
+ return new Point3d(x, y, 0);
+ }
+
+ public static string GetConfigValue(string configName) {
+ var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
+ KeyValueConfigurationElement config = appConfig.AppSettings.Settings[configName];
+ if (config == null) {
+ return "";
+ }
+ return config.Value == null ? "" : config.Value;
+ }
+
+ public static float StrToFloat(object FloatString) {
+ float result;
+ if (FloatString != null) {
+ if (float.TryParse(FloatString.ToString(), out result))
+ return result;
+ else {
+ return (float)0.00;
+ }
+ }
+ else {
+ return (float)0.00;
+ }
+ }
+
+ public Point3d getChintBomInsertPoint(double bili) {
+ Document acDoc = Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ Point3d btlPoint = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ string blockName = getBTLName(block);
+ if (blockName != null && !"".Equals(blockName)) {
+ pointOrigin = getPoint3d(blockName, block, tran, acCurDb);
+ btlPoint = getBtlPoint(block, blockName, tran, acCurDb);
+ ed.WriteMessage("标题栏坐标:" + btlPoint.X + ", " + btlPoint.Y + "\n");
+ }
+ //查找存放明细栏的图框
+ //if (block.Has("CHINT-TITLE-A0")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A0", block, tran, acCurDb);
+
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A0")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A0", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A1")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A1", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A1")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A1", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A2")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A2", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A2")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A2", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A3")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A3", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A3")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A3", block, tran, acCurDb);
+ //}
+ //else if (block.Has("CHINT-TITLE-A4")) {
+ // pointOrigin = getPoint3d("CHINT-TITLE-A4", block, tran, acCurDb);
+ //}
+ //else if (block.Has("GC-CHINT-TITLE-A4")) {
+ // pointOrigin = getPoint3d("GC-CHINT-TITLE-A4", block, tran, acCurDb);
+ //}
+ tran.Commit();
+ }
+ pointOrigin = ConvertBili(pointOrigin, bili);
+ return new Point3d(btlPoint.X + pointOrigin.X, btlPoint.Y + pointOrigin.Y, 0);
+ }
+
+ private string getBTLName(BlockTable block) {
+ string blockName = "";
+ if (block.Has("CHINT-TITLE-A0")) {
+ blockName = "CHINT-TITLE-A0";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A0")) {
+ blockName = "GC-CHINT-TITLE-A0";
+ }
+ else if (block.Has("CHINT-TITLE-A1")) {
+ blockName = "CHINT-TITLE-A1";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A1")) {
+ blockName = "GC-CHINT-TITLE-A1";
+ }
+ else if (block.Has("CHINT-TITLE-A2")) {
+ blockName = "CHINT-TITLE-A2";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A2")) {
+ blockName = "GC-CHINT-TITLE-A2";
+ }
+ else if (block.Has("CHINT-TITLE-A3")) {
+ blockName = "CHINT-TITLE-A3";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A3")) {
+ blockName = "GC-CHINT-TITLE-A3";
+ }
+ else if (block.Has("CHINT-TITLE-A4")) {
+ blockName = "CHINT-TITLE-A4";
+ }
+ else if (block.Has("GC-CHINT-TITLE-A4")) {
+ blockName = "GC-CHINT-TITLE-A4";
+ }
+ return blockName;
+ }
+
+
+ public double getChintBomInsertBili() {
+ double mybili = 1.0d;
+ Document acDoc = Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr) {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference") {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name.StartsWith("CHINT-TITLE-A")||bref.Name.StartsWith("GC-CHINT-TITLE-A")) {
+ //ed.WriteMessage("scale x:" + (bref.ScaleFactors == null ? "" : bref.ScaleFactors.X + "") + "\n");
+ if (bref.ScaleFactors != null&&bref.ScaleFactors.X!=0) {
+ mybili = 1.0d / bref.ScaleFactors.X;
+ ed.WriteMessage("读取比例:"+bref.Name+" = "+mybili+"\n");
+ }
+ break;
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return mybili;
+ }
+
+
+ public Point3d getChintBomInsertPoint_old() {
+ Document acDoc = Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ Editor ed = acDoc.Editor;
+ Point3d pointOrigin = new Point3d(0, 0, 0);
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //查找存放明细栏的图框
+ if (block.Has("CHINT-TITLE-A0")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A0", tran, acCurDb)) {
+ pointOrigin = new Point3d(2239.0336, -313.5048, 0);
+ }
+ else {
+ pointOrigin = new Point3d(766.3449, -1092.2177, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A0")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A0", tran, acCurDb)) {
+ pointOrigin = new Point3d(2268.4361, -380.0687, 0);
+ }
+ else {
+ pointOrigin = new Point3d(2122.6918, -311.0528, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A1")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A1", tran, acCurDb)) {
+ pointOrigin = new Point3d(2016.6554, -356.938, 0);
+ }
+ else {
+ pointOrigin = new Point3d(3874.9229, -442.1908, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A1")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A1", tran, acCurDb)) {
+ pointOrigin = new Point3d(2001.4803, -318.9944, 0);
+ }
+ else {
+ pointOrigin = new Point3d(3874.9229, -432.1908, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A2")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A2", tran, acCurDb)) {
+ pointOrigin = new Point3d(286.1828, -853.9018, 0);
+ }
+ else {
+ pointOrigin = new Point3d(1815.9079, -291.1625, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A2")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A2", tran, acCurDb)) {
+ pointOrigin = new Point3d(333.6702, -814.4684, 0);
+ }
+ else {
+ pointOrigin = new Point3d(1815.9079, -281.1625, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A3")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A3", tran, acCurDb)) {
+ pointOrigin = new Point3d(283.1309, -284.1189, 0);
+ }
+ else {
+ pointOrigin = new Point3d(283.1309, -284.1189, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A3")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A3", tran, acCurDb)) {
+ pointOrigin = new Point3d(-225.9579, -274.1189, 0);
+ }
+ else {
+ pointOrigin = new Point3d(283.1309, -274.1189, 0);
+ }
+ }
+ else if (block.Has("CHINT-TITLE-A4")) {
+ if (isChintCNBTL(block, "CHINT-TITLE-A4", tran, acCurDb)) {
+ pointOrigin = new Point3d(14.0998, -240.4484, 0);
+ }
+ else {
+ pointOrigin = new Point3d(-95.1342, -235.1224, 0);
+ }
+ }
+ else if (block.Has("GC-CHINT-TITLE-A4")) {
+ if (isChintCNBTL(block, "GC-CHINT-TITLE-A4", tran, acCurDb)) {
+ pointOrigin = new Point3d(261.4192, -226.4351, 0);
+ }
+ else {
+ pointOrigin = new Point3d(-95.1342, -225.1224, 0);
+ }
+ }
+ tran.Commit();
+ }
+ return pointOrigin;
+ }
+
+ public Point3d ConvertBili(Point3d p, double bili) {
+ double[] dMatrix = new double[16];
+ dMatrix[0] = 1.0 / bili;
+ dMatrix[1] = 0.0;
+ dMatrix[2] = 0.0;
+ dMatrix[3] = 0.0; //-1642.62;//-3285.25;
+
+ dMatrix[4] = 0.0;
+ dMatrix[5] = 1.0 / bili;
+ dMatrix[6] = 0.0;
+ dMatrix[7] = 0.0; //-1249.29;//-2498.59;
+
+ dMatrix[8] = 0.0;
+ dMatrix[9] = 0.0;
+ dMatrix[10] = 1.0;
+ dMatrix[11] = 0.0;
+
+ dMatrix[12] = 0.0;
+ dMatrix[13] = 0.0;
+ dMatrix[14] = 0.0;
+ dMatrix[15] = 1.0;
+ return p.TransformBy(new Matrix3d(dMatrix));
+ }
+
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public Boolean insertBomMXL(List bomMsgBeanList, string bili, String btlBlockName, String blockname)
+ {
+ Boolean isOk = false;
+ //String blockname = "CHINTMXL";//明细表内容
+ //String btlBlockName = "CHINTMX";//明细表表头
+ // Database db = HostApplicationServices.WorkingDatabase;
+ Document acDoc = Application.DocumentManager.MdiActiveDocument;
+ Database acCurDb = acDoc.Database;
+ Editor ed = acDoc.Editor;
+
+ bool hasBLock = false;
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction()) {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName)) {
+ hasBLock = true;
+ }
+ tran.Commit();
+ }
+ if (!hasBLock) {
+ return isOk;
+ }
+ isOk = true;
+
+ List pointList = new List();
+ double myBili = 1;
+
+ if (bili != null && bili.Length > 0) {
+ string[] bilis = bili.Replace(" ", "").Split(':');
+ if (bilis.Length > 1) {
+
+ myBili = (double.Parse(bilis[0]) / double.Parse(bilis[1]));
+ }
+ else {
+ bilis = bili.Replace(" ", "").Split(':');
+ if (bilis.Length > 1) {
+ myBili = (double.Parse(bilis[0]) / double.Parse(bilis[1]));
+ }
+ }
+ }
+ myBili = getChintBomInsertBili();
+ Scale3d scale3d = new Scale3d(1.0d/myBili);
+ ed.WriteMessage("bili=" + bili + "|myBili=>" + myBili + "|scale3d=>" + (1.0d / myBili));
+ //删除所有的明细栏
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ ed.WriteMessage("删除明细栏 mxl \n");
+ TypedValue[] typedValue = new TypedValue[1];
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, blockname), 0);
+ SelectionFilter filter = new SelectionFilter(typedValue);
+ PromptSelectionResult result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK)
+ {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds())
+ {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ typedValue.SetValue(new TypedValue((int)DxfCode.BlockName, btlBlockName), 0);
+ filter = new SelectionFilter(typedValue);
+ result = ed.SelectAll(filter);
+ if (result.Status == PromptStatus.OK)
+ {
+ SelectionSet acSSet = result.Value;
+ foreach (ObjectId id in acSSet.GetObjectIds())
+ {
+ Entity hatchobj = tran.GetObject(id, OpenMode.ForWrite) as Entity;
+ hatchobj.Erase();//删除
+ }
+ }
+ tran.Commit();
+ }
+ //获取存放明细表的块的位置
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ ed.WriteMessage("获取明细栏 mxn \n");
+ //查找存放明细栏的图框
+ if (block.Has(btlBlockName))
+ {
+ BlockTableRecord bltr = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlBlockName)
+ {
+ Point3d point = bref.Position;
+ ed.WriteMessage("X=" + point.X + " | Y=" + point.Y + " | Z=" + point.Z + "\n");
+ //矩阵变换
+ //double[] dMatrix = new double[16];
+ //dMatrix[0] = 1.0;
+ //dMatrix[1] = 0.0;
+ //dMatrix[2] = 0.0;
+ //dMatrix[3] = 1.0 / myBili; //-1642.62;//-3285.25;
+ //dMatrix[4] = 0.0;
+ //dMatrix[5] = 1.0;
+ //dMatrix[6] = 0.0;
+ //dMatrix[7] = 1.0 / myBili; //-1249.29;//-2498.59;
+ //dMatrix[8] = 0.0;
+ //dMatrix[9] = 0.0;
+ //dMatrix[10] = 1.0;
+ //dMatrix[11] = 0.0;
+ //dMatrix[12] = 0.0;
+ //dMatrix[13] = 0.0;
+ //dMatrix[14] = 0.0;
+ //dMatrix[15] = 1.0;
+ //point = point.TransformBy(new Matrix3d(dMatrix));
+ pointList.Add(ConvertBili(point,myBili));
+
+ ed.WriteMessage(" NewX=" + point.X + " | NewY=" + point.Y + " | NewZ=" + point.Z + "\n");
+ ed.WriteMessage("scale x:" + (bref.ScaleFactors == null ? "" : bref.ScaleFactors.X+"") + "\n");
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ //插入明细表
+ //锁定文件
+ using (acDoc.LockDocument())
+ {
+ int lineCount = 0;
+ for (int i = 0; ; i++)
+ {
+ if (bomMsgBeanList.Count != 1)
+ {
+ if (lineCount >= bomMsgBeanList.Count - 1)
+ {
+ break;
+ }
+ }
+
+ Point3d pointOrigin =getChintBomInsertPoint(myBili);// new Point3d(0, 0, 0);
+ if (i >= pointList.Count)
+ {
+
+ //pointList[i];
+ //PromptPointResult pPtRes = null;
+ //PromptPointOptions pPtOpts = new PromptPointOptions("");
+ //pPtOpts.Message = "选取插入的点:";
+ //pPtRes = ed.GetPoint(pPtOpts);
+
+ //pointOrigin = pPtRes.Value;
+ //ed.WriteMessage(" x=" + pointOrigin.X + " y=" + pointOrigin.Y + " z=" + pointOrigin.Z);
+
+ //KH offset
+ //矩阵变换
+ //double[] dMatrix = new double[16];
+ //dMatrix[0] = 1.0;
+ //dMatrix[1] = 0.0;
+ //dMatrix[2] = 0.0;
+ //dMatrix[3] = 1.0 / myBili; //-1642.62;//-3285.25;
+ //dMatrix[4] = 0.0;
+ //dMatrix[5] = 1.0;
+ //dMatrix[6] = 0.0;
+ //dMatrix[7] = 1.0 / myBili; //-1249.29;//-2498.59;
+ //dMatrix[8] = 0.0;
+ //dMatrix[9] = 0.0;
+ //dMatrix[10] = 1.0;
+ //dMatrix[11] = 0.0;
+ //dMatrix[12] = 0.0;
+ //dMatrix[13] = 0.0;
+ //dMatrix[14] = 0.0;
+ //dMatrix[15] = 1.0;
+
+ //pointOrigin = pointOrigin.TransformBy(new Matrix3d(dMatrix));
+ ed.WriteMessage(" Newx=" + pointOrigin.X + " Newy=" + pointOrigin.Y + " Newz=" + pointOrigin.Z);
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(btlBlockName))
+ {
+ Point3d InsertPt = pointOrigin;
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[btlBlockName], OpenMode.ForRead, false) as BlockTableRecord;
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+
+ blockRef.ScaleFactors = scale3d;
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ insertAttri(blockRef, tran, acCurDb, null);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ }
+ else
+ {
+ pointOrigin = pointList[i];
+ }
+ //记录最大的明细栏的个数
+ int maxCount = 0;
+ for (int j = (lineCount == 0 ? 0 : (lineCount + 1)); j < bomMsgBeanList.Count; j++)
+ {
+ lineCount = j;
+
+ using (Transaction tran = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (block.Has(blockname))
+ {
+ maxCount++;
+ Point3d InsertPt = new Point3d((pointOrigin.X), (pointOrigin.Y +10/myBili+ (maxCount - 1) * (7/myBili)), pointOrigin.Z);//-0.0224
+
+ BlockTableRecord tableRec = tran.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite, false) as BlockTableRecord;
+ BlockTableRecord modelSpace = tran.GetObject(block[blockname], OpenMode.ForRead, false) as BlockTableRecord;
+
+ BlockReference blockRef = new BlockReference(InsertPt, modelSpace.ObjectId);
+ blockRef.ScaleFactors = scale3d;
+
+ tableRec.AppendEntity(blockRef);
+ tran.AddNewlyCreatedDBObject(blockRef, true);
+ insertAttri(blockRef, tran, acCurDb, bomMsgBeanList[j]);
+ ed.Regen();
+ tran.Commit();
+ }
+ }
+ if (maxCount == 9999)
+ {//设置单张图框里面的明细栏的最大数量为29
+ break;
+ }
+ }
+ if (bomMsgBeanList.Count <= 1)
+ break;
+ }
+ }
+ return isOk;
+ }
+
+ ///
+ /// 设置块的属性
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void insertAttri(BlockReference br, Transaction tran,Database db,BomMsgBean bean) {
+
+ BlockTableRecord btrec = tran.GetObject(br.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
+ if (btrec.HasAttributeDefinitions)
+ {
+ // ed.WriteMessage("ppppp\n");
+ AttributeCollection atcoll = br.AttributeCollection;
+ foreach(ObjectId id in btrec){
+ DBObject obj = id.GetObject(OpenMode.ForRead) ;
+ if(obj is Entity){
+ Entity ent = obj as Entity;
+ if (ent is AttributeDefinition) {
+
+ AttributeDefinition attdef = ent as AttributeDefinition;
+ if (attdef!=null)
+ {
+ AttributeReference attref = new AttributeReference();
+ attref.SetDatabaseDefaults();
+ attref.SetAttributeFromBlock(attdef, br.BlockTransform);
+ attref.Position = attdef.Position.TransformBy(br.BlockTransform);
+ attref.Tag = attdef.Tag;
+ if (bean != null)
+ {
+ if (attref.Tag.StartsWith("序号")) //if (attref.Tag.Equals("1GENST{2.8}"))
+ {
+ attref.TextString = bean.Index;
+
+ }
+ else if (attref.Tag.StartsWith("图样代号"))//else if (attref.Tag.Equals("11GENST{15.2}"))
+ {
+ attref.TextString = bean.CodeNo;
+ }
+ else if (attref.Tag.StartsWith("图样名称"))//else if (attref.Tag.Equals("28GENST{11.2}"))
+ {
+ attref.TextString = bean.Name;
+ // attref.TextStyleId = "";
+ }
+ else if (attref.Tag.StartsWith("数量"))//else if (attref.Tag.Equals("12GENST{2.4}"))
+ {
+ attref.TextString = bean.Quantity.Replace(".0000","");
+ }
+ else if (attref.Tag.StartsWith("材料"))//else if (attref.Tag.Equals("9GENST{9.6}"))
+ {
+ attref.TextString = bean.Material;
+ }
+ else if (attref.Tag.StartsWith("单重"))// else if (attref.Tag.Equals("15GENST{5.6}"))
+ {
+ attref.TextString = bean.Zhongliang;
+ }
+ else if (attref.Tag.StartsWith("规格"))// else if (attref.Tag.Equals("16GENST{5.6}"))
+ {
+ attref.TextString = bean.Gg;
+ }
+ else if (attref.Tag.StartsWith("备注"))//else if (attref.Tag.Equals("24GENST{19.4}"))
+ {
+ attref.TextString = bean.Note;
+ }
+ else if (attref.Tag.StartsWith("小计")) {
+ attref.TextString = bean.Xiaoji;
+
+ }
+ /*else
+ {
+ attref.TextString = attdef.TextString;
+ }
+ */
+ }
+ else {
+ attref.TextString = attdef.TextString;
+ }
+ attref.AdjustAlignment(db);
+ atcoll.AppendAttribute(attref);
+ tran.AddNewlyCreatedDBObject(attref, true);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void setBlockRefAttribute(BlockTableRecord modelSpace, Transaction tran,BomMsgBean bean)
+ {
+ ed.WriteMessage("aaaaaa\n");
+ foreach (ObjectId id in modelSpace)
+ {
+ Entity ent = tran.GetObject(id, OpenMode.ForRead, false) as Entity;
+ if(ent is AttributeDefinition){
+ ed.WriteMessage("bbbbb\n");
+ //AttributeReference attriRef = new AttributeReference();
+ AttributeDefinition attriDef = ent as AttributeDefinition;
+ ed.WriteMessage("Name = "+attriDef.TextStyleName + "\n");
+
+
+ }
+
+ }
+
+
+ }
+
+
+ //获取指定块参照名称中对应的属性值
+ public string GetValueByBlock(string blockname,string attributename)
+ {
+
+ string attrvalue = "";
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable block = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+ if (block.Has(blockname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == blockname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (aRef.Tag.ToString() == attributename)
+ {
+ attrvalue = aRef.TextString;
+ return attrvalue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return attrvalue;
+ }
+
+
+ //获取数据集.xml文件配置信息
+ public OriginDataSet GetDataSetInfo(OriginDataSet dataset, OriginBTL btlinfo)
+ {
+ string ds_name = "";
+
+ for (int i = 1; i < dataset.Dsnametable.Count+1; i++)
+ {
+ string[] tempstring = dataset.Dsnametable[i].ToString().Split('.');
+ string blockname = tempstring[0];
+ string attributename = tempstring[1];
+ if (blockname == btlinfo.Btlname)
+ {
+ if (btlinfo.Btlinfotable.ContainsKey(attributename))
+ {
+ ds_name = ds_name + btlinfo.Btlinfotable[attributename].ToString();
+ }
+ }
+ else
+ {
+ ds_name = ds_name + this.GetValueByBlock(blockname, attributename);
+ }
+
+ }
+ ed.WriteMessage(ds_name+"\n");
+ dataset.Ds_name = ds_name;
+
+ return dataset;
+ }
+
+ //对bomline进行排序
+ public List sortbomlist(List sortbomlist)
+ {
+ sortbomlist.Sort(new SortMXL1());
+ return sortbomlist;
+ }
+
+
+ ///
+ /// 搜索ItemRevision
+ ///
+ ///
+ ///
+ ///
+ public SavedQueryResults getSearchItemRev(String itemId ,String itemRev) {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("originSearchItemRevision"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'originSearchItemRevision' query.\n");
+ return null;
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'originSearchItemRevision' Item ID =" + itemId + " Item Rev = " + itemRev + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "ItemID1","Revision1"};
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[2];
+ savedQueryInput[0].Values[0] = itemId;
+ savedQueryInput[0].Values[1] = itemRev;
+ //savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found ItemRevs:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ public Item wxGetItem(string item_id) {
+ Item item = null;
+ ItemRevision itemRev = this.wxGetItem(item_id,"*");
+ if (itemRev != null)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ dmService.RefreshObjects(new ModelObject[] { itemRev });
+ dmService.GetProperties(new ModelObject[] { itemRev }, new String[] { "items_tag" });
+ item = itemRev.Items_tag;
+ }
+
+ return item;
+ }
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ ///
+ public ItemRevision wxGetItem(string item_id,string rev_id) {
+ ItemRevision item_rev = null;
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("CAD_SearchItem"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchItemID' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID =" + item_id + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "TZBM","REVID" ,"SEQ"};
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[3];
+ savedQueryInput[0].Values[0] = item_id;
+ savedQueryInput[0].Values[1] = rev_id;
+ savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+
+
+ if (found.NumOfObjects > 0)
+ {
+ item_rev = found.Objects[0] as ItemRevision;
+ }
+ else {
+ item_rev = wxGetWLRev(item_id,rev_id);
+ }
+ return item_rev;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ ///
+ /// 搜索Design对象
+ ///
+ ///
+ ///
+ ///
+ public ItemRevision wxGetWLRev(string bmID,string revID)
+ {
+ ItemRevision item = null;
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("CAD_SearchWLRev"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'CAD_SearchWLRev' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID =" + bmID + ".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "TZBM","REVID","SEQ" };
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[3];
+ savedQueryInput[0].Values[0] = bmID;
+ savedQueryInput[0].Values[1] = revID;
+ savedQueryInput[0].Values[2] = "0";
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+
+
+ if (found.NumOfObjects > 0)
+ {
+ item = found.Objects[0] as ItemRevision;
+ }
+ return item;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ //根据item_id搜索
+ public SavedQueryResults getSearchItem(string item_id)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchItemID"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchItemID' query.\n");
+ }
+
+ try
+ {
+ ed.WriteMessage(" 'OriginSearchItemID' Item ID ="+item_id+".\n");
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].Entries = new String[] { "Item ID" };
+ //savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = item_id;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+
+ //根据item_id,name,type,owner搜索
+ public SavedQueryResults getSearchItem(string item_id, string name, string type, string owner)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchForItem"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchForItem' query.\n");
+ }
+
+ try
+ {
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "Name", "Item ID", "Type", "Owning User" };
+ savedQueryInput[0].Entries = new String[] { "名称", "零组件 ID", "类型", "所有权用户" };
+ savedQueryInput[0].Values = new String[4];
+ savedQueryInput[0].Values[0] = name;
+ savedQueryInput[0].Values[1] = item_id;
+ savedQueryInput[0].Values[2] = type;
+ savedQueryInput[0].Values[3] = owner;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ //查询所有用户
+ public SavedQueryResults getSearchUser()
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("OriginSearchForUser"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'OriginSearchForUser' query.\n");
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "User Id" };
+ savedQueryInput[0].Entries = new String[] { "用户 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = "*";
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Users:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+
+ //获得指定名称首选项:站点类型
+ public Hashtable getTCPreferences(string prefername)
+ {
+ Hashtable prefValues = new Hashtable();
+ SessionService sessionservice = SessionService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[] prefNames = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[1];
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames scopedPref = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames();
+ scopedPref.Names = new String[] { prefername };
+ scopedPref.Scope = "site";
+ prefNames[0] = scopedPref;
+
+
+ Teamcenter.Services.Strong.Core._2007_01.Session.MultiPreferencesResponse resp = sessionservice.GetPreferences(prefNames);
+ Teamcenter.Services.Strong.Core._2007_01.Session.ReturnedPreferences[] preferenceResp = resp.Preferences;
+ prefValues.Add(preferenceResp[0].Name, preferenceResp[0].Values);
+ //string temp = preferenceResp[0].Name.ToString();
+ //string[] value = (string[])prefValues[preferenceResp[0].Name.ToString()];
+
+ return prefValues;
+ }
+
+
+ public bool checkxml(string xmlpath)
+ {
+ if (File.Exists(xmlpath + "标题栏.xml"))
+ ed.WriteMessage("标题栏.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在标题栏.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "明细表.xml"))
+ ed.WriteMessage("明细表.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在明细表.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "Item类型.xml"))
+ ed.WriteMessage("Item类型.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在Item类型.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "数据集.xml"))
+ ed.WriteMessage("数据集.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在数据集.xml文件\n");
+ return false;
+ }
+ if (File.Exists(xmlpath + "规则.xml"))
+ ed.WriteMessage("规则.xml准备就绪\n");
+ else
+ {
+ ed.WriteMessage("系统路径下不存在规则.xml文件\n");
+ return false;
+ }
+ return true;
+ }
+
+
+ //通过value值找key值
+ public object getKeyFromValue(Hashtable table,object value)
+ {
+ if (table.ContainsValue(value))
+ {
+ foreach (DictionaryEntry de in table)
+ {
+ if (de.Value.Equals(value))
+ {
+ return de.Key;
+ }
+ }
+ }
+ return null;
+ }
+
+
+ //获得标题栏Item类型
+ public string getItemType(OriginBTL btlinfo, OriginTypeRule origintyperule)
+ {
+ if (origintyperule == null)
+ return "Item";
+ this.itemtype = origintyperule.Defaulttype.ToString();
+
+ this.getTypeByRule(btlinfo.Btlinfotable, origintyperule, "1", "");
+
+ return this.itemtype;
+ }
+
+
+ private string itemtype = "";
+
+ //获得明细栏Item类型
+ public string getItemType(OriginMXL mxlinfo, OriginTypeRule origintyperule)
+ {
+ if (origintyperule == null)
+ return "Item";
+ this.itemtype = origintyperule.Defaulttype.ToString();
+
+ this.getTypeByRule(mxlinfo.Mxlinfotable, origintyperule, "1","");
+
+ return this.itemtype;
+ }
+
+
+ //通过规则获得需要的Item类型
+ private void getTypeByRule(Hashtable infotable, OriginTypeRule origintyperule,
+ string pos,string usestringvalue)
+ {
+ ed.WriteMessage("当前source" + usestringvalue + "\n");
+ ed.WriteMessage("当前pos" + pos + "\n");
+ //获得source对应的数据
+ string sourcestring = origintyperule.Sourcetable[pos].ToString();
+ string sourcevalue = "";
+ if (sourcestring == "")
+ {
+ sourcevalue = usestringvalue;
+ }
+ else
+ {
+ ed.WriteMessage("source值:"+sourcestring+"\n");
+ sourcevalue = infotable[sourcestring].ToString();
+ }
+ //检查是否存在type,如果有,则直接返回
+ string typestring = origintyperule.Typetable[pos].ToString();
+ if (typestring != "")
+ {
+ this.itemtype = typestring;
+ return;
+ }
+ //处理判断条件
+ string startstring = origintyperule.Starttable[pos].ToString();
+ string endstring = origintyperule.Endtable[pos].ToString();
+ string containstring = origintyperule.Containtable[pos].ToString();
+ string equalstring = origintyperule.Equaltable[pos].ToString();
+
+ if (startstring != "")
+ {
+ if (sourcevalue.StartsWith(startstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (endstring != "")
+ {
+ if (sourcevalue.EndsWith(endstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (containstring != "")
+ {
+ if (sourcevalue.Contains(containstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ else if (equalstring !="")
+ {
+ if (sourcevalue.Equals(equalstring))
+ {
+ string truestring = origintyperule.Truetable[pos].ToString();
+ if (truestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, truestring, sourcevalue);
+ }
+ }
+ else
+ {
+ string falsestring = origintyperule.Falsetable[pos].ToString();
+ if (falsestring != "")
+ {
+ this.getTypeByRule(infotable, origintyperule, falsestring, sourcevalue);
+ }
+ }
+ }
+ }
+
+
+ //分割字符串,取出对应xml文件的的Item的ID
+ public List getCorrespondItemID(string[] tempprevalues)
+ {
+ List itemidlist = new List();
+ Hashtable temptable = new Hashtable();
+ for (int i = 0; i < tempprevalues.Length; i++)
+ {
+ string tempvalueline = tempprevalues[i];
+ string[] tempvalue = tempvalueline.Split('=');
+ itemidlist.Add(tempvalue[1].ToString());
+ }
+
+ return itemidlist;
+ }
+
+
+ public bool downloadfile(Item DMTItem,string xmlpath)
+ {
+ bool result = false;
+ string DMTFilepath = "";
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { DMTItem };
+ String[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = DMTItem.Revision_list;
+ ItemRevision itemrevision = itemrevisionlist[itemrevisionlist.Length - 1] as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ String[] typeVec = { "Text" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "Text")
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects2 = { dateset };
+ String[] attributes2 = { "is_modifiable", "checked_out", "ref_list" };
+ dmService.RefreshObjects(objects2);
+ dmService.GetProperties(objects2, attributes2);
+ ModelObject[] dsfilevec = dateset.Ref_list;
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects3 = { dsfile };
+ String[] attributes3 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects3);
+ dmService.GetProperties(objects3, attributes3);
+
+ string newfilename = dsfile.Original_file_name;
+ ed1.WriteMessage("Original_file_name : " + newfilename + "\n");
+ //string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ //ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ FileInfo file = fileinfovec[0];
+ DMTFilepath = xmlpath + newfilename;
+ ed1.WriteMessage("拷贝路径:" + DMTFilepath + "\n");
+ System.IO.File.Copy(file.FullName, DMTFilepath, true);
+ System.IO.File.SetAttributes(DMTFilepath, FileAttributes.Normal);
+ if (DMTFilepath != "")
+ result = true;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/OriginTypeRule.cs b/OriginAutoCAD_chint/hello/OriginTypeRule.cs
new file mode 100644
index 0000000..0d8a524
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/OriginTypeRule.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections;
+
+namespace HelloTeamcenter.hello
+{
+ class OriginTypeRule
+ {
+ private string defaulttype = ""; //属性default
+
+ public string Defaulttype
+ {
+ get { return defaulttype; }
+ set { defaulttype = value; }
+ }
+
+ private Hashtable sourcetable = null; //用于存放需要的cad图纸信息
+
+ public Hashtable Sourcetable
+ {
+ get { return sourcetable; }
+ set { sourcetable = value; }
+ }
+
+ private Hashtable starttable = null; //用于存放startwith判断条件
+
+ public Hashtable Starttable
+ {
+ get { return starttable; }
+ set { starttable = value; }
+ }
+
+ private Hashtable endtable = null; //用于存放endwith判断条件
+
+ public Hashtable Endtable
+ {
+ get { return endtable; }
+ set { endtable = value; }
+ }
+
+ private Hashtable containtable = null; //用于存放contain的判断条件
+
+ public Hashtable Containtable
+ {
+ get { return containtable; }
+ set { containtable = value; }
+ }
+
+ private Hashtable equaltable = null; //用于存放equal的判断条件
+
+ public Hashtable Equaltable
+ {
+ get { return equaltable; }
+ set { equaltable = value; }
+ }
+
+ private Hashtable truetable = null; //用于存放判断后成功走向
+
+ public Hashtable Truetable
+ {
+ get { return truetable; }
+ set { truetable = value; }
+ }
+
+ private Hashtable falsetable = null;//用于存放判断后失败走向
+
+ public Hashtable Falsetable
+ {
+ get { return falsetable; }
+ set { falsetable = value; }
+ }
+
+ private Hashtable typetable = null; //用于存放返回的type类型
+
+ public Hashtable Typetable
+ {
+ get { return typetable; }
+ set { typetable = value; }
+ }
+
+
+ public OriginTypeRule()
+ {
+ this.defaulttype = "";
+ this.sourcetable = new Hashtable();
+ this.starttable = new Hashtable();
+ this.endtable = new Hashtable();
+ this.containtable = new Hashtable();
+ this.equaltable = new Hashtable();
+ this.truetable = new Hashtable();
+ this.falsetable = new Hashtable();
+ this.typetable = new Hashtable();
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/PrintDwg.cs b/OriginAutoCAD_chint/hello/PrintDwg.cs
new file mode 100644
index 0000000..a1fac33
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/PrintDwg.cs
@@ -0,0 +1,602 @@
+using System;
+using System.Collections.Generic;
+
+//*******************************************//
+// Type Library //
+//*******************************************//
+//using Autodesk.AutoCAD.Customization; //accui.dll
+
+//*******************************************//
+// acdbmgd.dll //
+//*******************************************//
+
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.DatabaseServices;
+//******************************************//
+
+//--------------------------------------------//
+
+// acmgd.dll //
+
+//------------------------------------------*//
+using Autodesk.AutoCAD.PlottingServices;
+using Autodesk.AutoCAD.ApplicationServices;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using DataSvr = Autodesk.AutoCAD.DatabaseServices;
+using System.Collections;
+using System.Collections.Specialized;
+using Teamcenter.Hello;
+using System.IO;
+using HelloTeamcenter.hello;
+namespace KCad
+{
+
+ public class FrameCompare : IComparer
+ {
+ // Calls CaseInsensitiveComparer.Compare with the parameters reversed.
+ int IComparer.Compare(Object x, Object y)
+ {
+ if (string.Compare((x as PrintFrame).BKName, (y as PrintFrame).BKName, true) == 0)
+ {
+ return 0;
+ }
+ return -1;
+ }
+ }
+ public class PrintFrame : IComparable
+ {
+
+ public double width { get; set; }
+ public double height { get; set; }
+ public double scale { get; set; }
+ public double dx { get; set; }
+ public double dy { get; set; }
+
+ public string BKName
+ {
+ get;
+ set;
+ }
+ public string MediaName
+ {
+ get;
+ set;
+ }
+ public Extents2d PrintBound
+ {
+ get;
+ set;
+
+ }
+ public DataSvr.PlotRotation Rotation
+ {
+ get;
+ set;
+ }
+ public void Clone(PrintFrame obj)
+ {
+ BKName = obj.BKName;
+ MediaName = obj.MediaName;
+ PrintBound = obj.PrintBound;
+ Rotation = obj.Rotation;
+ width = obj.width;
+ height = obj.height;
+ dx = obj.dx;
+ dy = obj.dy;
+ }
+
+ public double getMinX() {
+ return PrintBound.MinPoint.X + dx * (scale > 0 ? scale : 1);
+ }
+
+ public double getMinY() {
+ return PrintBound.MinPoint.Y + dy * (scale > 0 ? scale : 1);
+ }
+
+ public double getMaxX() {
+ if (width > 0) {
+ return PrintBound.MinPoint.X + width*(scale>0?scale:1);
+ }
+ return PrintBound.MaxPoint.X;
+ }
+
+ public double getMaxY() {
+ //if (height > 0) {
+ // return PrintBound.MinPoint.Y + height;
+ //}
+ return PrintBound.MaxPoint.Y;
+ }
+
+ public int CompareTo(PrintFrame other)
+ {
+ if (other == null)
+ {
+ return 1;
+ }
+ Point2d pointx = this.PrintBound.MinPoint;
+ Point2d pointy = other.PrintBound.MinPoint;
+ if (Math.Abs(pointx.Y - pointy.Y)>100)
+ {
+ return (pointx.Y - pointy.Y) > 0 ? -1 : 1;
+ }
+ if (pointx.X != pointy.X)
+ {
+ return (pointx.X - pointy.X) > 0 ? 1 : -1;
+ }
+ return 0;
+ }
+ }
+
+
+ public class PrintDwg_Deprecate
+ {
+
+ private ArrayList m_Frame = null;
+ public PrintDwg_Deprecate(Document doc)
+ {
+ m_Frame = new ArrayList();
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TH", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { BKName = "CHINT-BLOCK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "GC-CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "GC-CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "GC-CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "GC-CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "GC-CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ PrintDoc = doc;
+ }
+
+ public string MultiSheetPlot() {
+ return MultiSheetPlot(false);
+ }
+
+ public Boolean checkPDF(string pdfPath)
+ {
+ if (string.IsNullOrWhiteSpace(pdfPath))
+ {
+ return false;
+ }
+
+ FileInfo f = new FileInfo(pdfPath);
+ if (!f.Exists)
+ {
+ return false;
+ }
+ KUtil.WriteLog("检查PDF:" + pdfPath+" -> "+f.Length);
+ if (f.Length <= 10)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public string MultiSheetPlot(bool addBlockTitleToPath)
+ {
+ string pdfPath = MultiSheetPlotNoCycle(addBlockTitleToPath);
+ for (int i = 0; i < 5; i++)
+ {
+ if (checkPDF(pdfPath))
+ {
+ return pdfPath;
+ }
+ pdfPath = MultiSheetPlotNoCycle(addBlockTitleToPath);
+ }
+ throw new System.Exception("转换PDF失败:"+PrintDoc.Name);
+ // return pdfPath;
+ }
+
+ public string MultiSheetPlotNoCycle(bool addBlockTitleToPath)
+ {
+ // DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ string path = "";
+ Database db = PrintDoc.Database;
+ //;
+ using (Transaction tr = db.TransactionManager.StartTransaction())
+ {
+ short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
+ Application.SetSystemVariable("BACKGROUNDPLOT", 0);
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
+ {
+
+
+ using (PlotEngine pe = PlotFactory.CreatePublishEngine()) {
+ PrintFrame[] frames = CheckModelSpaceTitle();
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+
+ using (PlotProgressDialog ppd = new PlotProgressDialog(false, frames.Length, true))
+ {
+
+ int numSheet = 1;
+
+ if (frames.Length < 1) {
+ return "";
+ }
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ StringCollection cols = psv.GetPlotStyleSheetList();
+ bool StyleSheetCheck = false;
+ foreach (string s in cols) {
+ if (string.Compare(s, "monochrome.ctb", true) == 0) {
+ StyleSheetCheck = true;
+ }
+ }
+ BlockTableRecord acBlkTblRec = tr.GetObject(bt[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+
+ Layout lo = (Layout)tr.GetObject(acBlkTblRec.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+ ps.PrintLineweights = true;
+
+
+ foreach (PrintFrame frame in frames)
+ {
+
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", frame.MediaName);
+ // kk 0813 转换 消除图纸偏移
+ Point3d minPoint=Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMinX(), frame.getMinY(),0), false);
+ Point3d maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMaxX(), frame.getMaxY(), 0), false);
+ //maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(210, 297, 0), false);
+ psv.SetPlotWindowArea(ps, new Extents2d(minPoint.X,minPoint.Y,maxPoint.X,maxPoint.Y));
+ //psv.SetPlotWindowArea(ps, frame.PrintBound);
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + frame.PrintBound.MinPoint.X + "," + frame.PrintBound.MinPoint.Y + "," + frame.PrintBound.MaxPoint.X + "," + frame.PrintBound.MaxPoint.Y + "\n");
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + minPoint.X + "," +minPoint.Y + "," + maxPoint.X + "," + maxPoint.Y + "\n");
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
+ if (!StyleSheetCheck)
+ psv.SetCurrentStyleSheet(ps, "monochrome.stb");
+ else
+ psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
+ psv.SetPlotCentered(ps, true);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotRotation(ps, frame.Rotation);
+
+ //PrintDoc.Editor.WriteMessage(frame.MediaName+"|"+frame.Rotation.ToString()+"\n");
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = acBlkTblRec.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+ if (numSheet == 1)
+ {
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+
+ // We'll be plotting a single document // Let's plot to file
+ path = PrintDoc.Name.ToUpper().Replace(".DWG", string.Format("{0}{1}", addBlockTitleToPath?frame.BKName:"", ".PDF"));
+ pe.BeginDocument(pi, PrintDoc.Name, null, 1, true, path);
+ }
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + PrintDoc.Name.Substring(PrintDoc.Name.LastIndexOf("\\") + 1) +
+ " - sheet " + numSheet.ToString() +
+ " of " + frames.Length.ToString();
+
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+ pe.BeginPage(ppi, pi, frames.Length == numSheet, null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ numSheet++;
+ }
+
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+ ppd.OnEndPlot();
+
+ pe.EndPlot(null);
+ ppd.Dispose();
+
+ }
+
+
+ }
+ }
+ else
+ {
+ PrintDoc.Editor.WriteMessage("\nAnother plot is in progress.");
+ }
+ // Thread.Sleep(30000);
+ Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
+ tr.Commit();
+
+
+ }
+ //m_DocumentLock.Dispose();
+ return path;
+ }
+
+ public string HistoryMultiSheetPlot() {
+ // DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ string path = "";
+ Database db = PrintDoc.Database;
+ //;
+ using (Transaction tr = db.TransactionManager.StartTransaction()) {
+ short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
+ Application.SetSystemVariable("BACKGROUNDPLOT", 0);
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting) {
+
+
+ using (PlotEngine pe = PlotFactory.CreatePublishEngine()) {
+ PrintFrame[] frames = CheckModelSpaceTitle();
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+
+ using (PlotProgressDialog ppd = new PlotProgressDialog(false, frames.Length, true)) {
+
+ int numSheet = 1;
+
+ if (frames.Length < 1) {
+ Hello.WriteHistoryLog("没有找到边框,打印结束\r\n");
+ return "";
+ }
+ foreach (PrintFrame frame in frames) {
+ BlockTableRecord acBlkTblRec = tr.GetObject(bt[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+
+ Layout lo = (Layout)tr.GetObject(acBlkTblRec.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ StringCollection cols = psv.GetPlotStyleSheetList();
+ bool StyleSheetCheck = false;
+ foreach (string s in cols) {
+ if (string.Compare(s, "monochrome.ctb", true) == 0) {
+ StyleSheetCheck = true;
+ }
+ }
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", frame.MediaName);
+
+ // kk 0813 转换 消除图纸偏移
+ Point3d minPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.PrintBound.MinPoint.X, frame.PrintBound.MinPoint.Y, 0), false);
+ Point3d maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.PrintBound.MaxPoint.X, frame.PrintBound.MaxPoint.Y, 0), false);
+ psv.SetPlotWindowArea(ps, new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y));
+ //psv.SetPlotWindowArea(ps, frame.PrintBound);
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
+ if (!StyleSheetCheck)
+ psv.SetCurrentStyleSheet(ps, "monochrome.stb");
+ else
+ psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
+ psv.SetPlotCentered(ps, true);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotRotation(ps, frame.Rotation);
+
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = acBlkTblRec.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+ if (numSheet == 1) {
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+
+ // We'll be plotting a single document // Let's plot to file
+ path = PrintDoc.Name.ToUpper().Replace(".DWG", string.Format("{0}{1}", frame.BKName, ".PDF"));
+ pe.BeginDocument(pi, PrintDoc.Name, null, 1, true, path);
+ }
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + PrintDoc.Name.Substring(PrintDoc.Name.LastIndexOf("\\") + 1) +
+ " - sheet " + numSheet.ToString() +
+ " of " + frames.Length.ToString();
+
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+
+ pe.BeginPage(ppi, pi, frames.Length == numSheet, null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ numSheet++;
+ }
+
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+ ppd.OnEndPlot();
+
+ pe.EndPlot(null);
+ ppd.Dispose();
+
+ }
+
+
+ }
+ }
+ else {
+ PrintDoc.Editor.WriteMessage("\nAnother plot is in progress.");
+ Hello.WriteHistoryLog("另外一个打印任务正在运行\r\n");
+ }
+ // Thread.Sleep(30000);
+ Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
+ tr.Commit();
+
+
+ }
+ //m_DocumentLock.Dispose();
+ return path;
+ }
+
+ // 检查是否存在边框
+ private PrintFrame[] CheckModelSpaceTitle()
+ {
+ //DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ Database acCurDb = PrintDoc.Database;
+ List lstFrame = new List();
+ using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable acBlkTbl;
+ acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
+ OpenMode.ForRead) as BlockTable;
+
+ // Open the Block table record for read
+ BlockTableRecord acBlkTblRec;
+
+ acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
+ OpenMode.ForRead) as BlockTableRecord;
+ BlockReference reference;
+ BlockTableRecordEnumerator enumbtr = acBlkTblRec.GetEnumerator();
+ while (enumbtr.MoveNext())
+ {
+ Entity entity = acTrans.GetObject(enumbtr.Current, OpenMode.ForRead) as Entity;
+ if (entity is BlockReference)
+ {
+
+ reference = entity as BlockReference;
+ //int i = m_Frame.BinarySearch(new PrintFrame() { BKName = reference.Name }, new FrameCompare());
+ int i = -1;
+ for (int j = 0; j < m_Frame.Count;j++ ) {
+ if (string.Compare((m_Frame[j] as PrintFrame).BKName, reference.Name, true) == 0) {
+ i = j;
+ break;
+ }
+ }
+
+
+ if (i > -1) {
+ double scale = reference.ScaleFactors.GetMatrix().GetScale();
+ //Point3d minPoint = reference.GeometricExtents.MinPoint;
+ //Point3d maxPoint = reference.GeometricExtents.MaxPoint;
+ Extents2d e2dBound = new Extents2d(reference.Bounds.Value.MinPoint.X, reference.Bounds.Value.MinPoint.Y, reference.Bounds.Value.MaxPoint.X, reference.Bounds.Value.MaxPoint.Y);
+ //Extents2d e2dBound = new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y);
+ (m_Frame[i] as PrintFrame).PrintBound = e2dBound;
+ PrintFrame frm = new PrintFrame();
+ frm.Clone((m_Frame[i] as PrintFrame));
+ frm.scale = scale;
+ lstFrame.Add(frm);
+ }
+
+ }
+ }
+
+ acTrans.Commit();
+ }
+ lstFrame.Sort();
+ //m_DocumentLock.Dispose();
+ return lstFrame.ToArray();
+ }
+
+ public Document PrintDoc
+ {
+ get;
+ set;
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/PrintDwg2.cs b/OriginAutoCAD_chint/hello/PrintDwg2.cs
new file mode 100644
index 0000000..c12d0aa
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/PrintDwg2.cs
@@ -0,0 +1,337 @@
+using System.Collections.Generic;
+
+//*******************************************//
+// Type Library //
+//*******************************************//
+//using Autodesk.AutoCAD.Customization; //accui.dll
+
+//*******************************************//
+// acdbmgd.dll //
+//*******************************************//
+
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.DatabaseServices;
+//******************************************//
+
+//--------------------------------------------//
+
+// acmgd.dll //
+
+//------------------------------------------*//
+using Autodesk.AutoCAD.PlottingServices;
+using Autodesk.AutoCAD.ApplicationServices;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using DataSvr = Autodesk.AutoCAD.DatabaseServices;
+using System.Collections;
+using System.Collections.Specialized;
+namespace KCad
+{
+
+
+ public class PrintDwg2_Deprecate
+ {
+
+ private ArrayList m_Frame = null;
+ private string cadPath;
+ public PrintDwg2_Deprecate(Database db, string cadPath)
+ {
+ m_Frame = new ArrayList();
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TH", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { BKName = "CHINT-BLOCK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "GC-CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "GC-CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "GC-CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "GC-CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "GC-CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ this.db = db;
+ this.cadPath = cadPath;
+ }
+
+ public string MultiSheetPlot() {
+ return MultiSheetPlot(false);
+ }
+
+ public string MultiSheetPlot(bool addBlockTitleToPath)
+ {
+ // DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ string path = "";
+ //Database db = PrintDoc.Database;
+ //;
+ using (Transaction tr = db.TransactionManager.StartTransaction())
+ {
+ short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
+ Application.SetSystemVariable("BACKGROUNDPLOT", 0);
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
+ {
+
+
+ using (PlotEngine pe = PlotFactory.CreatePublishEngine()) {
+ PrintFrame[] frames = CheckModelSpaceTitle();
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+
+ using (PlotProgressDialog ppd = new PlotProgressDialog(false, frames.Length, true))
+ {
+
+ int numSheet = 1;
+
+ if (frames.Length < 1) {
+ return "";
+ }
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ StringCollection cols = psv.GetPlotStyleSheetList();
+ bool StyleSheetCheck = false;
+ foreach (string s in cols) {
+ if (string.Compare(s, "monochrome.ctb", true) == 0) {
+ StyleSheetCheck = true;
+ }
+ }
+ BlockTableRecord acBlkTblRec = tr.GetObject(bt[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+
+ Layout lo = (Layout)tr.GetObject(acBlkTblRec.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+ ps.PrintLineweights = true;
+
+
+ foreach (PrintFrame frame in frames)
+ {
+
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", frame.MediaName);
+ // kk 0813 转换 消除图纸偏移
+ Point3d minPoint=Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMinX(), frame.getMinY(),0), false);
+ Point3d maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMaxX(), frame.getMaxY(), 0), false);
+ //maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(210, 297, 0), false);
+ psv.SetPlotWindowArea(ps, new Extents2d(minPoint.X,minPoint.Y,maxPoint.X,maxPoint.Y));
+ //psv.SetPlotWindowArea(ps, frame.PrintBound);
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + frame.PrintBound.MinPoint.X + "," + frame.PrintBound.MinPoint.Y + "," + frame.PrintBound.MaxPoint.X + "," + frame.PrintBound.MaxPoint.Y + "\n");
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + minPoint.X + "," +minPoint.Y + "," + maxPoint.X + "," + maxPoint.Y + "\n");
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
+ if (!StyleSheetCheck)
+ psv.SetCurrentStyleSheet(ps, "monochrome.stb");
+ else
+ psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
+ psv.SetPlotCentered(ps, true);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotRotation(ps, frame.Rotation);
+
+ //PrintDoc.Editor.WriteMessage(frame.MediaName+"|"+frame.Rotation.ToString()+"\n");
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = acBlkTblRec.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+ if (numSheet == 1)
+ {
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+
+ // We'll be plotting a single document // Let's plot to file
+ path = cadPath.ToUpper().Replace(".DWG", string.Format("{0}{1}", addBlockTitleToPath?frame.BKName:"", ".PDF"));
+ pe.BeginDocument(pi, cadPath, null, 1, true, path);
+ }
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + cadPath.Substring(cadPath.LastIndexOf("\\") + 1) +
+ " - sheet " + numSheet.ToString() +
+ " of " + frames.Length.ToString();
+
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+ pe.BeginPage(ppi, pi, frames.Length == numSheet, null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ numSheet++;
+ }
+
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+ ppd.OnEndPlot();
+
+ pe.EndPlot(null);
+ ppd.Dispose();
+
+ }
+
+
+ }
+ }
+ else
+ {
+ //PrintDoc.Editor.WriteMessage("\nAnother plot is in progress.");
+ }
+ // Thread.Sleep(30000);
+ Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
+ tr.Commit();
+
+
+ }
+ //m_DocumentLock.Dispose();
+ return path;
+ }
+
+
+
+ // 检查是否存在边框
+ private PrintFrame[] CheckModelSpaceTitle()
+ {
+ //DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ Database acCurDb = db;
+ List lstFrame = new List();
+ HelloTeamcenter.hello.KUtil.WriteLog("check model space...");
+ using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
+ {
+ //HelloTeamcenter.hello.KUtil.WriteLog("transaction started");
+ BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
+ OpenMode.ForRead) as BlockTable;
+ //HelloTeamcenter.hello.KUtil.WriteLog("block table loaded");
+ // Open the Block table record for read
+ BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
+ OpenMode.ForRead) as BlockTableRecord;
+ // HelloTeamcenter.hello.KUtil.WriteLog("block table record loaded");
+ BlockReference reference;
+ BlockTableRecordEnumerator enumbtr = acBlkTblRec.GetEnumerator();
+ while (enumbtr.MoveNext())
+ {
+ Entity entity = acTrans.GetObject(enumbtr.Current, OpenMode.ForRead) as Entity;
+ if (entity is BlockReference)
+ {
+
+ reference = entity as BlockReference;
+
+ HelloTeamcenter.hello.KUtil.WriteLog(">> br: " + reference.Name);
+ //if (!reference.Bounds.HasValue)
+ //{
+ // HelloTeamcenter.hello.KUtil.WriteLog("Bounds is empty");
+ // continue;
+ //}
+
+ //int i = m_Frame.BinarySearch(new PrintFrame() { BKName = reference.Name }, new FrameCompare());
+ int i = -1;
+ // HelloTeamcenter.hello.KUtil.WriteLog("1");
+ for (int j = 0; j < m_Frame.Count; j++)
+ {
+ //HelloTeamcenter.hello.KUtil.WriteLog("2 - " + j);
+ if (string.Compare((m_Frame[j] as PrintFrame).BKName, reference.Name, true) == 0)
+ {
+ i = j;
+ break;
+ }
+ //HelloTeamcenter.hello.KUtil.WriteLog("3");
+ }
+ //HelloTeamcenter.hello.KUtil.WriteLog("4");
+
+ if (i > -1)
+ {
+ //HelloTeamcenter.hello.KUtil.WriteLog("5");
+ double scale = reference.ScaleFactors.GetMatrix().GetScale();
+ // HelloTeamcenter.hello.KUtil.WriteLog("6");
+ //Point3d minPoint = reference.GeometricExtents.MinPoint;
+ //Point3d maxPoint = reference.GeometricExtents.MaxPoint;
+ //Extents2d e2dBound = new Extents2d(reference.Bounds.Value.MinPoint.X, reference.Bounds.Value.MinPoint.Y, reference.Bounds.Value.MaxPoint.X, reference.Bounds.Value.MaxPoint.Y);
+ Extents3d p = reference.GeometryExtentsBestFit();
+ HelloTeamcenter.hello.KUtil.WriteLog("Extents3d: " + (p == null ? null : p.ToString()));
+ Extents2d e2dBound = new Extents2d(p.MinPoint.X, p.MinPoint.Y, p.MaxPoint.X, p.MaxPoint.Y);
+ HelloTeamcenter.hello.KUtil.WriteLog("Convert To: " + e2dBound.ToString());
+ //Extents2d e2dBound = new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y);
+ //HelloTeamcenter.hello.KUtil.WriteLog("7");
+ (m_Frame[i] as PrintFrame).PrintBound = e2dBound;
+ //HelloTeamcenter.hello.KUtil.WriteLog("8");
+ PrintFrame frm = new PrintFrame();
+ frm.Clone((m_Frame[i] as PrintFrame));
+ //HelloTeamcenter.hello.KUtil.WriteLog("9");
+ frm.scale = scale;
+ lstFrame.Add(frm);
+ // HelloTeamcenter.hello.KUtil.WriteLog("10");
+ }
+
+ }
+ }
+ HelloTeamcenter.hello.KUtil.WriteLog("read data finished");
+
+ acTrans.Commit();
+ HelloTeamcenter.hello.KUtil.WriteLog("transaction commited");
+ }
+ lstFrame.Sort();
+ //m_DocumentLock.Dispose();
+ return lstFrame.ToArray();
+ }
+
+ public Database db
+ {
+ get;
+ set;
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/PrintDwgWithMultiPageSize.cs b/OriginAutoCAD_chint/hello/PrintDwgWithMultiPageSize.cs
new file mode 100644
index 0000000..bebca81
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/PrintDwgWithMultiPageSize.cs
@@ -0,0 +1,494 @@
+using System.Collections.Generic;
+
+//*******************************************//
+// Type Library //
+//*******************************************//
+//using Autodesk.AutoCAD.Customization; //accui.dll
+
+//*******************************************//
+// acdbmgd.dll //
+//*******************************************//
+
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.DatabaseServices;
+//******************************************//
+
+//--------------------------------------------//
+
+// acmgd.dll //
+
+//------------------------------------------*//
+using Autodesk.AutoCAD.PlottingServices;
+using Autodesk.AutoCAD.ApplicationServices;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using DataSvr = Autodesk.AutoCAD.DatabaseServices;
+using System.Collections;
+using System.Collections.Specialized;
+using Teamcenter.Hello;
+using PdfSharp.Pdf.IO;
+using PdfSharp.Pdf;
+using System.IO;
+
+namespace KCad
+{
+
+ public class PrintDwgWithMultiPageSize
+ {
+
+ private ArrayList m_Frame = null;
+ public PrintDwgWithMultiPageSize(Document doc)
+ {
+ m_Frame = new ArrayList();
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TH", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHGY-TK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-H-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ //m_Frame.Add(new PrintFrame() { BKName = "KHTH-Z-A3", MediaName = "ISO_expand_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { BKName = "CHINT-BLOCK", MediaName = "ISO_expand_A4_(297.00_x_210.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+ m_Frame.Add(new PrintFrame() { height = 841, width = 1189, BKName = "GC-CHINT-TITLE-A0", MediaName = "ISO_full_bleed_A0_(841.00_x_1189.00_MM)", Rotation = DataSvr.PlotRotation.Degrees090 });
+
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 594, width = 841, BKName = "GC-CHINT-TITLE-A1", MediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { dy = 5, height = 420, width = 594, BKName = "GC-CHINT-TITLE-A2", MediaName = "ISO_full_bleed_A2_(594.00_x_420.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 420, BKName = "GC-CHINT-TITLE-A3", MediaName = "ISO_full_bleed_A3_(420.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+ m_Frame.Add(new PrintFrame() { height = 297, width = 210, BKName = "GC-CHINT-TITLE-A4", MediaName = "ISO_full_bleed_A4_(210.00_x_297.00_MM)", Rotation = DataSvr.PlotRotation.Degrees000 });
+
+ PrintDoc = doc;
+ }
+
+ public string MultiSheetPlot() {
+ return MultiSheetPlot(false);
+ }
+
+ public string MultiSheetPlot(bool addBlockTitleToPath)
+ {
+ // DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ List singlePagePdfList = new List();
+ string path = "";
+ Database db = PrintDoc.Database;
+ //;
+ using (Transaction tr = db.TransactionManager.StartTransaction())
+ {
+ short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
+ Application.SetSystemVariable("BACKGROUNDPLOT", 0);
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
+ {
+
+
+
+ PrintFrame[] frames = CheckModelSpaceTitle();
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+
+ using (PlotProgressDialog ppd = new PlotProgressDialog(false, frames.Length, true))
+ {
+
+ if (frames.Length < 1)
+ {
+ return "";
+ }
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ StringCollection cols = psv.GetPlotStyleSheetList();
+ bool StyleSheetCheck = false;
+ foreach (string s in cols)
+ {
+ if (string.Compare(s, "monochrome.ctb", true) == 0)
+ {
+ StyleSheetCheck = true;
+ }
+ }
+ BlockTableRecord acBlkTblRec = tr.GetObject(bt[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+
+ Layout lo = (Layout)tr.GetObject(acBlkTblRec.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+ ps.PrintLineweights = true;
+
+ int index = 0;
+ foreach (PrintFrame frame in frames)
+ {
+ using (PlotEngine pe = PlotFactory.CreatePublishEngine())
+ {
+ index++;
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", frame.MediaName);
+ // kk 0813 转换 消除图纸偏移
+ Point3d minPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMinX(), frame.getMinY(), 0), false);
+ Point3d maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.getMaxX(), frame.getMaxY(), 0), false);
+ //maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(210, 297, 0), false);
+ psv.SetPlotWindowArea(ps, new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y));
+ //psv.SetPlotWindowArea(ps, frame.PrintBound);
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + frame.PrintBound.MinPoint.X + "," + frame.PrintBound.MinPoint.Y + "," + frame.PrintBound.MaxPoint.X + "," + frame.PrintBound.MaxPoint.Y + "\n");
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(frame.BKName + ":" + minPoint.X + "," + minPoint.Y + "," + maxPoint.X + "," + maxPoint.Y + "\n");
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
+ if (!StyleSheetCheck)
+ psv.SetCurrentStyleSheet(ps, "monochrome.stb");
+ else
+ psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
+ psv.SetPlotCentered(ps, true);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotRotation(ps, frame.Rotation);
+
+ //PrintDoc.Editor.WriteMessage(frame.MediaName+"|"+frame.Rotation.ToString()+"\n");
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = acBlkTblRec.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+
+ // We'll be plotting a single document // Let's plot to file
+ path = PrintDoc.Name.ToUpper().Replace(".DWG", string.Format("{0}{1}{2}", addBlockTitleToPath ? frame.BKName : "", index == 1 ? "" : ("-" + index), ".PDF"));
+ pe.BeginDocument(pi, PrintDoc.Name, null, 1, true, path);
+ singlePagePdfList.Add(path);
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + PrintDoc.Name.Substring(PrintDoc.Name.LastIndexOf("\\") + 1) +
+ " - sheet " + index.ToString() +
+ " of " + frames.Length.ToString();
+
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+ pe.BeginPage(ppi, pi, true, null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+
+ pe.EndPlot(null);
+
+ }
+
+ }
+ ppd.OnEndPlot();
+ ppd.Dispose();
+ }
+ }
+ else
+ {
+ PrintDoc.Editor.WriteMessage("\nAnother plot is in progress.");
+ }
+ // Thread.Sleep(30000);
+ Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
+ tr.Commit();
+ }
+ int pageCnt = singlePagePdfList.Count;
+ if (pageCnt > 1)
+ {
+ using (PdfDocument outPdf = PdfReader.Open(singlePagePdfList[0], PdfDocumentOpenMode.Modify))
+ {
+ for (int i = 1; i < pageCnt; i++)
+ {
+ using (PdfDocument pdfDoc = PdfReader.Open(singlePagePdfList[i], PdfDocumentOpenMode.Import))
+ {
+ outPdf.AddPage(pdfDoc.Pages[0]);
+ }
+ File.Delete(singlePagePdfList[i]);
+ }
+ outPdf.Save(singlePagePdfList[0]);
+ }
+
+ }
+ //m_DocumentLock.Dispose();
+ return pageCnt > 0 ? singlePagePdfList[0] : "";
+ }
+
+ public string HistoryMultiSheetPlot() {
+ // DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ string path = "";
+ Database db = PrintDoc.Database;
+ //;
+ using (Transaction tr = db.TransactionManager.StartTransaction()) {
+ short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
+ Application.SetSystemVariable("BACKGROUNDPLOT", 0);
+
+ BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
+ PlotInfo pi = new PlotInfo();
+ PlotInfoValidator piv = new PlotInfoValidator();
+
+ piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
+
+ // A PlotEngine does the actual plotting
+ // (can also create one for Preview)
+ if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting) {
+
+
+ using (PlotEngine pe = PlotFactory.CreatePublishEngine()) {
+ PrintFrame[] frames = CheckModelSpaceTitle();
+ // Create a Progrel.ass Dialog to provide info
+ // and allow thej user to cancel
+
+ using (PlotProgressDialog ppd = new PlotProgressDialog(false, frames.Length, true)) {
+
+ int numSheet = 1;
+
+ if (frames.Length < 1) {
+ Hello.WriteHistoryLog("没有找到边框,打印结束\r\n");
+ return "";
+ }
+ foreach (PrintFrame frame in frames) {
+ BlockTableRecord acBlkTblRec = tr.GetObject(bt[BlockTableRecord.ModelSpace],
+ OpenMode.ForWrite) as BlockTableRecord;
+
+ Layout lo = (Layout)tr.GetObject(acBlkTblRec.LayoutId, OpenMode.ForRead);
+
+ // We need a PlotSettings object
+ // based on the layout settings
+ // which we then customize
+ PlotSettings ps = new PlotSettings(lo.ModelType);
+ ps.CopyFrom(lo);
+
+ // The PlotSettingsValidator helps
+ // create a valid PlotSettings object
+ PlotSettingsValidator psv = PlotSettingsValidator.Current;
+
+ // We'll plot the extents, centered and
+ // scaled to fit
+ StringCollection cols = psv.GetPlotStyleSheetList();
+ bool StyleSheetCheck = false;
+ foreach (string s in cols) {
+ if (string.Compare(s, "monochrome.ctb", true) == 0) {
+ StyleSheetCheck = true;
+ }
+ }
+ psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", frame.MediaName);
+
+ // kk 0813 转换 消除图纸偏移
+ Point3d minPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.PrintBound.MinPoint.X, frame.PrintBound.MinPoint.Y, 0), false);
+ Point3d maxPoint = Autodesk.AutoCAD.Internal.Utils.UcsToDisplay(new Point3d(frame.PrintBound.MaxPoint.X, frame.PrintBound.MaxPoint.Y, 0), false);
+ psv.SetPlotWindowArea(ps, new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y));
+ //psv.SetPlotWindowArea(ps, frame.PrintBound);
+ psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
+ if (!StyleSheetCheck)
+ psv.SetCurrentStyleSheet(ps, "monochrome.stb");
+ else
+ psv.SetCurrentStyleSheet(ps, "monochrome.ctb");
+ psv.SetPlotCentered(ps, true);
+ psv.SetUseStandardScale(ps, true);
+ psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
+ psv.SetPlotRotation(ps, frame.Rotation);
+
+ // We need a PlotInfo object
+ // linked to the layout
+ pi.Layout = acBlkTblRec.LayoutId;
+
+ // Make the layout we're plotting current
+ LayoutManager.Current.CurrentLayout = lo.LayoutName;
+ // We need to link the PlotInfo to the
+ // PlotSettings and then validate it
+
+ pi.OverrideSettings = ps;
+
+ piv.Validate(pi);
+
+ if (numSheet == 1) {
+ ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
+ ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
+ ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
+
+ ppd.LowerPlotProgressRange = 0;
+ ppd.UpperPlotProgressRange = 100;
+ ppd.PlotProgressPos = 0;
+
+ // Let's start the plot, at last
+ ppd.OnBeginPlot();
+ ppd.IsVisible = true;
+ pe.BeginPlot(ppd, null);
+
+ // We'll be plotting a single document // Let's plot to file
+ path = PrintDoc.Name.ToUpper().Replace(".DWG", string.Format("{0}{1}", frame.BKName, ".PDF"));
+ pe.BeginDocument(pi, PrintDoc.Name, null, 1, true, path);
+ }
+
+ // Which may contain multiple sheets
+ ppd.StatusMsgString = "Plotting " + PrintDoc.Name.Substring(PrintDoc.Name.LastIndexOf("\\") + 1) +
+ " - sheet " + numSheet.ToString() +
+ " of " + frames.Length.ToString();
+
+ ppd.OnBeginSheet();
+ ppd.LowerSheetProgressRange = 0;
+ ppd.UpperSheetProgressRange = 100;
+ ppd.SheetProgressPos = 0;
+ PlotPageInfo ppi = new PlotPageInfo();
+
+ pe.BeginPage(ppi, pi, frames.Length == numSheet, null);
+ pe.BeginGenerateGraphics(null);
+ ppd.SheetProgressPos = 50;
+ pe.EndGenerateGraphics(null);
+
+ // Finish the sheet
+ pe.EndPage(null);
+ ppd.SheetProgressPos = 100;
+ ppd.OnEndSheet();
+ numSheet++;
+ }
+
+ // Finish the document
+ pe.EndDocument(null);
+ // And finish the plot
+ ppd.PlotProgressPos = 100;
+ ppd.OnEndPlot();
+
+ pe.EndPlot(null);
+ ppd.Dispose();
+
+ }
+
+
+ }
+ }
+ else {
+ PrintDoc.Editor.WriteMessage("\nAnother plot is in progress.");
+ Hello.WriteHistoryLog("另外一个打印任务正在运行\r\n");
+ }
+ // Thread.Sleep(30000);
+ Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
+ tr.Commit();
+
+
+ }
+ //m_DocumentLock.Dispose();
+ return path;
+ }
+
+ // 检查是否存在边框
+ private PrintFrame[] CheckModelSpaceTitle()
+ {
+ //DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
+ Database acCurDb = PrintDoc.Database;
+ List lstFrame = new List();
+ using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
+ {
+ BlockTable acBlkTbl;
+ acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
+ OpenMode.ForRead) as BlockTable;
+
+ // Open the Block table record for read
+ BlockTableRecord acBlkTblRec;
+
+ acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
+ OpenMode.ForRead) as BlockTableRecord;
+ BlockReference reference;
+ BlockTableRecordEnumerator enumbtr = acBlkTblRec.GetEnumerator();
+ while (enumbtr.MoveNext())
+ {
+ Entity entity = acTrans.GetObject(enumbtr.Current, OpenMode.ForRead) as Entity;
+ if (entity is BlockReference)
+ {
+
+ reference = entity as BlockReference;
+ //int i = m_Frame.BinarySearch(new PrintFrame() { BKName = reference.Name }, new FrameCompare());
+ int i = -1;
+ for (int j = 0; j < m_Frame.Count;j++ ) {
+ if (string.Compare((m_Frame[j] as PrintFrame).BKName, reference.Name, true) == 0) {
+ i = j;
+ break;
+ }
+ }
+
+
+ if (i > -1) {
+ double scale = reference.ScaleFactors.GetMatrix().GetScale();
+ Database db = entity.Database;
+ using (Transaction t = db.TransactionManager.StartTransaction())
+ {
+ BlockTableRecord btr = t.GetObject(reference.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
+ Extents3d exts = reference.GeometryExtentsBestFit();
+ Extents2d e2dBound = new Extents2d(exts.MinPoint.X, exts.MinPoint.Y, exts.MaxPoint.X, exts.MaxPoint.Y);
+ (m_Frame[i] as PrintFrame).PrintBound = e2dBound;
+ PrintFrame frm = new PrintFrame();
+ frm.Clone((m_Frame[i] as PrintFrame));
+ frm.scale = scale;
+ lstFrame.Add(frm);
+ }
+ //Point3d minPoint = reference.GeometricExtents.MinPoint;
+ //Point3d maxPoint = reference.GeometricExtents.MaxPoint;
+ // Extents2d e2dBound = new Extents2d(reference.Bounds.Value.MinPoint.X, reference.Bounds.Value.MinPoint.Y, reference.Bounds.Value.MaxPoint.X, reference.Bounds.Value.MaxPoint.Y);
+ //Extents2d e2dBound = new Extents2d(minPoint.X, minPoint.Y, maxPoint.X, maxPoint.Y);
+
+ }
+
+ }
+ }
+
+ acTrans.Commit();
+ }
+ lstFrame.Sort();
+ //m_DocumentLock.Dispose();
+ return lstFrame.ToArray();
+ }
+
+ public Document PrintDoc
+ {
+ get;
+ set;
+ }
+
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/QAData.Designer.cs b/OriginAutoCAD_chint/hello/QAData.Designer.cs
new file mode 100644
index 0000000..f66a286
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/QAData.Designer.cs
@@ -0,0 +1,167 @@
+namespace HelloTeamcenter.hello {
+ partial class QAData {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing) {
+ if (disposing && (components != null)) {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent() {
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.序号 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.下限值 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.中值 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.上限值 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.检测标记 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.panel2.SuspendLayout();
+ this.panel3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // panel2
+ //
+ this.panel2.AutoSize = true;
+ this.panel2.Controls.Add(this.button2);
+ this.panel2.Controls.Add(this.button1);
+ this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.panel2.Location = new System.Drawing.Point(0, 423);
+ this.panel2.Name = "panel2";
+ this.panel2.RightToLeft = System.Windows.Forms.RightToLeft.No;
+ this.panel2.Size = new System.Drawing.Size(487, 35);
+ this.panel2.TabIndex = 1;
+ //
+ // button2
+ //
+ this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
+ this.button2.Location = new System.Drawing.Point(278, 9);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(81, 23);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "取消";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
+ this.button1.Location = new System.Drawing.Point(146, 9);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "保存";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // panel3
+ //
+ this.panel3.AutoScroll = true;
+ this.panel3.Controls.Add(this.dataGridView1);
+ this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel3.Location = new System.Drawing.Point(0, 0);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(487, 423);
+ this.panel3.TabIndex = 2;
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.AllowUserToAddRows = false;
+ this.dataGridView1.AllowUserToDeleteRows = false;
+ this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.序号,
+ this.下限值,
+ this.中值,
+ this.上限值,
+ this.检测标记});
+ this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.dataGridView1.Location = new System.Drawing.Point(0, 0);
+ this.dataGridView1.Name = "dataGridView1";
+ this.dataGridView1.ReadOnly = true;
+ this.dataGridView1.RowTemplate.Height = 23;
+ this.dataGridView1.Size = new System.Drawing.Size(487, 423);
+ this.dataGridView1.TabIndex = 0;
+ //
+ // 序号
+ //
+ this.序号.HeaderText = "序号";
+ this.序号.Name = "序号";
+ this.序号.ReadOnly = true;
+ //
+ // 下限值
+ //
+ this.下限值.HeaderText = "下限值";
+ this.下限值.Name = "下限值";
+ this.下限值.ReadOnly = true;
+ //
+ // 中值
+ //
+ this.中值.HeaderText = "中值";
+ this.中值.Name = "中值";
+ this.中值.ReadOnly = true;
+ //
+ // 上限值
+ //
+ this.上限值.HeaderText = "上限值";
+ this.上限值.Name = "上限值";
+ this.上限值.ReadOnly = true;
+ //
+ // 检测标记
+ //
+ this.检测标记.HeaderText = "检测标记";
+ this.检测标记.Name = "检测标记";
+ this.检测标记.ReadOnly = true;
+ //
+ // QAData
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(487, 458);
+ this.Controls.Add(this.panel3);
+ this.Controls.Add(this.panel2);
+ this.Name = "QAData";
+ this.Text = "标注信息";
+ this.Load += new System.EventHandler(this.QAData_Load);
+ this.panel2.ResumeLayout(false);
+ this.panel3.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn 序号;
+ private System.Windows.Forms.DataGridViewTextBoxColumn 下限值;
+ private System.Windows.Forms.DataGridViewTextBoxColumn 中值;
+ private System.Windows.Forms.DataGridViewTextBoxColumn 上限值;
+ private System.Windows.Forms.DataGridViewTextBoxColumn 检测标记;
+
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/QAData.cs b/OriginAutoCAD_chint/hello/QAData.cs
new file mode 100644
index 0000000..5bbf258
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/QAData.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+using Teamcenter.Hello;
+
+namespace HelloTeamcenter.hello {
+ public partial class QAData : Form {
+ private User user;
+ private List qcList;
+ private string itemId;
+ private string revId;
+ private List ccList;
+ private List scList;
+
+ public QAData(User user, List qcList,List ccList,List scList,string itemId,string revId) {
+ InitializeComponent();
+ this.user = user;
+ this.qcList = qcList;
+ this.itemId = itemId;
+ this.revId = revId;
+ this.ccList=ccList;
+ this.scList=scList;
+
+ initTableData();
+ }
+
+ private void initTableData() {
+ int size = this.qcList.Count;
+ //排序
+ for (int i = 0; i < size; i++) {
+ for (int j = 0; j < size - i - 1; j++) {
+ int index1 = int.Parse(qcList[j][0]);
+ int index2 = int.Parse(qcList[j + 1][0]);
+ if (index1 > index2) {
+ String[] temp = qcList[j];
+ qcList[j] = qcList[j + 1];
+ qcList[j + 1] = temp;
+ }
+ }
+ }
+ for (int i = 0; i < size; i++) {
+ int index = this.dataGridView1.Rows.Add();
+ this.dataGridView1.Rows[index].Cells[0].Value = qcList[i][0];
+ this.dataGridView1.Rows[index].Cells[1].Value = qcList[i][1];
+ this.dataGridView1.Rows[index].Cells[2].Value = qcList[i][2];
+ this.dataGridView1.Rows[index].Cells[3].Value = qcList[i][3];
+ if (ccList.Contains(qcList[i][0])) {
+ this.dataGridView1.Rows[index].Cells[4].Value = "CC";
+ }
+ else if (scList.Contains(qcList[i][0])) {
+ this.dataGridView1.Rows[index].Cells[4].Value = "SC";
+ }
+ else {
+ this.dataGridView1.Rows[index].Cells[4].Value = "";
+ }
+ }
+ }
+
+ private void QAData_Load(object sender, EventArgs e) {
+ }
+
+ private void button2_Click(object sender, EventArgs e) {
+ this.Dispose();
+ }
+
+ private void button1_Click(object sender, EventArgs e) {
+ button1.Enabled = false;
+ OriginTool origintool = new OriginTool();
+ SavedQueryResults found = origintool.getSearchItemRev(itemId,revId);
+ if (found != null && found.NumOfObjects > 0) {
+ int size = qcList.Count;
+ int counter = 0;
+ delete(itemId,revId);
+ DateTime now = DateTime.Now;
+ string userUid = user.Uid;
+ for (int i = 0; i < size; i++) {
+ if (ccList.Contains(qcList[i][0])) {
+ counter += insert(qcList[i], "CC", userUid, now);
+ }
+ else if (scList.Contains(qcList[i][0])) {
+ counter += insert(qcList[i], "SC", userUid, now);
+ }
+ else {
+ counter += insert(qcList[i], "", userUid, now);
+ }
+ }
+ KHQAtoDB.ed.WriteMessage("增加了" + counter + "条数据\n");
+ MessageBox.Show("保存了" + counter + "条数据");
+ this.Dispose();
+ //KHQAtoDB.ed.WriteMessage("数据库:" + SqlUtil.connString);
+ }
+ else {
+ MessageBox.Show("没有找到对应标题栏Item,item id = "+itemId+", rev id = "+revId);
+ }
+ button1.Enabled = true;
+ }
+
+ public bool saveHistoryData() {
+ OriginTool origintool = new OriginTool();
+ SavedQueryResults found = origintool.getSearchItemRev(itemId, revId);
+ if (found != null && found.NumOfObjects > 0) {
+ int size = qcList.Count;
+ int counter = 0;
+ delete(itemId, revId);
+ DateTime now = DateTime.Now;
+ string userUid = user.Uid;
+ for (int i = 0; i < size; i++) {
+ if (ccList.Contains(qcList[i][0])) {
+ counter += insert(qcList[i], "CC", userUid, now);
+ }
+ else if (scList.Contains(qcList[i][0])) {
+ counter += insert(qcList[i], "SC", userUid, now);
+ }
+ else {
+ counter += insert(qcList[i], "", userUid, now);
+ }
+ }
+ Hello.WriteHistoryLog("保存了" + counter + "条数据\r\n");
+ return true;
+ //this.Dispose();
+ //KHQAtoDB.ed.WriteMessage("数据库:" + SqlUtil.connString);
+ }
+ else {
+ Hello.WriteHistoryLog("没有找到对应标题栏Item,item id = " + itemId + ", rev id = " + revId+"\r\n");
+ return false;
+ }
+ }
+
+ public void delete(string itemId,string revId) {
+ RowInfo rowInfo = new RowInfo();
+ rowInfo.CODE = itemId;
+ int c = SqlUtil.delete(rowInfo);
+ KHQAtoDB.ed.WriteMessage("删除了" + c + "条仅itemid的数据\n");
+ rowInfo.CODE = itemId + "/" + revId;
+ c = SqlUtil.delete(rowInfo);
+ KHQAtoDB.ed.WriteMessage("删除了" + c + "条当前版本数据\n");
+ }
+
+ public int insert(string[] qcData, string mark, string userUid, DateTime time) {
+ RowInfo rowInfo = new RowInfo();
+ rowInfo.CODE = itemId+"/"+revId;
+ rowInfo.SerialCode = qcData[0];
+ rowInfo.UpValue = qcData[3];
+ rowInfo.MidValue = qcData[2];
+ rowInfo.DownValue = qcData[1];
+ rowInfo.QCFlag = mark;
+ rowInfo.Creator = userUid;
+ rowInfo.CreateDate = time;
+ int c = SqlUtil.insert(rowInfo);
+ return c;
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/QAData.resx b/OriginAutoCAD_chint/hello/QAData.resx
new file mode 100644
index 0000000..5aa26ef
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/QAData.resx
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/Query.cs b/OriginAutoCAD_chint/hello/Query.cs
new file mode 100644
index 0000000..87448cb
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/Query.cs
@@ -0,0 +1,288 @@
+//==================================================
+//
+// @@
+//
+//==================================================
+
+using System;
+
+using Teamcenter.ClientX;
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+
+//Include the Saved Query Service Interface
+using Teamcenter.Services.Strong.Query;
+
+// Input and output structures for the service operations
+// Note: the different namespace from the service interface
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+
+using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
+
+
+namespace Teamcenter.Hello
+{
+public class Query
+{
+ public static Autodesk.AutoCAD.EditorInput.Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ public static Soa.Client.Model.ModelObject queryItemRevByID(String itemId,String revId)
+ {
+ ImanQuery query = null;
+ Soa.Client.Model.ModelObject obj = null;
+ Soa.Client.Model.ModelObject[] objs = null;
+ // Get the service stub
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+
+ try
+ {
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+
+
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed1.WriteMessage("There are no saved queries in the system.");
+ return null;
+ }
+
+ // Find one called 'Item Name'
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("ConnorItemRevQuery"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed1.WriteMessage("GetSavedQueries service request failed.");
+ ed1.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed1.WriteMessage("There is not an 'ConnorItemRevQuery' query.");
+ return null;
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].MaxNumToReturn = 25;
+ savedQueryInput[0].LimitListCount = 0;
+ savedQueryInput[0].LimitList = new Teamcenter.Soa.Client.Model.ModelObject[0];
+ savedQueryInput[0].Entries = new String[] { "ConnorItemID", "ConnorItemRevID" };
+ savedQueryInput[0].Values = new String[2];
+ savedQueryInput[0].Values[0] = itemId;
+ savedQueryInput[0].Values[1] = revId;
+ savedQueryInput[0].MaxNumToInflate = 25;
+
+ //*****************************
+ //Execute the service operation
+ //*****************************
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+ objs = found.Objects;
+ if (found.NumOfObjects > 0)
+ obj = found.Objects[0];
+ ed1.WriteMessage("Found count "+found.NumOfObjects);
+ ed1.WriteMessage("Found Items:");
+ // Teamcenter.ClientX.Session.printObjects(found.Objects);
+ }
+ catch (ServiceException e)
+ {
+ ed1.WriteMessage("ExecuteSavedQuery service request failed.");
+ ed1.WriteMessage(e.Message);
+ return null;
+ }
+
+
+
+ }
+ return obj;
+ }
+ ///
+ /// query Item by id
+ ///
+ ///
+ ///
+ public static Soa.Client.Model.ModelObject queryItemByID(String itemId)
+ {
+ ImanQuery query = null;
+ Soa.Client.Model.ModelObject obj = null;
+ Soa.Client.Model.ModelObject[] objs = null;
+ // Get the service stub
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+
+ try
+ {
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+
+
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed1.WriteMessage("There are no saved queries in the system.");
+ return null;
+ }
+
+ // Find one called 'Item Name'
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("ConnorItemQuery"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed1.WriteMessage("GetSavedQueries service request failed.");
+ ed1.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed1.WriteMessage("There is not an 'ConnorItemQuery' query.");
+ return null;
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].MaxNumToReturn = 25;
+ savedQueryInput[0].LimitListCount = 0;
+ savedQueryInput[0].LimitList = new Teamcenter.Soa.Client.Model.ModelObject[0];
+ savedQueryInput[0].Entries = new String[] { "ConnorItemID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = itemId;
+ savedQueryInput[0].MaxNumToInflate = 25;
+
+ //*****************************
+ //Execute the service operation
+ //*****************************
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+ objs = found.Objects;
+ if (found.NumOfObjects > 0)
+ obj = found.Objects[0];
+ ed1.WriteMessage("Found count ="+found.NumOfObjects);
+ ed1.WriteMessage("Found Items:");
+ // Teamcenter.ClientX.Session.printObjects(found.Objects);
+ }
+ catch (ServiceException e)
+ {
+ ed1.WriteMessage("ExecuteSavedQuery service request failed.");
+ ed1.WriteMessage(e.Message);
+ return null;
+ }
+
+
+
+ }
+ return obj;
+ }
+ /**
+ * Perform a simple query of the database
+ *
+ */
+ public void queryItems()
+ {
+
+ ImanQuery query = null;
+
+ // Get the service stub
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+
+ try
+ {
+
+ // *****************************
+ // Execute the service operation
+ // *****************************
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+
+
+ if (savedQueries.Queries.Length == 0)
+ {
+ Console.Out.WriteLine("There are no saved queries in the system.");
+ return;
+ }
+
+ // Find one called 'Item Name'
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("Item Name"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ Console.Out.WriteLine("GetSavedQueries service request failed.");
+ Console.Out.WriteLine(e.Message);
+ return;
+ }
+
+ if (query == null)
+ {
+ ed1.WriteMessage("There is not an 'Item Name' query.");
+ return;
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ savedQueryInput[0].MaxNumToReturn = 25;
+ savedQueryInput[0].LimitListCount = 0;
+ savedQueryInput[0].LimitList = new Teamcenter.Soa.Client.Model.ModelObject[0];
+ savedQueryInput[0].Entries = new String[] { "Item Name" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = "*";
+ savedQueryInput[0].MaxNumToInflate = 25;
+
+ //*****************************
+ //Execute the service operation
+ //*****************************
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ System.Console.Out.WriteLine("");
+ System.Console.Out.WriteLine("Found Items:");
+ Teamcenter.ClientX.Session.printObjects( found.Objects );
+ }
+ catch (ServiceException e)
+ {
+ Console.Out.WriteLine("ExecuteSavedQuery service request failed.");
+ Console.Out.WriteLine(e.Message);
+ return;
+ }
+
+ }
+}
+}
diff --git a/OriginAutoCAD_chint/hello/RowInfo.cs b/OriginAutoCAD_chint/hello/RowInfo.cs
new file mode 100644
index 0000000..bc09527
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/RowInfo.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Oracle.ManagedDataAccess.Client;
+
+namespace HelloTeamcenter.hello {
+ class RowInfo {
+ public string CODE;
+ public string SerialCode;
+ public string UpValue;
+ public string MidValue;
+ public string DownValue;
+ public string QCFlag;
+ public DateTime? CreateDate;
+ public string Creator;
+
+ public RowInfo() { }
+
+ public RowInfo(OracleDataReader reader) {
+ if (!reader.IsDBNull(0))
+ this.CODE = reader.GetString(0);
+ if (!reader.IsDBNull(1))
+ this.SerialCode = reader.GetString(1);
+ if (!reader.IsDBNull(2))
+ this.UpValue = reader.GetString(2);
+ if (!reader.IsDBNull(3))
+ this.MidValue = reader.GetString(3);
+ if (!reader.IsDBNull(4))
+ this.DownValue = reader.GetString(4);
+ if (!reader.IsDBNull(5))
+ this.QCFlag = reader.GetString(5);
+ if (!reader.IsDBNull(6))
+ this.CreateDate = reader.GetDateTime(6);
+ if (!reader.IsDBNull(7))
+ this.Creator = reader.GetString(7);
+ }
+
+ public SortedDictionary getRowInfo() {
+ SortedDictionary res = new SortedDictionary();
+ if (CODE != null) {
+ res.Add("CODE", CODE);
+ }
+ if (SerialCode != null) {
+ res.Add("SerialCode", SerialCode);
+ }
+ if (UpValue != null) {
+ res.Add("UpValue", UpValue);
+ }
+ if (MidValue != null) {
+ res.Add("MidValue", MidValue);
+ }
+ if (DownValue != null) {
+ res.Add("DownValue", DownValue);
+ }
+ if (QCFlag != null) {
+ res.Add("QCFlag", QCFlag);
+ }
+ if (CreateDate != null) {
+ res.Add("CreateDate", CreateDate);
+ }
+ if (Creator != null) {
+ res.Add("Creator", Creator);
+ }
+ return res;
+ }
+ }
+}
+
diff --git a/OriginAutoCAD_chint/hello/Search.Designer.cs b/OriginAutoCAD_chint/hello/Search.Designer.cs
new file mode 100644
index 0000000..d537286
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/Search.Designer.cs
@@ -0,0 +1,208 @@
+namespace HelloTeamcenter.form
+{
+ partial class Search
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Search));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.comboBox2 = new System.Windows.Forms.ComboBox();
+ this.treeView1 = new System.Windows.Forms.TreeView();
+ this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(38, 36);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(43, 13);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "名称:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(8, 75);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(69, 13);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "零组件 ID:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(38, 114);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(43, 13);
+ this.label3.TabIndex = 2;
+ this.label3.Text = "类型:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(26, 153);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(55, 13);
+ this.label4.TabIndex = 3;
+ this.label4.Text = "创建者:";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(85, 29);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(166, 20);
+ this.textBox1.TabIndex = 4;
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(85, 67);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(166, 20);
+ this.textBox2.TabIndex = 5;
+ //
+ // comboBox1
+ //
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "*"});
+ this.comboBox1.Location = new System.Drawing.Point(85, 108);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(166, 21);
+ this.comboBox1.TabIndex = 6;
+ //
+ // comboBox2
+ //
+ this.comboBox2.FormattingEnabled = true;
+ this.comboBox2.Items.AddRange(new object[] {
+ "*"});
+ this.comboBox2.Location = new System.Drawing.Point(85, 147);
+ this.comboBox2.Name = "comboBox2";
+ this.comboBox2.Size = new System.Drawing.Size(166, 21);
+ this.comboBox2.TabIndex = 7;
+ this.comboBox2.Click += new System.EventHandler(this.comboBox2_Click);
+ //
+ // treeView1
+ //
+ this.treeView1.ImageIndex = 7;
+ this.treeView1.ImageList = this.imageList1;
+ this.treeView1.Location = new System.Drawing.Point(280, 1);
+ this.treeView1.Name = "treeView1";
+ this.treeView1.SelectedImageIndex = 0;
+ this.treeView1.Size = new System.Drawing.Size(401, 356);
+ this.treeView1.TabIndex = 8;
+ this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseDoubleClick);
+ //
+ // imageList1
+ //
+ this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+ this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList1.Images.SetKeyName(0, "autocad_01.ico");
+ this.imageList1.Images.SetKeyName(1, "FOLDER.ICO");
+ this.imageList1.Images.SetKeyName(2, "FOLDEROP.ICO");
+ this.imageList1.Images.SetKeyName(3, "item.ico");
+ this.imageList1.Images.SetKeyName(4, "itemrev.ico");
+ this.imageList1.Images.SetKeyName(5, "mail.ico");
+ this.imageList1.Images.SetKeyName(6, "Newstuff_Folder.png");
+ this.imageList1.Images.SetKeyName(7, "tai.ico");
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(59, 233);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 25);
+ this.button1.TabIndex = 9;
+ this.button1.Text = "查找";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(162, 233);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 25);
+ this.button2.TabIndex = 10;
+ this.button2.Text = "打开";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // Search
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(693, 371);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.treeView1);
+ this.Controls.Add(this.comboBox2);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "Search";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "搜索";
+ this.TopMost = true;
+ this.Load += new System.EventHandler(this.Search_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ public System.Windows.Forms.Label label1;
+ public System.Windows.Forms.Label label2;
+ public System.Windows.Forms.Label label3;
+ public System.Windows.Forms.Label label4;
+ public System.Windows.Forms.TextBox textBox1;
+ public System.Windows.Forms.TextBox textBox2;
+ public System.Windows.Forms.ComboBox comboBox1;
+ public System.Windows.Forms.ComboBox comboBox2;
+ public System.Windows.Forms.TreeView treeView1;
+ public System.Windows.Forms.Button button1;
+ public System.Windows.Forms.Button button2;
+ public System.Windows.Forms.ImageList imageList1;
+
+ }
+}
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/Search.cs b/OriginAutoCAD_chint/hello/Search.cs
new file mode 100644
index 0000000..9827318
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/Search.cs
@@ -0,0 +1,465 @@
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using System.Collections;
+
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+
+using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
+using Teamcenter.Services.Strong.Core._2006_03.Reservation;
+
+using Teamcenter.Services.Strong.Core._2006_03.FileManagement;
+
+using HelloTeamcenter.hello;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
+using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile;
+
+
+
+namespace HelloTeamcenter.form
+{
+ public partial class Search : Form
+ {
+ public Search()
+ {
+ InitializeComponent();
+ }
+ public List folderlist = new List();
+ public List itemlist = new List();
+ public List itemvisionlist = new List();
+ public List datasetlist = new List();
+
+ public Document appdoc;
+ public User user;
+ public Editor ed;
+ public bool hasRight = true;
+
+ public Hashtable itemtypetable;
+
+ public string xmlpath = "";
+
+ private void Search_Load(object sender, EventArgs e)
+ {
+ this.textBox1.Text = "";
+ this.textBox2.Text = "";
+ //读取Item类型.xml信息
+ OriginItemType originitemtype = new OriginItemType();
+ originitemtype.getType(this.xmlpath);
+ this.itemtypetable = originitemtype.Itemtypetable;
+
+ foreach (DictionaryEntry de in itemtypetable)
+ {
+ this.comboBox1.Items.Add(de.Key.ToString());
+ }
+ }
+
+ private void comboBox2_Click(object sender, EventArgs e)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ this.comboBox2.Items.Clear();
+ OriginTool tool = new OriginTool();
+ SavedQueryResults found = tool.getSearchUser();
+ if (found != null && found.NumOfObjects > 0)
+ {
+ for (int i = 0; i < found.NumOfObjects; i++)
+ {
+ User userobj = found.Objects[i] as User;
+ ModelObject[] objects = { userobj };
+ String[] attributes = { "User ID", "Name" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string userid = userobj.User_id;
+ string username = userobj.User_name;
+ string tempname = userid + "(" + username + ")";
+ if (this.comboBox2.Items.Contains(tempname))
+ continue;
+ else
+ this.comboBox2.Items.Add(tempname);
+ }
+ }
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ string name = textBox1.Text;
+ string item_id = textBox2.Text;
+ string type = comboBox1.Text;
+ //ed.WriteMessage("选择类型:"+ type +"\n");
+ string owner = comboBox2.Text;
+ //ed.WriteMessage("选择用户:" + owner + "\n");
+ if (name == "")
+ {
+ name = "*";
+ }
+ if (item_id == "")
+ {
+ item_id = "*";
+ }
+ if (type == "")
+ {
+ type = "*";
+ }
+ if (owner == "")
+ {
+ owner = "*";
+ }
+ else
+ {
+ int pos = owner.IndexOf('(');
+ owner = owner.Substring(0, pos);
+ //ed.WriteMessage("用户" + owner+"\n");
+ }
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ OriginTool tool = new OriginTool();
+ SavedQueryResults found = tool.getSearchItem(item_id, name, type, owner);
+ if (found != null && found.NumOfObjects > 0)
+ {
+ this.treeView1.Nodes.Clear();
+ for (int i = 0; i < found.NumOfObjects; i++)
+ {
+ Item item = found.Objects[i] as Item;
+ ModelObject[] objects = { item };
+ String[] attributes = { "object_string"};
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string inname = item.Object_string;
+ TreeNode childnode = new TreeNode(inname, 3, 3);
+ this.treeView1.Nodes.Add(childnode);
+ ALLOBJECT perobject = new ALLOBJECT();
+ perobject.workobject = item;
+ perobject.treenode = childnode;
+ itemlist.Add(perobject);
+ }
+ foreach (TreeNode ch in treeView1.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+ }
+
+ private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+ {
+ TreeNode nownode = this.treeView1.SelectedNode;
+ getChild(nownode);
+ foreach (TreeNode ch in nownode.Nodes)
+ {
+ ch.EnsureVisible();
+ }
+ }
+
+ private void getChild(TreeNode nownode)
+ {
+ nownode.Nodes.Clear();
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ WorkspaceObject[] contents = null;
+ string nodetext = nownode.Text;
+ int imageindex = nownode.SelectedImageIndex;
+ if (imageindex == 3)
+ {
+ foreach (ALLOBJECT perobject in itemlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Item item = perobject.workobject as Item;
+ ModelObject[] itemrevisionlist = null;
+ ModelObject[] objects = { item };
+ String[] attributes = { "revision_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ itemrevisionlist = item.Revision_list;
+ for (int i = 0; i < itemrevisionlist.Length; i++)
+ {
+ ItemRevision itemrevision = itemrevisionlist[i] as ItemRevision;
+ ModelObject[] objects1 = { itemrevision };
+ String[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = itemrevision.Object_string;
+ string type = itemrevision.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = itemrevision;
+ TreeNode childnode = new TreeNode(name, 4, 4);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ itemvisionlist.Add(inperobject);
+ }
+ break;
+ }
+ }
+ }
+ else if (imageindex == 4)
+ {
+ foreach (ALLOBJECT perobject in itemvisionlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ ItemRevision itemrevision = perobject.workobject as ItemRevision;
+ ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
+ RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
+ myFilter.RelationName = "IMAN_specification";
+ String[] typeVec = { "D5DWG", "Folder" };
+ myFilter.ObjectTypeNames = typeVec;
+ myPref.ExpItemRev = false;
+ RelationAndTypesFilter2[] myfilter = { myFilter };
+ myPref.Info = myfilter;
+ ModelObject[] objects1 = { itemrevision };
+
+ ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1, myPref);
+ ExpandGRMRelationsOutput[] myoutput = myResp.Output;
+ for (int i = 0; i < myoutput.Length; i++)
+ {
+ ExpandGRMRelationsOutput one_out = myoutput[i];
+ for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
+ {
+ ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
+ for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
+ {
+ Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
+ string typename = typeinfo.Name;
+ if (typename == "Folder")
+ {
+ Folder infold = otherSideData.OtherSideObjects[k] as Folder;
+
+ ModelObject[] objects = { infold };
+ String[] attributes = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = infold.Object_string;
+ string type = infold.Object_type;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = infold;
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ folderlist.Add(inperobject);
+ }
+ else
+ {
+ DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
+ ModelObject[] objects = { dateset };
+ String[] attributes = { "object_string" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ string name = dateset.Object_string;
+
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = dateset;
+ inperobject.name = name;
+ TreeNode childnode = new TreeNode(name, 0, 0);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ datasetlist.Add(inperobject);
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ else if (imageindex == 1)
+ {
+ foreach (ALLOBJECT perobject in folderlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ Folder fl = perobject.workobject as Folder;
+ ModelObject[] objects = { fl };
+ String[] attributes = { "contents" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ contents = fl.Contents;
+ for (int i = 0; i < contents.Length; i++)
+ {
+ WorkspaceObject childobj = contents[i];
+ ModelObject[] objects1 = { childobj };
+ String[] attributes1 = { "object_string", "object_type" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+ string name = childobj.Object_string;
+ string type = childobj.Object_type;
+ if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Folder infl = childobj as Folder;
+
+ if (type == "Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 1, 1);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Newstuff Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 6, 6);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ else if (type == "Mail Folder")
+ {
+ TreeNode childnode = new TreeNode(name, 5, 5);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ }
+ folderlist.Add(inperobject);
+ }
+ else if (type == "Item" || this.itemtypetable.ContainsValue(type))
+ {
+ ALLOBJECT inperobject = new ALLOBJECT();
+ inperobject.workobject = childobj;
+ Item item = childobj as Item;
+ TreeNode childnode = new TreeNode(name, 3, 3);
+ inperobject.treenode = childnode;
+ nownode.Nodes.Add(childnode);
+ itemlist.Add(inperobject);
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ DataManagementService dmService = DataManagementService.getService(Session.getConnection());
+ Reservation res = ReservationService.getService(Session.getConnection());
+ TreeNode nownode = this.treeView1.SelectedNode;
+ if (nownode.SelectedImageIndex == 0)
+ {
+ foreach (ALLOBJECT perobject in this.datasetlist)
+ {
+ if (perobject.treenode.Equals(nownode))
+ {
+ DialogResult isopen = MessageBox.Show("您是否确定打开该图纸?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (isopen == DialogResult.None || isopen == DialogResult.No)
+ {
+ return;
+ }
+ DataSet mydateset = perobject.workobject as DataSet;
+ ModelObject[] objects = { mydateset };
+ String[] attributes = { "is_modifiable", "checked_out", "ref_list" };
+ dmService.RefreshObjects(objects);
+ dmService.GetProperties(objects, attributes);
+ if (mydateset.Is_modifiable == false)
+ {
+ DialogResult result = MessageBox.Show("您没有修改权限,是否以只读方式打开?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (result == DialogResult.Yes)
+ {
+ hasRight = false;
+ }
+ else
+ {
+ return;
+ }
+ }
+ if (mydateset.Is_modifiable)
+ {
+ DialogResult result = MessageBox.Show("是否签出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+ if (result == DialogResult.Yes)
+ {
+ if (mydateset.Checked_out == "Y")
+ {
+ MessageBox.Show("对不起,文件已签出!请确认文件签入后执行此操作");
+ return;
+ }
+ else
+ {
+ ModelObject[] dataobj = { mydateset };
+ res.Checkout(dataobj, "", "");
+ //ed.WriteMessage("文件已签出");
+ //ed.WriteMessage("\n");
+ }
+ }
+ }
+
+ ModelObject[] dsfilevec = mydateset.Ref_list;
+ //ed.WriteMessage("长度:" + dsfilevec.Length);
+ //ed.WriteMessage(dsfilevec[0].GetType().ToString());
+ ImanFile dsfile = dsfilevec[0] as ImanFile;
+
+ ModelObject[] objects1 = { dsfile };
+ String[] attributes1 = { "relative_directory_path", "original_file_name" };
+ dmService.RefreshObjects(objects1);
+ dmService.GetProperties(objects1, attributes1);
+
+ //ed.WriteMessage("路径:" + dsfile.Relative_directory_path + "\n");
+ //ed.WriteMessage("文件名:" + dsfile.Original_file_name + "\n");
+ string newfilename = dsfile.Original_file_name;
+
+ string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString();
+ //ed.WriteMessage("TEMP:" + tempdir.ToString() + "\n");
+
+ FileManagementService fmService = FileManagementService.getService(Teamcenter.ClientX.Session.getConnection());
+ ImanFile[] objects2 = { dsfile };
+ FileTicketsResponse tickets = fmService.GetFileReadTickets(objects2);
+ //ed.WriteMessage("tickets : " + tickets.Tickets.Count + "\n");
+
+ //foreach (System.Collections.DictionaryEntry ticket in tickets.Tickets)
+ //{
+ // ed.WriteMessage("键:" + ticket.Key + "\n" + "值:" + ticket.Value + "\n");
+ //}
+ Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection());
+ Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec);
+ FileInfo[] fileinfovec = getFileResponse.GetFiles();
+
+ //ed.WriteMessage("文件个数:" + fileinfovec.Length + "\n");
+ FileInfo file = fileinfovec[0];
+
+ string newtempfile = tempdir + "\\" + newfilename;
+ System.IO.File.Copy(file.FullName, newtempfile, true);
+ System.IO.File.SetAttributes(newtempfile, FileAttributes.Normal);
+ DocumentCollection acdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ if (File.Exists(newtempfile))
+ {
+ acdocmgr.Open(newtempfile,false);
+ //Object pdata = newtempfile;
+ //acdocmgr.ExecuteInApplicationContext(c_back, pdata);
+ //acdocmgr.Add(newtempfile);
+ }
+ else
+ {
+ MessageBox.Show("对不起,用户临时目录下不存在此文件\n");
+ }
+ this.Hide();
+ this.Dispose();
+ break;
+ }
+ }
+ }
+ else
+ {
+ //ed.WriteMessage("请选择正确的数据集类型\n");
+ MessageBox.Show("请选择正确的数据集类型");
+ return;
+ }
+ }
+
+ //private void c_back(Object data)
+ //{
+ // DocumentCollection acdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
+ // if (acdocmgr.IsApplicationContext)
+ // {
+ // acdocmgr.Open(Convert.ToString(data));
+ // }
+ //}
+
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/Search.resx b/OriginAutoCAD_chint/hello/Search.resx
new file mode 100644
index 0000000..36e954d
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/Search.resx
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+ EAAAAk1TRnQBSQFMAgEBCAEAARwBAAEcAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AFQAQ/ycA
+ AZoCGgHwBQAQ/wMAAvANAAEEEAABGgHwARoBmgHlAVkBUgF5AfAEABD/AgABtAGtAc8BtQHvAgcBvAgA
+ AuwCBwEAAQMB+wEAAwcEAAIaAcMBGgLDAaABeQFZATIBmQGYAbwB8AEAAf8OAAH/AgABzweLAa4B9wHv
+ AQcEAALsAv8BAAEDAfsBAAL/AQcEAAGaAsMBGgL2AcMBeQI4AVgBVgFQAZgB8AH/DewBAAH/AgABzwGL
+ CYoBkgQAAuwC/wEAAQMB+wEAAv8BBwQAAXoDoAEaAvYBmgJZAVgBeAJQAfAB/wHsCwcB7AEAAf8CAAHP
+ ArIBrAeKAa4EAALsAv8BAAEDAfsBAAL/AQcEAAF6AuUBegJSAZkBGgGaAVkBmQGYAVYBUAHwAf8B7AED
+ AwcDAwMHAQMB7AEAAf8CAAHPAawFsgSKAZEBvAMAAQQB7AL/BAAC/wEHAwAB8AGaAXoB5QF6ATECUgEc
+ AZkBmgEaAZgBVwFWAfAB/wHsAfsBAwEHAQMDAAEDAQcBAwEHAewBAAH/AgABtQGtBbMDsgGzAa4BBwQA
+ AewI/wHsAwAB8AHDAfYBwwF6AVkBOAFYAngBHAGYAZkBmAF4AfAB/wHsAv8BAwEAAv8B+wEAAQMCBwHs
+ AQAB/wIAAbUBtAG7AroGswGRAQcEAAEDAQAG/wHsAgMCAAHwAZoCwwF6AjgBWAFXAVABSgFyAXMBHAGZ
+ AfAB/wHsAfsBBwEAAf8B+wP/AQABAwEHAewBAAH/AgABBwG0Aa0CtAEJAbsEugG0Ae8FAAEDAQAE/wHs
+ AgMB7AIAAfABmgF6AZoBegJZAnkBVgFQAXIBBwMAAf8B7AEHAQAB+wP/AfsC/wEAAQMB7AEAAf8CAAG1
+ AZkBkAGYAbMBtAEJAhkCCQG1AQcGAAEDAQAC/wHsAgMEAAHwARoBegF5AZkBoAFYAVkBmQJWARwEAAH/
+ AewBAAP/AfsD/wH7Af8BAAHsAQAB/wEAAbsBtAF5AZkBeQG0AgkEtAG1CAABAwIAAgMHAAHwArwBmQF5
+ AZkBeAJWAXgEAAH/AewC/wH7A/8B+wP/AfsCAAH/AgAB7wF+AV4BWAEcA7QB1gIJAQcJAAMDAewBAQcA
+ AbwB8AEIAZgBeAKYAZkBBwQAAf8N7AEAAf8CAAKZAnkBtQHvAwACtQEHDQABAQcAAfABvALwAbwBBwK8
+ BQAQ/wIAAQcBGgGRArwRAAEEAgABAQgABLwB8AcAEP8EAAHvHAAO8CoAARoB8AG8AfAEAAHvCYEB/wOB
+ AfAmAAGZARoBegFTAVkBUgF0AQcDAAGyAbkD2gO5AdoBuQH0AtoBuQG8IwACkwFMAXoDoAHlATEBMgFS
+ AZkCAAGyAtoCswLZAbMBiwGzAfQBswHUAbkBvA7sBAAM7AIAAfACmQEbAf8BmgH2AsMCoAExATgBMgF0
+ AgABsgOzBtkB9AHZArMBvAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewEAAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsB7AIAAbwBGgHDAv8BmQH/AvYCwwE3AjgBeQIAAbIBswGyAtkBuAHbAbkB2wGyAfQB2QGy
+ AbkBvAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewDAAHsAf8B+wEHAfsBBwH7AQcB+wEHAfsBBwEA
+ AewBAAG8AZoBoALDAZoB9gP/AfYBNwI4AXkCAAGyAdkBsgG4AbIBuAGKAbIBgQGyAfQB2QGyAbkBvAHs
+ Af8B+wEHAfsBBwH7AQcB+wEHAfsBBwH7AewDAAHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB7AEAAewBAAG8
+ AXkDoAFSAZkCwwEaAZoBegI4AXkCAAGyAdkBuAK5AbgB2QGyAYoB2QH0AdkBsgG5AbwB7AH/AQcB+wEH
+ AfsBBwH7AQcB+wEHAfsBBwHsAgAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBAALsAQAB8AF6AuUBegFT
+ AVIBcwF0AbwB9AH2AXoBWQGZAgABsgLaAbMC3AG5AbgB2QG7Af8BuwGzAdoBvAHsAf8B+wEHAfsBBwH7
+ AQcB+wEHAfsBBwH7AewCAAHsCv8B7AEAAQcB7AEAARoBmQN6AVkBMQErAUsBUgKZAZoCegIAAYEDswGQ
+ AYoBgQKzAbsBigG6ArMBBwHsAf8BBwH7AQcB+wEHAfsBBwH7AQcB+wEHAewCAA3sAfsB7AEAAXQBwwH2
+ AsMBegFZATgBMgFMAZkBGgUAAboB2wK6AdoBugKRAdoBuwS6AQcB7AH/AfsBBwH7AQcB+wEHAfsBBwH7
+ AQcB+wHsAwAB7AH/AQcB+wEHAfsBBwH7AQcB+wEHAfsBBwHsAQABdAHDAfYC/wGaAzgBUgcAAbkC2wGz
+ BNkBuAHyAf8B8gHbAdoBvAHsDP8B7AMAAewB/wH7AQcB+wEHAfsBBwX/AewBAAF6AsMC9gEaAfsCOAFS
+ BwABswTbAQkC3AIJAfQC2wHaAbwB7AEHAfsBBwH7AQcB+wEHBuwDAAHsAf8BBwH7AQcB+wEHAf8G7AEA
+ AnoCoAJ6AVkB+wE4AXkHAAGzAdsB3AcJAfQBCQHcAdsBvAEAAewBBwH7AQcB+wEHAewKAAHsBf8B7AcA
+ AnoBWQLlAcMBegJZAZkHAAG5CRkB9AMZAfACAAXsDAAF7AkAAfABGgFSAlkCegFTAXkRAAHwKAAC8AoA
+ AUIBTQE+BwABPgMAASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EAAv8CAAT/Af4BHwIAAecB/wHA
+ AQMB4AEPAgABwAE/AcABAwGAAQECAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHAAQMBwAEDAYADAAHA
+ AQEBwAEDBAABwAEBAYABAQQAAcABAQHAAQEEAAHAAQEB4AEDAQABBwIAAcABAQHwAQcBAAEPAgABgAED
+ AfgBBwHAAQ8CAAHAAQMB/AEHAeABDwIAAcAB4wH+AScB4AEfAgABwQL/AWcB8AF/AgAB9wP/AYABAQX/
+ AYcBgAEABP8B/AEDAYABAAGAAQEB4AEAAeABAQGAAgABAQHAAgABAQGAAgABAQHAAgABAQGAAgABAQGA
+ AgABAQGAAgABAQGAAgABAQGAAgABAQMAAQEBgAIAAQEDAAEBAYACAAEBAwABDwGAAgABAQGAAgABPwGA
+ AgABAQGAAgABPwGAAgABAwGAAQEBAAE/AYABAAGAAf8BwAF/AQABPwGAAQABwQH/AeAB/wGAAT8B/wHv
+ BP8B8wH/Cw==
+
+
+
+
+
+ AAABAAEAECAAAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
+ AAD///8A///////////0bm5ubm5ub/Rs6IjoiEzv9G6Pd4d3Tm/0bP/3f/dM7/Ru/45v905v9Gz/jO/3
+ TO/0bn/2b/dOb/Rs5///90zv9G5ubm/3Tm/0bPeIf/bs7/Rub///fm5v9Gzs53zs7O/0xsbGxsbGz/RE
+ RERERERP//////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//
+
+
+
\ No newline at end of file
diff --git a/OriginAutoCAD_chint/hello/SocketUtil.cs b/OriginAutoCAD_chint/hello/SocketUtil.cs
new file mode 100644
index 0000000..a52f6f6
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/SocketUtil.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Text;
+using System.Net;
+using System.Net.Sockets;
+using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
+using Autodesk.AutoCAD.EditorInput;
+namespace HelloTeamcenter.hello {
+ class SocketUtil {
+
+ public static void WriteLog(string msg) {
+ try {
+ AcAp.DocumentManager.MdiActiveDocument.Editor.WriteMessage(msg + "\n");
+ }
+ catch (System.Exception) {
+ }
+
+ //FileStream fs = null;
+ //try {
+ // string time = DateTime.Now.ToString("yyyyMMdd");
+ // string now = DateTime.Now.ToString("HH:mm:ss");
+ // fs = new FileStream(System.Environment.GetEnvironmentVariable("TEMP") + "\\TC_CAD_Integration_log_" + time + ".txt", FileMode.Append);
+ // //获得字节数组
+ // byte[] data = System.Text.Encoding.Default.GetBytes("[" + now + "]" + msg + "\r\n");
+ // //开始写入
+ // fs.Write(data, 0, data.Length);
+ // fs.Flush();
+ // fs.Close();
+ //}
+ //catch (System.Exception e) {
+ // Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
+ // ed.WriteMessage("写入日志出错:"+e.Message+"\n");
+ //}
+ }
+ //{ "FUNC": "REFRESH", "PARAM": { "UID": "123123;123123;123123" } }
+ public static bool Refresh(string uids) {
+ if (string.IsNullOrEmpty(uids)) {
+ return true;
+ }
+ SocketClient client = new SocketClient(9192);
+ string inputInfo = "{ \"FUNC\": \"REFRESH\", \"PARAM\": { \"UID\": \""+uids+"\" } }";
+ return client.StartClient(inputInfo);
+ }
+
+ public class SocketClient {
+ private string _ip = string.Empty;
+ private int _port = 0;
+ //private InputInfo _inputinfo;
+ private Socket _socket = null;
+ private byte[] buffer = new byte[1024 * 1024 * 2];
+
+
+ //public SocketClient(string ip, int port,InputInfo inputinfo)
+ //{
+ // this._ip = ip;
+ // this._port = port;
+ // this._inputinfo = inputinfo;
+ // }
+ ///
+ /// 构造函数
+ ///
+ /// 连接服务器的IP
+ /// 连接服务器的端口
+ public SocketClient(string ip, int port) {
+ this._ip = ip;
+ this._port = port;
+ }
+ public SocketClient(int port) {
+ this._ip = "127.0.0.1";
+ this._port = port;
+ }
+
+
+ //
+ /// 开启服务,连接服务端
+ ///
+ public bool StartClient(string inputInfo) {
+ bool flag = false;
+ try {
+ //1.0 实例化套接字(IP4寻址地址,流式传输,TCP协议)
+ _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ //2.0 创建IP对象
+ IPAddress address = IPAddress.Parse(_ip);
+ //3.0 创建网络端口包括ip和端口
+ IPEndPoint endPoint = new IPEndPoint(address, _port);
+ //4.0 建立连接
+ _socket.Connect(endPoint);
+ Console.WriteLine("连接服务器成功");
+
+ //string sendMessage = string.Format("{0}|{1}", datasetUID, filePath);
+ _socket.Send(Encoding.UTF8.GetBytes(inputInfo));
+ Console.WriteLine("向服务发送的消息:{0}", inputInfo);
+ _socket.Shutdown(SocketShutdown.Send);
+ int length = _socket.Receive(buffer);
+ string resp = Encoding.UTF8.GetString(buffer, 0, length);
+ Console.WriteLine("接收服务器{0},消息:{1}", _socket.RemoteEndPoint.ToString(), resp);
+ if (string.IsNullOrEmpty(resp)) {
+ flag = true;
+ }
+ else {
+ Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
+ ed.WriteMessage("执行失败:" + resp);
+ // System.Windows.Forms.MessageBox.Show("执行失败:" + resp);
+ }
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
+ ed.WriteMessage("执行件失败:" + ex.Message);
+ // System.Windows.Forms.MessageBox.Show("执行失败:" + ex.Message);
+ }
+ finally {
+ try {
+ _socket.Shutdown(SocketShutdown.Both);
+ }
+ catch(Exception) {
+ }
+ try {
+ _socket.Close();
+ }
+ catch (Exception) {
+ }
+ }
+ Console.WriteLine("发送消息结束");
+ return flag;
+ }
+
+ ///
+ /// 开启服务,连接服务端
+ ///
+ public void StartClient(string datasetUID, string filePath) {
+ try {
+ //1.0 实例化套接字(IP4寻址地址,流式传输,TCP协议)
+ _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ //2.0 创建IP对象
+ IPAddress address = IPAddress.Parse(_ip);
+ //3.0 创建网络端口包括ip和端口
+ IPEndPoint endPoint = new IPEndPoint(address, _port);
+ //4.0 建立连接
+ _socket.Connect(endPoint);
+ Console.WriteLine("连接服务器成功");
+
+ string sendMessage = string.Format("{0}|{1}", datasetUID, filePath);
+ _socket.Send(Encoding.UTF8.GetBytes(sendMessage));
+ Console.WriteLine("像服务发送的消息:{0}", sendMessage);
+ _socket.Shutdown(SocketShutdown.Send);
+ int length = _socket.Receive(buffer);
+ Console.WriteLine("接收服务器{0},消息:{1}", _socket.RemoteEndPoint.ToString(), Encoding.UTF8.GetString(buffer, 0, length));
+
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ _socket.Shutdown(SocketShutdown.Both);
+ _socket.Close();
+ }
+ Console.WriteLine("发送消息结束");
+ Console.ReadKey();
+ }
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/hello/SqlUtil.cs b/OriginAutoCAD_chint/hello/SqlUtil.cs
new file mode 100644
index 0000000..9457f8e
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/SqlUtil.cs
@@ -0,0 +1,257 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data;
+using System.Collections;
+using System.Threading.Tasks;
+using Oracle.ManagedDataAccess.Client;
+using System.Windows.Forms;
+
+namespace HelloTeamcenter.hello {
+ /*
+ * create table KH3_QA
+(
+ code VARCHAR2(64),
+ serialcode VARCHAR2(64),
+ upvalue VARCHAR2(64),
+ midvalue VARCHAR2(64),
+ downvalue VARCHAR2(64),
+ qcflag VARCHAR2(32),
+ createdate DATE default sysdate,
+ creator VARCHAR2(32)
+)
+ * */
+ class SqlUtil {
+ public static string connString = initConn();
+ public const string tableName = "KH3_QA";
+
+ public static OracleConnection OpenConn() {
+ if (connString == null||connString=="") {
+ connString=initConn();
+ }
+ OracleConnection con = new OracleConnection(connString);
+ con.Open();
+ return con;
+ }
+ public static OracleConnection OpenConn2()
+ {
+ string connString2 = initConn();
+ OracleConnection con = new OracleConnection(connString2);
+ con.Open();
+ return con;
+ }
+
+ public static string initConn() {
+ KHQAtoDB.ed.WriteMessage("初始化数据库连接...\n");
+ OriginTool origintool = new OriginTool();
+ string prefId = "KH3_ERP_DB_JDBC_Info";
+ Hashtable prefTable = origintool.getTCPreferences(prefId);
+ IEnumerator enumrator=prefTable.Values.GetEnumerator();
+ if(!enumrator.MoveNext()){
+ KHQAtoDB.ed.WriteMessage("首选项KH3_ERP_DB_JDBC_Info配置有误\n");
+ return "";
+ }
+ string[] pref = (string[])enumrator.Current;
+ if (pref == null || pref.Length != 3) {
+ KHQAtoDB.ed.WriteMessage("首选项KH3_ERP_DB_JDBC_Info配置有误\n");
+ return "";
+ }
+ string connStr = pref[0];
+ string name = pref[1];
+ string password = pref[2];
+ string ip = null;
+ string port = null;
+ string sid = null;
+ int ind = connStr.IndexOf("@");
+ if (ind > 0) {
+ connStr = connStr.Substring(ind + 1);
+ string[] connSplit = connStr.Split(':');
+ if (connSplit.Length == 3) {
+ ip = connSplit[0];
+ port = connSplit[1];
+ sid = connSplit[2];
+ }
+ }
+ if (ip == null || port == null || sid == null) {
+ KHQAtoDB.ed.WriteMessage("首选项KH3_ERP_DB_JDBC_Info配置有误\n");
+ return "";
+ }
+ return "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ip + ")(PORT=" + port + "))(CONNECT_DATA=(SERVICE_NAME=" + sid + ")));Persist Security Info=True;User ID=" + name + ";Password=" + password + ";";
+ }
+
+ private static void DisConnOracle(OracleConnection con) {
+ if (con == null) {
+ return;
+ }
+ try {
+ if (con.State != ConnectionState.Closed) {
+ con.Close();
+ }
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ con.Dispose();
+ }
+ }
+
+ private static void AddParameters(OracleCommand cmd, SortedDictionary row) {
+ OracleParameter oraPara;
+ foreach (KeyValuePair kv in row) {
+ if (kv.Value is string) {
+ //Console.WriteLine(kv.Key);
+ oraPara = new OracleParameter(kv.Key, OracleDbType.Varchar2, 64);
+ oraPara.Value = kv.Value;
+ cmd.Parameters.Add(oraPara);
+ }
+ else if (kv.Value is DateTime) {
+ //Console.WriteLine(kv.Key);
+ oraPara = new OracleParameter(kv.Key, OracleDbType.Date);
+ oraPara.Value = kv.Value;
+ cmd.Parameters.Add(oraPara);
+ }
+ }
+ }
+
+ public static int insert(RowInfo rowInfo) {
+ OracleConnection con = null;
+ try {
+ con = OpenConn();
+ StringBuilder sql = new StringBuilder();
+ sql.Append("insert into ").Append(tableName).Append("(");
+ var row = rowInfo.getRowInfo();
+ var keys = row.Keys;
+ if (keys.Count > 0) {
+ foreach (string rowHeader in keys) {
+ sql.Append(rowHeader).Append(",");
+ }
+ sql.Length = sql.Length - 1;
+ sql.Append(") values(");
+ foreach (string rowHeader in keys) {
+ sql.Append(":").Append(rowHeader).Append(",");
+ }
+ sql.Length = sql.Length - 1;
+ sql.Append(")");
+ Console.WriteLine(sql.ToString());
+ OracleCommand cmd = new OracleCommand(sql.ToString(), con);
+ AddParameters(cmd, row);
+ return cmd.ExecuteNonQuery();
+ }
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ DisConnOracle(con);
+ }
+ return -1;
+ }
+
+
+ public static int delete(RowInfo rowInfo) {
+ OracleConnection con = null;
+ try {
+ con = OpenConn();
+ StringBuilder sql = new StringBuilder();
+ sql.Append("delete from ").Append(tableName);
+ var rowData = rowInfo.getRowInfo();
+ var keys = rowData.Keys;
+ if (keys.Count > 0) {
+ sql.Append(" where 1=1");
+ foreach (string rowHeader in keys) {
+ sql.Append(" and ").Append(rowHeader).Append("=:").Append(rowHeader);
+ }
+ Console.WriteLine(sql.ToString());
+ OracleCommand cmd = new OracleCommand(sql.ToString(), con);
+ AddParameters(cmd, rowData);
+ //cmd.CommandText = sql;
+ return cmd.ExecuteNonQuery();
+ }
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ DisConnOracle(con);
+ }
+ return -1;
+ }
+
+ public static int update(RowInfo rowInfoOld, RowInfo rowInfoNew) {
+ OracleConnection con = null;
+ try {
+ con = OpenConn();
+ StringBuilder sql = new StringBuilder();
+ sql.Append("update ").Append(tableName);
+ var rowDataOld = rowInfoOld.getRowInfo();
+ var rowDataNew = rowInfoNew.getRowInfo();
+ var keysOld = rowDataOld.Keys;
+ var keysNew = rowDataNew.Keys;
+ if (keysOld.Count > 0 && keysNew.Count > 0) {
+ sql.Append(" set ");
+ foreach (string rowHeaderNew in keysNew) {
+ sql.Append(rowHeaderNew).Append("=:new").Append(rowHeaderNew).Append(",");
+ }
+ sql.Length = sql.Length - 1;
+ sql.Append(" where 1=1");
+ foreach (string rowHeaderOld in keysOld) {
+ sql.Append(" and ").Append(rowHeaderOld).Append("=:old").Append(rowHeaderOld);
+ }
+ Console.WriteLine(sql.ToString());
+ OracleCommand cmd = new OracleCommand(sql.ToString(), con);
+ SortedDictionary rowMap = new SortedDictionary();
+ //cmd.CommandText = sql;
+ foreach (KeyValuePair kv in rowInfoOld.getRowInfo()) {
+ rowMap.Add("old" + kv.Key, kv.Value);
+ }
+ foreach (KeyValuePair kv in rowInfoNew.getRowInfo()) {
+ rowMap.Add("new" + kv.Key, kv.Value);
+ }
+ AddParameters(cmd, rowMap);
+ return cmd.ExecuteNonQuery();
+ }
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ DisConnOracle(con);
+ }
+ return -1;
+ }
+
+ public static RowInfo[] query(RowInfo rowInfo) {
+ OracleConnection con = null;
+ try {
+ con = OpenConn();
+ StringBuilder sql = new StringBuilder();
+ sql.Append("select * from ").Append(tableName);
+ var rowData = rowInfo.getRowInfo();
+ var keys = rowData.Keys;
+ sql.Append(" where 1=1");
+ foreach (string rowHeader in keys) {
+ sql.Append(" and ").Append(rowHeader).Append("=:").Append(rowHeader);
+ }
+ Console.WriteLine(sql.ToString());
+ OracleCommand cmd = new OracleCommand(sql.ToString(), con);
+ AddParameters(cmd, rowData);
+ var reader = cmd.ExecuteReader();
+ List res = new List();
+ while (reader.Read()) {
+ res.Add(new RowInfo(reader));
+ }
+ return res.ToArray();
+ }
+ catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ }
+ finally {
+ DisConnOracle(con);
+ }
+ return null;
+ }
+ }
+}
+
diff --git a/OriginAutoCAD_chint/hello/Tool.cs b/OriginAutoCAD_chint/hello/Tool.cs
new file mode 100644
index 0000000..4a466bf
--- /dev/null
+++ b/OriginAutoCAD_chint/hello/Tool.cs
@@ -0,0 +1,676 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.EditorInput;
+
+using Teamcenter.ClientX;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Services.Strong.Query;
+
+using Teamcenter.Schemas.Soa._2006_03.Exceptions;
+using Teamcenter.Services.Strong.Query._2006_03.SavedQuery;
+
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
+
+using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults;
+
+namespace HelloTeamcenter.hello
+{
+ public class SortMXL:IComparer
+ {
+ public int Compare(MXLClass one, MXLClass two)
+ {
+ return one.Index_num.CompareTo(two.Index_num);
+ }
+ }
+
+ class Tool
+ {
+ private BTLClass btlinfo;
+ private List bomlist = new List();
+ private static User loginuser;
+
+ public static User Loginuser
+ {
+ get { return Tool.loginuser; }
+ set { Tool.loginuser = value; }
+ }
+
+ Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+
+ public BTLClass getBTL(string btlname)
+ {
+ btlinfo = new BTLClass();
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //ed.WriteMessage("名称"+blt.GetType().Name);
+
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ //ed.WriteMessage(ent.GetType().Name + "\n");
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ //ed.WriteMessage(bref.GetType().Name + "====\n");
+ //ed.WriteMessage(bref.Name + "====\n");
+ if (bref.Name == btlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ //ed.WriteMessage("属性:" + aRef.Tag + "属性值:" + aRef.TextString + "\n");
+ if(aRef.Tag == "图号")
+ {
+ btlinfo.Item_id = aRef.TextString;
+ }
+ else if (aRef.Tag == "零/部件名称")
+ {
+ btlinfo.Item_name = aRef.TextString;
+ }
+ else if (aRef.Tag == "项目-产品名称")
+ {
+ btlinfo.Projectname = aRef.TextString;
+ }
+ else if (aRef.Tag == "代号")
+ {
+ btlinfo.Partnumber = aRef.TextString;
+ }
+ else if (aRef.Tag == "比例")
+ {
+ btlinfo.Proportion = aRef.TextString;
+ }
+ else if (aRef.Tag == "图幅")
+ {
+ btlinfo.Mapsheet = aRef.TextString;
+ }
+ else if (aRef.Tag == "版本")
+ {
+ btlinfo.Item_revision_id = aRef.TextString;
+ }
+ else if (aRef.Tag == "重量")
+ {
+ btlinfo.Weight = aRef.TextString;
+ }
+ else if (aRef.Tag == "材料牌号")
+ {
+ btlinfo.Materialgrade = aRef.TextString;
+ }
+ else if (aRef.Tag == "共几页")
+ {
+ btlinfo.Allpage = aRef.TextString;
+ if (btlinfo.Allpage == "")
+ btlinfo.Allpage = "1";
+ }
+ else if (aRef.Tag == "第几页")
+ {
+ btlinfo.Pagenumber = aRef.TextString;
+ if (btlinfo.Pagenumber == "")
+ btlinfo.Pagenumber = "1";
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ tran.Commit();
+ }
+ return btlinfo;
+ }
+
+ public string getQZL(string qzlname)
+ {
+ string hedao = "";
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //ed.WriteMessage("名称"+blt.GetType().Name);
+
+ if (blt.Has(qzlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ //ed.WriteMessage(ent.GetType().Name + "\n");
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ //ed.WriteMessage(bref.GetType().Name + "====\n");
+ //ed.WriteMessage(bref.Name + "====\n");
+ if (bref.Name == qzlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ //ed.WriteMessage("属性:" + aRef.Tag + "属性值:" + aRef.TextString + "\n");
+ if (aRef.Tag == "校核")
+ {
+ hedao = "非核岛";
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ tran.Commit();
+ }
+ return hedao;
+ }
+
+
+ public List getMXL(string mxlname)
+ {
+ bomlist.Clear();
+
+ Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //ed.WriteMessage("名称"+blt.GetType().Name);
+
+ if (blt.Has(mxlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ //ed.WriteMessage(ent.GetType().Name + "\n");
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ //ed.WriteMessage(bref.GetType().Name + "====\n");
+ //ed.WriteMessage(bref.Name + "====\n");
+ if (bref.Name == mxlname)
+ {
+ ed.WriteMessage("块名称:" + bref.Name + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ MXLClass mxlinfo = new MXLClass();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ //ed.WriteMessage("属性:" + aRef.Tag + "属性值:" + aRef.TextString + "\n");
+ if (aRef.Tag == "序号")
+ {
+ mxlinfo.Index = aRef.TextString;
+ mxlinfo.Index_num = Convert.ToInt32(mxlinfo.Index);
+ }
+ else if (aRef.Tag == "图号")
+ {
+ mxlinfo.Item_id = aRef.TextString;
+ }
+ else if (aRef.Tag == "代号")
+ {
+ mxlinfo.Partnumber = aRef.TextString;
+ }
+ else if (aRef.Tag == "名称")
+ {
+ mxlinfo.Name = aRef.TextString;
+ }
+ else if (aRef.Tag == "DESCRIPTION")
+ {
+ mxlinfo.Object_desc = aRef.TextString;
+ }
+ else if (aRef.Tag == "数量")
+ {
+ mxlinfo.Count = aRef.TextString;
+ }
+ else if (aRef.Tag == "材料")
+ {
+ mxlinfo.Material = aRef.TextString;
+ }
+ else if (aRef.Tag == "单重")
+ {
+ mxlinfo.Perweight = aRef.TextString;
+ }
+ else if (aRef.Tag == "总重")
+ {
+ mxlinfo.Tolweight = aRef.TextString;
+ }
+ else if (aRef.Tag == "备注")
+ {
+ mxlinfo.Memo = aRef.TextString;
+ }
+ }
+ bomlist.Add(mxlinfo);
+ }
+ }
+ }
+
+ }
+
+ }
+ tran.Commit();
+ }
+ return bomlist;
+ }
+
+ public List sortbomlist(List sortbomlist)
+ {
+ for (int i = 0; i < sortbomlist.Count; i++)
+ {
+ sortbomlist[i].Itemtype = initItemType(sortbomlist[i].Item_id, sortbomlist[i].Material);
+ }
+ sortbomlist.Sort(new SortMXL());
+ return sortbomlist;
+ }
+
+ public string initItemType(string item_id, string material)
+ {
+ string type = "";
+ int pos = item_id.IndexOf("DR");
+ ed.WriteMessage("pos: " + pos + "\n");
+ if (pos >= 0)
+ {
+ string sub = item_id.Substring(pos + 2);
+ ed.WriteMessage("sub :" + sub + "\n");
+ char[] subchar = sub.ToCharArray();
+ int i = 0;
+ if (subchar[i].ToString() == "8")
+ {
+ ed.WriteMessage("是否含有CG-:" + item_id.Contains("CG-").ToString());
+ if (item_id.Contains("CG-"))
+ {
+ type = "D5PruchasePart";
+ return type;
+ }
+ }
+ for (; i < subchar.Length; i++)
+ {
+ if (subchar[i].ToString() == "0")
+ continue;
+ else
+ {
+ if (material == "装配件")
+ {
+ type = "D5AsmPart";
+ return type;
+ }
+ else
+ {
+ type = "D5Part";
+ return type;
+ }
+ }
+ }
+ if (material == "装配件" && i == subchar.Length)
+ {
+ type = "D5Product";
+ }
+ }
+ else
+ {
+ if(item_id.StartsWith("104") || item_id.StartsWith("105"))
+ type = "D5StdFasteners";
+ else if(item_id.StartsWith("TC"))
+ type = "D5CommonParts";
+ else
+ type = "D5Part";
+ }
+
+ return type;
+ }
+
+
+ public string getLOVProductType(string item_id,string itemtype,string hedao)
+ {
+ string productTypes = "";
+ if (itemtype == "D5Product")
+ {
+ if (hedao == "非核岛")
+ productTypes = "117";
+ else
+ productTypes = "116";
+ }
+ else if (itemtype == "D5AsmPart")
+ {
+ if (hedao == "非核岛")
+ productTypes = "115";
+ else
+ productTypes = "114";
+ }
+ else if (itemtype == "D5Part")
+ {
+ if (hedao == "非核岛")
+ productTypes = "113";
+ else
+ productTypes = "112";
+ }
+ else if (itemtype == "D5StdFasteners")
+ {
+ if(item_id.StartsWith("104"))
+ productTypes = "104";
+ else
+ productTypes = "105";
+ }
+ else if (itemtype == "D5CommonPartss")
+ {
+ if (item_id.StartsWith("120"))
+ productTypes = "120";
+ else
+ productTypes = "121";
+ }//此处需要增加D5PruchasePart类型的核岛判断
+ return productTypes;
+ }
+
+
+
+ public SavedQueryResults getSearchItem(string item_id)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("D5Item ID"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'D5Item ID' query.\n");
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "Item ID" };
+ savedQueryInput[0].Entries = new String[] { "零组件 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = item_id;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:"+ found.NumOfObjects +"\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ public SavedQueryResults getSearchItem(string item_id,string name,string type,string owner)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("D5SearchForItem"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'D5SearchForItem' query.\n");
+ }
+
+ try
+ {
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "Name", "Item ID", "Type", "Owning User" };
+ savedQueryInput[0].Entries = new String[] { "名称", "零组件 ID", "类型", "所有权用户" };
+ savedQueryInput[0].Values = new String[4];
+ savedQueryInput[0].Values[0] = name;
+ savedQueryInput[0].Values[1] = item_id;
+ savedQueryInput[0].Values[2] = type;
+ savedQueryInput[0].Values[3] = owner;
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ public SavedQueryResults getSearchUser()
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("D5SearchForUser"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'D5SearchForUser' query.\n");
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "User Id" };
+ savedQueryInput[0].Entries = new String[] { "用户 ID" };
+ savedQueryInput[0].Values = new String[1];
+ savedQueryInput[0].Values[0] = "*";
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Users:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+
+ public SavedQueryResults getSearchType(string d5MaterialGrades)
+ {
+ ImanQuery query = null;
+ SavedQueryService queryService = SavedQueryService.getService(Session.getConnection());
+ try
+ {
+ GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries();
+ if (savedQueries.Queries.Length == 0)
+ {
+ ed.WriteMessage("There are no saved queries in the system.\n");
+ }
+ for (int i = 0; i < savedQueries.Queries.Length; i++)
+ {
+
+ if (savedQueries.Queries[i].Name.Equals("D5SearchForType"))
+ {
+ query = savedQueries.Queries[i].Query;
+ break;
+ }
+ }
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("GetSavedQueries service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+
+ if (query == null)
+ {
+ ed.WriteMessage("There is not an 'D5SearchForType' query.\n");
+ }
+
+ try
+ {
+ // Search for all Items, returning a maximum of 25 objects
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1];
+ savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput();
+ savedQueryInput[0].Query = query;
+ //savedQueryInput[0].Entries = new String[] { "Name", "Type" };
+ savedQueryInput[0].Entries = new String[] { "名称", "类型" };
+ savedQueryInput[0].Values = new String[2];
+ savedQueryInput[0].Values[0] = d5MaterialGrades;
+ savedQueryInput[0].Values[1] = "D5MaterialGrade";
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput);
+
+ Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0];
+
+ ed.WriteMessage("Found Type:" + found.NumOfObjects + "\n");
+ return found;
+ }
+ catch (ServiceException e)
+ {
+ ed.WriteMessage("ExecuteSavedQuery service request failed.\n");
+ ed.WriteMessage(e.Message);
+ return null;
+ }
+ }
+
+ public Hashtable getTCPreferences(string prefername)
+ {
+ Hashtable prefValues = new Hashtable();
+ SessionService sessionservice = SessionService.getService(Session.getConnection());
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[] prefNames = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames[1];
+ Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames scopedPref = new Teamcenter.Services.Strong.Core._2007_01.Session.ScopedPreferenceNames();
+ scopedPref.Names = new String[]{ prefername };
+ scopedPref.Scope = "site";
+ prefNames[0] = scopedPref;
+
+
+ Teamcenter.Services.Strong.Core._2007_01.Session.MultiPreferencesResponse resp = sessionservice.GetPreferences(prefNames);
+ Teamcenter.Services.Strong.Core._2007_01.Session.ReturnedPreferences[] preferenceResp = resp.Preferences;
+ prefValues.Add(preferenceResp[0].Name, preferenceResp[0].Values);
+ //string temp = preferenceResp[0].Name.ToString();
+ //string[] value = (string[])prefValues[preferenceResp[0].Name.ToString()];
+
+ return prefValues;
+ }
+
+ //分割字符串,取出对应类型的Item的ID
+ public string getCorrespondItemID(string type,string[] tempprevalues)
+ {
+ string itemid = "";
+ Hashtable temptable = new Hashtable();
+ for (int i = 0; i < tempprevalues.Length; i++)
+ {
+ string tempvalueline = tempprevalues[i];
+ string[] tempvalue = tempvalueline.Split('=');
+ temptable.Add(tempvalue[0].ToString(), tempvalue[1].ToString());
+ }
+
+ if (temptable.Count <= 0)
+ itemid = "";
+ else
+ {
+ if (temptable.ContainsKey(type))
+ {
+ itemid = (string)temptable[type];
+ }
+ }
+ return itemid;
+ }
+
+ }
+
+}
diff --git a/OriginAutoCAD_chint/logo[1].jpg b/OriginAutoCAD_chint/logo[1].jpg
new file mode 100644
index 0000000..0e302f2
Binary files /dev/null and b/OriginAutoCAD_chint/logo[1].jpg differ
diff --git a/OriginAutoCAD_chint/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs b/OriginAutoCAD_chint/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..5d01041
--- /dev/null
+++ b/OriginAutoCAD_chint/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")]
diff --git a/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.dll b/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.dll
new file mode 100644
index 0000000..3dd701a
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.pdb b/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.pdb
new file mode 100644
index 0000000..4aa2a10
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/DFHMAutocad.pdb differ
diff --git a/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..8990d1b
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..00373f1
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.Properties.Resources.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.Properties.Resources.resources
new file mode 100644
index 0000000..99713b6
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.Properties.Resources.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.AssemblyReference.cache b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..c6cff90
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.AssemblyReference.cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.CoreCompileInputs.cache b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..41f13d8
--- /dev/null
+++ b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+235ead92826d93425187a0093592978e498bcfda
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.FileListAbsolute.txt b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..ac3133f
--- /dev/null
+++ b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.FileListAbsolute.txt
@@ -0,0 +1,626 @@
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\HelloTeamcenter.pdb
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaClient.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaCommon.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaCoreStrong.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaCoreTypes.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaQueryStrong.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaQueryTypes.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\TcSoaStrongModel.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\Teamcenter_SSOloader.dll
+D:\soa_client\net\samples\HelloTeamcenter\obj\Debug\ResolveAssemblyReference.cache
+D:\soa_client\net\samples\HelloTeamcenter\obj\Debug\HelloTeamcenter.pdb
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\HelloTeamcenter.dll.config
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\HelloTeamcenter.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\acdbmgd.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\acmgd.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\Autodesk.AutoCAD.Interop.Common.dll
+D:\soa_client\net\samples\HelloTeamcenter\bin\Debug\Autodesk.AutoCAD.Interop.dll
+D:\soa_client\net\samples\HelloTeamcenter\obj\Debug\HelloTeamcenter.dll
+D:\HelloTeamcenter\bin\Debug\acdbmgd.dll
+D:\HelloTeamcenter\bin\Debug\acmgd.dll
+D:\HelloTeamcenter\bin\Debug\Autodesk.AutoCAD.Interop.Common.dll
+D:\HelloTeamcenter\bin\Debug\Autodesk.AutoCAD.Interop.dll
+D:\HelloTeamcenter\obj\Debug\ResolveAssemblyReference.cache
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.Login.resources
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+D:\HelloTeamcenter\bin\Debug\TcSoaDocumentManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaDocumentManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\log4net.dll
+D:\HelloTeamcenter\bin\Debug\FCCNetClientProxyv80.dll
+D:\HelloTeamcenter\bin\Debug\FMSNetTicketv80.dll
+D:\HelloTeamcenter\bin\Debug\FSCNetClientProxyv80.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaFMS.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAdministrationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAdministrationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAiStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAiTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAllocationsStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAllocationsTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsbAsmAlignmentStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsbAsmAlignmentTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsBuiltStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsBuiltTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsMaintainedStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAsMaintainedTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAuthorizedDataAccessStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaAuthorizedDataAccessTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaBomStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaBomTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaBusinessModelerStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaBusinessModelerTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCadBomAlignmentStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCadBomAlignmentTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCadStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCadTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCaeStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCaeTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCalendarManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaCalendarManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaChangeManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaChangeManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaClassificationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaClassificationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaConfigurationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaConfigurationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaGlobalMultiSiteStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaGlobalMultiSiteTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaImportExportStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaImportExportTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaIssueManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaIssueManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaManufacturingStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaManufacturingTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaMESStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaMESTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaMultisiteStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaMultisiteTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaParameterManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaParameterManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaProductionManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaProductionManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaProjectManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaProjectManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaRdvStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaRdvTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaReportsStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaReportsTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaRequirementsManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaRequirementsManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSrmIntegrationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSrmIntegrationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelAcadGmo.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelAdsFoundation.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelAsBuilt.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelAsMaintained.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelBrndMgmt.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCba.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCcdm.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCm.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtEbop.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtEmserver.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtPadTwp.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtBase.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtDita.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtS1000d.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelCpgMaterials.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelDpv.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEdaLibrary.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEdaServer.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEmps.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsddm.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsddmScm.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmBase.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmProcessor.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmSoftware.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelFpMgmt.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelGmdpv.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelGmo.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelHrn.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelIssueManagement.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelMES.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelMROCore.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelPkgArt.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelProductVariant.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelScdt.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelScmCc.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceEventManagement.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceProcessing.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceRequest.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelSpecMgr.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelTcae.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelTransactionProcessing.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStrongModelVendorManagement.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStructureManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaStructureManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSvcProcessingStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSvcProcessingTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSvcRequestStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaSvcRequestTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaTranslationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaTranslationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaValidationStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaValidationTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaVendorManagementStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaVendorManagementTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaWireHarnessStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaWireHarnessTypes.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaWorkflowStrong.dll
+D:\HelloTeamcenter\bin\Debug\TcSoaWorkflowTypes.dll
+D:\HelloTeamcenter\bin\Debug\Teamcenter_SSO.dll
+D:\HelloTeamcenter\bin\Debug\Teamcenter_SSOloader.dll
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.Search.resources
+D:\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+D:\HelloTeamcenter\bin\Debug\DFHMAutocad.dll.config
+D:\HelloTeamcenter\bin\Debug\DFHMAutocad.dll
+D:\HelloTeamcenter\bin\Debug\DFHMAutocad.pdb
+D:\HelloTeamcenter\obj\Debug\DFHMAutocad.dll
+D:\HelloTeamcenter\obj\Debug\DFHMAutocad.pdb
+E:\新建文件夹\HelloTeamcenter\bin\Debug\DFHMAutocad.dll.config
+E:\新建文件夹\HelloTeamcenter\bin\Debug\DFHMAutocad.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\DFHMAutocad.pdb
+E:\新建文件夹\HelloTeamcenter\bin\Debug\FCCNetClientProxyv80.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\FMSNetTicketv80.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\FSCNetClientProxyv80.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\log4net.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAdministrationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAdministrationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAiStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAiTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAllocationsStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAllocationsTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsbAsmAlignmentStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsbAsmAlignmentTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsBuiltStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsBuiltTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsMaintainedStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAsMaintainedTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAuthorizedDataAccessStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaAuthorizedDataAccessTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaBomStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaBomTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaBusinessModelerStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaBusinessModelerTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCadBomAlignmentStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCadBomAlignmentTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCadStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCadTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCaeStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCaeTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCalendarManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaCalendarManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaChangeManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaChangeManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaClassificationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaClassificationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaConfigurationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaConfigurationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaDocumentManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaDocumentManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaFMS.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaGlobalMultiSiteStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaGlobalMultiSiteTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaImportExportStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaImportExportTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaIssueManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaIssueManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaManufacturingStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaManufacturingTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaMESStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaMESTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaMultisiteStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaMultisiteTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaParameterManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaParameterManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaProductionManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaProductionManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaProjectManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaProjectManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaRdvStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaRdvTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaReportsStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaReportsTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaRequirementsManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaRequirementsManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSrmIntegrationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSrmIntegrationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelAcadGmo.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelAdsFoundation.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelAsBuilt.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelAsMaintained.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelBrndMgmt.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCba.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCcdm.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCm.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtEbop.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtEmserver.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCmtPadTwp.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtBase.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtDita.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelContmgmtS1000d.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelCpgMaterials.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelDpv.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEdaLibrary.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEdaServer.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEmps.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsddm.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsddmScm.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmBase.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmProcessor.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelEsmSoftware.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelFpMgmt.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelGmdpv.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelGmo.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelHrn.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelIssueManagement.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelMES.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelMROCore.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelPkgArt.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelProductVariant.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelScdt.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelScmCc.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceEventManagement.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceProcessing.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelServiceRequest.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelSpecMgr.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelTcae.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelTransactionProcessing.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStrongModelVendorManagement.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStructureManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaStructureManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSvcProcessingStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSvcProcessingTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSvcRequestStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaSvcRequestTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaTranslationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaTranslationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaValidationStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaValidationTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaVendorManagementStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaVendorManagementTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaWireHarnessStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaWireHarnessTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaWorkflowStrong.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\TcSoaWorkflowTypes.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\Teamcenter_SSO.dll
+E:\新建文件夹\HelloTeamcenter\bin\Debug\Teamcenter_SSOloader.dll
+E:\新建文件夹\HelloTeamcenter\obj\Debug\ResolveAssemblyReference.cache
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.Login.resources
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.form.Search.resources
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+E:\新建文件夹\HelloTeamcenter\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+E:\新建文件夹\HelloTeamcenter\obj\Debug\DFHMAutocad.dll
+E:\新建文件夹\HelloTeamcenter\obj\Debug\DFHMAutocad.pdb
+E:\新建文件夹\OriginAutoCAD\bin\Debug\FCCNetClientProxyv80.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\FMSNetTicketv80.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\FSCNetClientProxyv80.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\log4net.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAdministrationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAdministrationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAiStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAiTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAllocationsStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAllocationsTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsbAsmAlignmentStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsbAsmAlignmentTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsBuiltStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsBuiltTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsMaintainedStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAsMaintainedTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAuthorizedDataAccessStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaAuthorizedDataAccessTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaBomStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaBomTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaBusinessModelerStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaBusinessModelerTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCadBomAlignmentStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCadBomAlignmentTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCadStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCadTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCaeStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCaeTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCalendarManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaCalendarManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaChangeManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaChangeManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaClassificationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaClassificationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaConfigurationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaConfigurationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaDocumentManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaDocumentManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaFMS.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaGlobalMultiSiteStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaGlobalMultiSiteTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaImportExportStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaImportExportTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaIssueManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaIssueManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaManufacturingStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaManufacturingTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaMESStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaMESTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaMultisiteStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaMultisiteTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaParameterManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaParameterManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaProductionManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaProductionManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaProjectManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaProjectManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaRdvStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaRdvTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaReportsStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaReportsTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaRequirementsManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaRequirementsManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSrmIntegrationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSrmIntegrationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelAcadGmo.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelAdsFoundation.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelAsBuilt.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelAsMaintained.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelBrndMgmt.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCba.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCcdm.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCm.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCmtEbop.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCmtEmserver.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCmtPadTwp.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelContmgmtBase.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelContmgmtDita.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelContmgmtS1000d.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelCpgMaterials.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelDpv.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEdaLibrary.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEdaServer.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEmps.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEsddm.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEsddmScm.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEsmBase.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEsmProcessor.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelEsmSoftware.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelFpMgmt.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelGmdpv.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelGmo.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelHrn.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelIssueManagement.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelMES.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelMROCore.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelPkgArt.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelProductVariant.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelScdt.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelScmCc.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelServiceEventManagement.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelServiceProcessing.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelServiceRequest.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelSpecMgr.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelTcae.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelTransactionProcessing.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStrongModelVendorManagement.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStructureManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaStructureManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSvcProcessingStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSvcProcessingTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSvcRequestStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaSvcRequestTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaTranslationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaTranslationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaValidationStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaValidationTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaVendorManagementStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaVendorManagementTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaWireHarnessStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaWireHarnessTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaWorkflowStrong.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\TcSoaWorkflowTypes.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\Teamcenter_SSO.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\Teamcenter_SSOloader.dll
+E:\新建文件夹\OriginAutoCAD\obj\Debug\ResolveAssemblyReference.cache
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+E:\新建文件夹\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+E:\新建文件夹\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+E:\新建文件夹\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+E:\新建文件夹\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+E:\新建文件夹\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+E:\新建文件夹\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\accoremgd.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\acdbmgd.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\acmgd.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcDx.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcDxPublishUi.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AdWindows.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcWelcomeScreen.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcMr.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcWindows.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcTcMgd.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcCui.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\ManagedMC3.dll
+F:\Connor(项目管理)\东睦项目\OriginAutoCAD\bin\Debug\AcMNUParser.dll
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\金卡项目\AutoCad集成\OriginAutoCAD\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\万向PLM\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+F:\Connor(项目管理)\康华\AutoCAD源码\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+C:\MyCode\KH\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+C:\MyCode\KH\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+C:\MyCode\KH\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+C:\MyCode\KH\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\bin\Debug\OriginAutocad.dll.config
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\bin\Debug\OriginAutocad.dll
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\bin\Debug\OriginAutocad.pdb
+C:\bin\Debug\OriginAutocad.dll.config
+C:\bin\Debug\OriginAutocad.dll
+C:\bin\Debug\OriginAutocad.pdb
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Login.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.form.Search.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.hello.QAData.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\OriginAutocad.dll
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\OriginAutocad.pdb
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\Interop.AXDBLib.dll
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\Interop.GEAuto.dll
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\Interop.SymBBAuto.dll
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+C:\projects-vs\OriginAutoCAD_20180506\OriginAutoCAD\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\Interop.AXDBLib.dll
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\Interop.GEAuto.dll
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\Interop.SymBBAuto.dll
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+C:\projects-vs\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+C:\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+C:\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll
+C:\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.pdb
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\Interop.AXDBLib.dll
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\Interop.GEAuto.dll
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\Interop.SymBBAuto.dll
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+C:\projects-vs\正泰CAD集成\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.UploadFile.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\Interop.AXDBLib.dll
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.UploadFile.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+D:\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+D:\Autodesk\AutoCAD 2014\OriginAutocad.dll
+D:\Autodesk\AutoCAD 2014\OriginAutocad.pdb
+D:\项目\正泰\CAD集成\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+C:\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+C:\Autodesk\AutoCAD 2014\OriginAutocad.dll
+C:\Autodesk\AutoCAD 2014\OriginAutocad.pdb
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csprojAssemblyReference.cache
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.UploadFile.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.cache
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.CoreCompileInputs.cache
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+C:\Users\86183\Desktop\项目代码\正泰项目\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+C:\Users\86183\Desktop\项目代码\正泰项目\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll
+C:\Users\86183\Desktop\项目代码\正泰项目\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.pdb
+C:\Users\86183\Desktop\项目代码\正泰项目\CHINT-PLM-CAD-master\chint-plm-cad\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.CopyComplete
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.UploadFile.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.cache
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.CoreCompileInputs.cache
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+D:\正泰\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+D:\正泰\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll
+D:\正泰\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.pdb
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.CopyComplete
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.ErrMessage.resources
+D:\正泰\江林\正泰\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.ErrMes2.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csprojResolveAssemblyReference.cache
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.ResolveComReference.cache
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.ErrMes2.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.ErrMessage.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Login.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.OpenFromTC.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.SaveToTC.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.UploadFile.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.form.Search.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.hello.QAData.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.Properties.Resources.resources
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\HelloTeamcenter.csproj.GenerateResource.Cache
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\OriginAutocad.dll
+Z:\TC_install\ZhengTai\c\OriginAutoCAD_chint\obj\Debug\OriginAutocad.pdb
+Z:\TC_install\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll.config
+Z:\TC_install\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.dll
+Z:\TC_install\Program Files\Autodesk\AutoCAD 2014\OriginAutocad.pdb
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.GenerateResource.Cache b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.GenerateResource.Cache
new file mode 100644
index 0000000..7adf408
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csproj.GenerateResource.Cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csprojResolveAssemblyReference.cache b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csprojResolveAssemblyReference.cache
new file mode 100644
index 0000000..8cd747d
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.csprojResolveAssemblyReference.cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMes2.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMes2.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMes2.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMessage.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMessage.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.ErrMessage.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Login.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Login.resources
new file mode 100644
index 0000000..b3874b5
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Login.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.OpenFromTC.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.OpenFromTC.resources
new file mode 100644
index 0000000..908fdaa
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.OpenFromTC.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.SaveToTC.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.SaveToTC.resources
new file mode 100644
index 0000000..698d22e
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.SaveToTC.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Search.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Search.resources
new file mode 100644
index 0000000..698d22e
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.Search.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.UploadFile.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.UploadFile.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.form.UploadFile.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.hello.QAData.resources b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.hello.QAData.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/HelloTeamcenter.hello.QAData.resources differ
diff --git a/OriginAutoCAD_chint/obj/Debug/Interop.AXDBLib.dll b/OriginAutoCAD_chint/obj/Debug/Interop.AXDBLib.dll
new file mode 100644
index 0000000..3cb970f
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/Interop.AXDBLib.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/Interop.AcadmAuto.dll b/OriginAutoCAD_chint/obj/Debug/Interop.AcadmAuto.dll
new file mode 100644
index 0000000..e230c67
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/Interop.AcadmAuto.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/Interop.GEAuto.dll b/OriginAutoCAD_chint/obj/Debug/Interop.GEAuto.dll
new file mode 100644
index 0000000..e417db3
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/Interop.GEAuto.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/Interop.SymBBAuto.dll b/OriginAutoCAD_chint/obj/Debug/Interop.SymBBAuto.dll
new file mode 100644
index 0000000..65c0b8d
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/Interop.SymBBAuto.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/OriginAutocad.dll b/OriginAutoCAD_chint/obj/Debug/OriginAutocad.dll
new file mode 100644
index 0000000..68a434e
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/OriginAutocad.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/OriginAutocad.pdb b/OriginAutoCAD_chint/obj/Debug/OriginAutocad.pdb
new file mode 100644
index 0000000..632d9de
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/OriginAutocad.pdb differ
diff --git a/OriginAutoCAD_chint/obj/Debug/ResolveAssemblyReference.cache b/OriginAutoCAD_chint/obj/Debug/ResolveAssemblyReference.cache
new file mode 100644
index 0000000..1c7cb02
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/ResolveAssemblyReference.cache differ
diff --git a/OriginAutoCAD_chint/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/OriginAutoCAD_chint/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
new file mode 100644
index 0000000..67dfa5d
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 0000000..e69de29
diff --git a/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 0000000..e69de29
diff --git a/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/OriginAutoCAD_chint/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 0000000..e69de29
diff --git a/OriginAutoCAD_chint/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/OriginAutoCAD_chint/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..ab54755
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/OriginAutoCAD_chint/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/OriginAutoCAD_chint/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
new file mode 100644
index 0000000..b8f5ad7
Binary files /dev/null and b/OriginAutoCAD_chint/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/OriginAutoCAD_chint/originCAD.cuix b/OriginAutoCAD_chint/originCAD.cuix
new file mode 100644
index 0000000..7aa3c19
Binary files /dev/null and b/OriginAutoCAD_chint/originCAD.cuix differ
diff --git a/OriginAutoCAD_chint/res/FOLDER.ICO b/OriginAutoCAD_chint/res/FOLDER.ICO
new file mode 100644
index 0000000..5ef86b9
Binary files /dev/null and b/OriginAutoCAD_chint/res/FOLDER.ICO differ
diff --git a/OriginAutoCAD_chint/res/FOLDEROP.ICO b/OriginAutoCAD_chint/res/FOLDEROP.ICO
new file mode 100644
index 0000000..33123f5
Binary files /dev/null and b/OriginAutoCAD_chint/res/FOLDEROP.ICO differ
diff --git a/OriginAutoCAD_chint/res/Newstuff_Folder.png b/OriginAutoCAD_chint/res/Newstuff_Folder.png
new file mode 100644
index 0000000..55c4ba5
Binary files /dev/null and b/OriginAutoCAD_chint/res/Newstuff_Folder.png differ
diff --git a/OriginAutoCAD_chint/res/autocad_01.ico b/OriginAutoCAD_chint/res/autocad_01.ico
new file mode 100644
index 0000000..60e932a
Binary files /dev/null and b/OriginAutoCAD_chint/res/autocad_01.ico differ
diff --git a/OriginAutoCAD_chint/res/cad.ico b/OriginAutoCAD_chint/res/cad.ico
new file mode 100644
index 0000000..bf6bc10
Binary files /dev/null and b/OriginAutoCAD_chint/res/cad.ico differ
diff --git a/OriginAutoCAD_chint/res/item.ico b/OriginAutoCAD_chint/res/item.ico
new file mode 100644
index 0000000..ef9ef7e
Binary files /dev/null and b/OriginAutoCAD_chint/res/item.ico differ
diff --git a/OriginAutoCAD_chint/res/itemrev.ico b/OriginAutoCAD_chint/res/itemrev.ico
new file mode 100644
index 0000000..31f1b57
Binary files /dev/null and b/OriginAutoCAD_chint/res/itemrev.ico differ
diff --git a/OriginAutoCAD_chint/res/login.bmp b/OriginAutoCAD_chint/res/login.bmp
new file mode 100644
index 0000000..724a134
Binary files /dev/null and b/OriginAutoCAD_chint/res/login.bmp differ
diff --git a/OriginAutoCAD_chint/res/mail.ico b/OriginAutoCAD_chint/res/mail.ico
new file mode 100644
index 0000000..39fdbcd
Binary files /dev/null and b/OriginAutoCAD_chint/res/mail.ico differ
diff --git a/OriginAutoCAD_chint/res/tai.ico b/OriginAutoCAD_chint/res/tai.ico
new file mode 100644
index 0000000..aa14181
Binary files /dev/null and b/OriginAutoCAD_chint/res/tai.ico differ
diff --git a/OriginAutoCAD_chint/upload/BomBean2.cs b/OriginAutoCAD_chint/upload/BomBean2.cs
new file mode 100644
index 0000000..413d4cc
--- /dev/null
+++ b/OriginAutoCAD_chint/upload/BomBean2.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HelloTeamcenter.upload
+{
+ public class BomBean2 : IComparable
+ {
+ public string index { get; set; }
+ public Dictionary bomProps { get; set; }
+
+ int IComparable.CompareTo(BomBean2 other)
+ {
+ if (string.IsNullOrWhiteSpace(index))
+ {
+ return -1;
+ }
+ if (other == null || string.IsNullOrWhiteSpace(other.index))
+ {
+ return 1;
+ }
+ int myInd = -1;
+ int otherInd = -1;
+ Int32.TryParse(index, out myInd);
+ Int32.TryParse(other.index, out otherInd);
+ return myInd - otherInd;
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/upload/ConnorReadFile.cs b/OriginAutoCAD_chint/upload/ConnorReadFile.cs
new file mode 100644
index 0000000..c60c26e
--- /dev/null
+++ b/OriginAutoCAD_chint/upload/ConnorReadFile.cs
@@ -0,0 +1,839 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using Autodesk.AutoCAD.DatabaseServices;
+using Autodesk.AutoCAD.Runtime;
+using Autodesk.AutoCAD.Geometry;
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.EditorInput;
+using Teamcenter.Soa.Client.Model.Strong;
+using System.Configuration;
+using System.Reflection;
+using HelloTeamcenter.hello;
+
+namespace UploadFiles
+{
+
+ class ConnorReadFile
+ {
+ public const string CHINTMXL = "CHINTMXL";
+ public const string CHINTTRMXL = "CHINTTRMXL";
+
+ public class BomBean : IComparable
+ {
+ public string itemId { get; set; }
+ public string revId { get; set; }
+ public string objec_name { get; set; }
+ public string index { get; set; }
+ public ItemRevision rev { get; set; }
+ public Hashtable bomProps { get; set; }
+
+ public override string ToString()
+ {
+ if (string.IsNullOrWhiteSpace(revId))
+ {
+ return itemId;
+ }
+ else
+ {
+ return itemId + "/" + revId;
+ }
+ }
+
+
+ int IComparable.CompareTo(BomBean other)
+ {
+ if (string.IsNullOrWhiteSpace(index))
+ {
+ return -1;
+ }
+ if (other == null || string.IsNullOrWhiteSpace(other.index))
+ {
+ return 1;
+ }
+ int myInd = -1;
+ int otherInd = -1;
+ Int32.TryParse(index, out myInd);
+ Int32.TryParse(other.index, out otherInd);
+ return myInd - otherInd;
+ }
+ }
+
+ private Database db;
+
+ public ConnorReadFile(Database db)
+ {
+ this.db = db;
+ }
+
+ public OriginBTL OriginReadBTL(string filepath, string btlname)
+ {
+ OriginBTL btlinfo = new OriginBTL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ // ConnorUtils.WriteLog("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString());
+ }
+ else
+ {
+ ConnorUtils.WriteLog("请确认标题栏.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ string tempbtlname = xeonetitle.GetAttribute("blockname").ToString();
+ if (tempbtlname == btlname)
+ {
+ //获得title子节点
+ XmlNodeList onetitleinfo = xeonetitle.ChildNodes;
+
+ btlinfo.Btlname = btlname;
+ foreach (XmlNode node in onetitleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ string titletype = "";
+ string titlecad = "";
+ string titletc = "";
+ string titlewriteable = "";
+ string titleupdateable = "";
+ string titlefromtc = "";
+ if (xeone.HasAttribute("type"))
+ {
+ titletype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ titlecad = xeone.GetAttribute("cad").ToString();
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ titletc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("writeable"))
+ {
+ titlewriteable = xeone.GetAttribute("writeable").ToString();
+ }
+ if (xeone.HasAttribute("updateable"))
+ {
+ titleupdateable = xeone.GetAttribute("updateable").ToString();
+ }
+ if (xeone.HasAttribute("fromtc"))
+ {
+ titlefromtc = xeone.GetAttribute("fromtc").ToString();
+ }
+ btlinfo.Btldatatable = TableHasKey(btlinfo.Btldatatable, titlecad, "");
+ btlinfo.Btltctable = TableHasKey(btlinfo.Btltctable, titlecad, titletc);
+ btlinfo.Btltypetable = TableHasKey(btlinfo.Btltypetable, titlecad, titletype);
+ btlinfo.Btlwritetable = TableHasKey(btlinfo.Btlwritetable, titlecad, titlewriteable);
+ btlinfo.Btlupdatetable = TableHasKey(btlinfo.Btlupdatetable, titlecad, titleupdateable);
+ btlinfo.Btlfromtctable = TableHasKey(btlinfo.Btlfromtctable, titlecad, titlefromtc);
+ }
+ }
+ }
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return btlinfo;
+ }
+
+ public ArrayList OriginReadBTLXML(string filepath)
+ {
+ ArrayList listbtl = new ArrayList();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "标题栏.xml";
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (xeonetitle.HasAttribute("blockname"))
+ {
+ // ConnorUtils.WriteLog("标题栏块名称:" + xeonetitle.GetAttribute("blockname").ToString());
+ }
+ else
+ {
+ ConnorUtils.WriteLog("请确认标题栏.xml文件配置含有blockname属性\n");
+ return listbtl;
+ }
+ string btlname = xeonetitle.GetAttribute("blockname").ToString();
+ OriginBTL btlinfo = GetTitleInfo(filepath, btlname);
+ if (btlinfo != null)
+ listbtl.Add(btlinfo);
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return listbtl;
+ }
+
+ //获取明细表.XML信息,将信息与OriginMXL对应
+ public List OriginReadMXLXML(string filepath)
+ {
+ List listmxl = new List();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ filepath = filepath + "明细表.xml";
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+ string mxlname = "";
+
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ // ConnorUtils.WriteLog("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString());
+ mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ }
+ else
+ {
+ ConnorUtils.WriteLog("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ }
+ listmxl = GetMXLInfo(filepath, mxlname);
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ ConnorUtils.WriteLog("获取明细表信息出错:\n"+ex.Message);
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+
+ return listmxl;
+ }
+
+ public OriginMXL OriginReadMXL(string filepath)
+ {
+ OriginMXL mxlinfo = new OriginMXL();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList xmlmxllist = xmldocument.SelectSingleNode("BomLines").ChildNodes;
+ foreach (XmlNode bomline in xmlmxllist)
+ {
+ //获得一个bomline
+ XmlElement xeonebomline = (XmlElement)bomline;
+ if (xeonebomline.HasAttribute("blockname"))
+ {
+ // ConnorUtils.WriteLog("明细栏块名称:" + xeonebomline.GetAttribute("blockname").ToString());
+ }
+ else
+ {
+ ConnorUtils.WriteLog("请确认明细表.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ //获得bomline子节点
+ XmlNodeList onebomlineinfo = xeonebomline.ChildNodes;
+
+ mxlinfo.Mxlname = xeonebomline.GetAttribute("blockname").ToString();
+ foreach (XmlNode node in onebomlineinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+
+ string bomlinetype = "";
+ string bomlinecad = "";
+ string bomlinetc = "";
+ string isbomline = "";
+ string updatebomline = "";
+
+ if (xeone.HasAttribute("type"))
+ {
+ bomlinetype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ bomlinecad = xeone.GetAttribute("cad").ToString();
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ bomlinetc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("is_bomline"))
+ {
+ isbomline = xeone.GetAttribute("is_bomline").ToString();
+ }
+ if (xeone.HasAttribute("overwrite"))
+ {
+ updatebomline = xeone.GetAttribute("overwrite").ToString();
+ }
+ mxlinfo.Mxltypetable = TableHasKey(mxlinfo.Mxltypetable, bomlinecad, bomlinetype);
+ mxlinfo.Mxldatatable = TableHasKey(mxlinfo.Mxldatatable, bomlinecad, "");
+ mxlinfo.Mxltctable = TableHasKey(mxlinfo.Mxltctable, bomlinecad, bomlinetc);
+ mxlinfo.Mxlisbomtable = TableHasKey(mxlinfo.Mxlisbomtable, bomlinecad, isbomline);
+ mxlinfo.Mxlupdatetable = TableHasKey(mxlinfo.Mxlupdatetable, bomlinecad, updatebomline);
+ }
+ }
+
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return mxlinfo;
+ }
+ //获取明细栏信息
+ public List GetMXLInfo(string filepath, string mxlname)
+ {
+ //OriginTool origintool = new OriginTool();
+ List mxllist = new List();
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+ if (blt.Has(mxlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == mxlname)
+ {
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ OriginMXL onemxlinfo = new OriginMXL();
+ onemxlinfo = OriginReadMXL(filepath);
+
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (onemxlinfo.Mxldatatable.ContainsKey(aRef.Tag))
+ {
+ onemxlinfo.Mxldatatable = TableHasKey(onemxlinfo.Mxldatatable, aRef.Tag, aRef.TextString);
+ }
+
+ onemxlinfo.Mxlinfotable = TableHasKey(onemxlinfo.Mxlinfotable, aRef.Tag, aRef.TextString);
+
+ }
+
+ mxllist.Add(onemxlinfo);
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return mxllist;
+ }
+
+
+ public OriginBTL GetTitleInfo(string filepath, string btlname)
+ {
+ OriginBTL btlinfo = new OriginBTL();
+ btlinfo = OriginReadBTL(filepath, btlname);
+ if (btlinfo == null)
+ return null;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ if (bref.AttributeCollection.Count != 0)
+ {
+ IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ if (btlinfo.Btldatatable.ContainsKey(aRef.Tag))
+ {
+ btlinfo.Btldatatable = TableHasKey(btlinfo.Btldatatable, aRef.Tag, aRef.TextString);
+ }
+ btlinfo.Btlinfotable = TableHasKey(btlinfo.Btlinfotable, aRef.Tag, aRef.TextString);
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ return btlinfo;
+ }
+
+
+ public static void SetTitleInfo(string btlname, Hashtable tempvaluetable, Database database)
+ {
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = database.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(database.BlockTableId, OpenMode.ForWrite) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(database.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+ tran.Commit();
+ }
+
+ }
+
+ public void SetTitleInfo_v1(string btlname, Hashtable tempvaluetable)
+ {
+ //Database db = acDoc.Database; // HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
+ if (blt.Has(btlname))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForWrite) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ if (bref.Name == btlname)
+ {
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForWrite);
+ if (tempvaluetable.Contains(aRef.Tag.ToString()))
+ {
+ aRef.TextString = tempvaluetable[aRef.Tag.ToString()].ToString();//aRef.Tag.ToString().ToString();
+ }
+ }
+ }
+ }
+ }
+ }
+ //System.Windows.Forms.MessageBox.Show("属性同步结束!", "提示");
+ }
+ tran.Commit();
+ }
+
+ }
+
+ public static Hashtable TableHasKey(Hashtable target, object key, object value)
+ {
+ if (target.Contains(key))
+ {
+ target.Remove(key);
+ }
+ target.Add(key, value);
+
+ return target;
+ }
+ public static ArrayList readBTLXml(string filepath)
+ {
+ ArrayList listbtl = new ArrayList();
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(filepath, settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点title
+ XmlNodeList xmltitlelist = xmldocument.SelectSingleNode("Titles").ChildNodes;
+ foreach (XmlNode title in xmltitlelist)
+ {
+ //获得一个title
+ XmlElement xeonetitle = (XmlElement)title;
+
+ if (!xeonetitle.HasAttribute("blockname"))
+ {
+ ConnorUtils.WriteLog("请确认标题栏.xml文件配置含有blockname属性\n");
+ return null;
+ }
+ string btlname = xeonetitle.GetAttribute("blockname").ToString();
+ OriginBTL btlinfo = new OriginBTL();
+ btlinfo.Btlname = btlname;
+ XmlNodeList onetitleinfo = xeonetitle.ChildNodes;
+ foreach (XmlNode node in onetitleinfo)
+ {
+ XmlElement xeone = (XmlElement)node;
+ string titletype = "";
+ string titlecad = "";
+ string titletc = "";
+ string titlewriteable = "";
+ string titleupdateable = "";
+ string titlefromtc = "";
+ if (xeone.HasAttribute("type"))
+ {
+ titletype = xeone.GetAttribute("type").ToString();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ titlecad = xeone.GetAttribute("cad").ToString();
+ }
+ if (xeone.HasAttribute("tc"))
+ {
+ titletc = xeone.GetAttribute("tc").ToString();
+ }
+ if (xeone.HasAttribute("writeable"))
+ {
+ titlewriteable = xeone.GetAttribute("writeable").ToString();
+ }
+ if (xeone.HasAttribute("updateable"))
+ {
+ titleupdateable = xeone.GetAttribute("updateable").ToString();
+ }
+ if (xeone.HasAttribute("fromtc"))
+ {
+ titlefromtc = xeone.GetAttribute("fromtc").ToString();
+ }
+ btlinfo.Btldatatable = TableHasKey(btlinfo.Btldatatable, titlecad, "");
+ btlinfo.Btltctable = TableHasKey(btlinfo.Btltctable, titlecad, titletc);
+ btlinfo.Btltypetable = TableHasKey(btlinfo.Btltypetable, titlecad, titletype);
+ btlinfo.Btlwritetable = TableHasKey(btlinfo.Btlwritetable, titlecad, titlewriteable);
+ btlinfo.Btlupdatetable = TableHasKey(btlinfo.Btlupdatetable, titlecad, titleupdateable);
+ btlinfo.Btlfromtctable = TableHasKey(btlinfo.Btlfromtctable, titlecad, titlefromtc);
+ }
+ listbtl.Add(btlinfo);
+ }
+ }
+ catch (System.Exception ex)
+ {
+ xmlreader.Close();
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ return listbtl;
+ }
+
+ public static Dictionary ReadBomConfig(string xmlpath)
+ {
+ XmlReaderSettings settings = null;
+ XmlDocument xmldocument = null;
+ XmlReader xmlreader = null;
+ Dictionary dic = new Dictionary();
+ try
+ {
+ settings = new XmlReaderSettings();
+ settings.IgnoreComments = true; ;//忽略文档里面的注释
+ xmldocument = new XmlDocument();
+ xmlreader = XmlReader.Create(xmlpath + "明细表.xml", settings);
+ xmldocument.Load(xmlreader);
+ //得到根节点的子节点bomline
+ XmlNodeList bomLineList = xmldocument.SelectSingleNode("BomLine").ChildNodes;
+ if (bomLineList == null)
+ {
+ ConnorUtils.WriteLog("请检查明细表.xml文件,没有找到标签");
+ return null;
+ }
+ foreach (XmlNode node in bomLineList)
+ {
+ //获得一个bomline
+ XmlElement xeone = (XmlElement)node;
+ string cad = "";
+ string tc = "";
+ if (xeone.HasAttribute("tc"))
+ {
+ tc = xeone.GetAttribute("tc").ToString().Trim();
+ }
+ if (xeone.HasAttribute("cad"))
+ {
+ cad = xeone.GetAttribute("cad").ToString().Trim();
+ }
+
+ if ("".Equals(tc))
+ {
+ continue;
+ }
+ if ("".Equals(cad))
+ {
+ continue;
+ }
+ if (dic.ContainsKey(tc))
+ {
+ continue;
+ }
+ dic.Add(tc, cad);
+ }
+ }
+ finally
+ {
+ xmlreader.Close();
+ }
+ if (dic.Count == 0)
+ {
+ ConnorUtils.WriteLog("请检查明细表.xml文件,没有找到可用的同步配置");
+ // throw new System.Exception("请检查明细表.xml文件,没有找到可用的同步配置");
+ }
+ if (!dic.ContainsKey("item_id"))
+ {
+ ConnorUtils.WriteLog("请检查明细表.xml文件,没有配置item_id属性");
+ // throw new System.Exception("请检查明细表.xml文件,没有配置item_id属性");
+ }
+ return dic;
+ }
+
+ public static List ReadCADBom2(Dictionary mxlConfig, string itemIdTag, string revIdTag,string objectName, Database db)
+ {
+ List res1 = new List();
+ List res2 = new List();
+ // Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
+ //Database db = HostApplicationServices.WorkingDatabase;
+ using (Transaction tran = db.TransactionManager.StartTransaction())
+ {
+ BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
+ //string mxlname = mxlinfo.Mxlname;
+
+ if (blt.Has(CHINTMXL) || blt.Has(CHINTTRMXL))
+ {
+ BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
+ foreach (ObjectId item in bltr)
+ {
+ Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity;
+ if (ent.GetType().Name == "BlockReference")
+ {
+ BlockReference bref = (BlockReference)ent;
+ string blockName = bref.Name;
+ if (blockName == CHINTMXL || blockName == CHINTTRMXL)
+ {
+ // ed.WriteMessage("块名称:" + blockName + "\n");
+ if (bref.AttributeCollection.Count != 0)
+ {
+ System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator();
+ string itemId = "";
+ string revId = "";
+ string object_name = "";
+ string index = "";
+ Hashtable bomProps = new Hashtable();
+ while (bRefEnum.MoveNext())
+ {
+ ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
+ AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead);
+ string tagName = aRef.Tag;
+ if (string.IsNullOrWhiteSpace(tagName))
+ {
+ continue;
+ }
+ if (tagName.Equals(itemIdTag))
+ {
+ itemId = aRef.TextString;
+ }
+ else if (tagName.Equals(revIdTag))
+ {
+ revId = aRef.TextString;
+ }
+ else if (tagName.Equals(objectName))
+ {
+ object_name = aRef.TextString;
+ }
+ else if (tagName.Equals("序号"))
+ {
+ index = aRef.TextString;
+ }
+ else if (mxlConfig.ContainsValue(tagName))
+ {
+ string tcName = GetKeyFromValue(mxlConfig, tagName);
+ bomProps.Add(tcName, aRef.TextString);
+ }
+ }
+ if (string.IsNullOrWhiteSpace(itemId))
+ {
+ continue;
+ //throw new Exception("请检查明细栏,"+(string.IsNullOrWhiteSpace(index)?"":"序号"+index)+"未填写对象ID");
+ }
+ BomBean bomBean = new BomBean();
+ bomBean.itemId = itemId;
+ bomBean.revId = revId;
+ bomBean.objec_name = object_name;
+ bomBean.index = index;
+ bomBean.bomProps = bomProps;
+ if (blockName == CHINTMXL)
+ {
+ res1.Add(bomBean);
+ }
+ else
+ {
+ res2.Add(bomBean);
+ }
+ }
+ }
+ }
+ }
+ }
+ tran.Commit();
+ }
+ if (res1.Count > 0 && res2.Count > 0)
+ {
+ ConnorUtils.WriteLog("图纸包含两种明细栏类型");
+ // throw new System.Exception("图纸包含两种明细栏类型");
+ }
+ if (res1.Count > 0)
+ {
+ res1.Sort();
+ return res1;
+ }
+ res2.Sort();
+ return res2;
+ }
+ public static string GetKeyFromValue(Dictionary table, string value)
+ {
+ if (table.ContainsValue(value))
+ {
+ foreach (string key in table.Keys)
+ {
+ string val = table[key];
+ if (value.Equals(val))
+ {
+ return key;
+ }
+ }
+ }
+ return null;
+ }
+ public static string getConfigSource(string sectionStr ,string key)
+ {
+
+ var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
+ string path = Assembly.GetExecutingAssembly().Location;
+ AppSettingsSection section = appConfig.Sections.Get(sectionStr) as AppSettingsSection;
+ if (section == null)
+ {
+ ConnorUtils.WriteLog("无法读取");
+ return "";
+ }
+ KeyValueConfigurationElement cif = section.Settings[key];
+ if (cif == null)
+ {
+ ConnorUtils.WriteLog("未配置-->" + key);
+ return "";
+ }
+ return cif.Value == null ? "" : cif.Value;
+ }
+
+ public static string getGroupSource(string groupName)
+ {
+
+ var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
+ string path = Assembly.GetExecutingAssembly().Location;
+ AppSettingsSection section = appConfig.Sections.Get("group") as AppSettingsSection;
+ if (section == null)
+ {
+ ConnorUtils.WriteLog("无法读取");
+ return "";
+ }
+ KeyValueConfigurationElement cif = section.Settings[groupName];
+ if (cif == null)
+ {
+ ConnorUtils.WriteLog("未配置-->" + groupName);
+ return "";
+ }
+ return cif.Value == null ? "" : cif.Value;
+ }
+ }
+}
diff --git a/OriginAutoCAD_chint/upload/ConnorSaveToTC.cs b/OriginAutoCAD_chint/upload/ConnorSaveToTC.cs
new file mode 100644
index 0000000..33dd2dd
--- /dev/null
+++ b/OriginAutoCAD_chint/upload/ConnorSaveToTC.cs
@@ -0,0 +1,1573 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Teamcenter.Services.Strong.Core;
+using Teamcenter.Soa.Client.Model;
+using Session = Teamcenter.ClientX.Session;
+using User = Teamcenter.Soa.Client.Model.Strong.User;
+using Item = Teamcenter.Soa.Client.Model.Strong.Item;
+using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
+using Form = Teamcenter.Soa.Client.Model.Strong.Form;
+using Dataset = Teamcenter.Soa.Client.Model.Strong.Dataset;
+using Teamcenter.Services.Strong.Core._2007_01.DataManagement;
+using System.IO;
+using System.Collections;
+using Teamcenter.Services.Strong.Cad._2007_01.StructureManagement;
+using Autodesk.AutoCAD.ApplicationServices;
+using Autodesk.AutoCAD.DatabaseServices;
+using Oracle.ManagedDataAccess.Client;
+using HelloTeamcenter.hello;
+using KCad;
+using System.Windows.Forms;
+using Autodesk.AutoCAD.Runtime;
+using HelloTeamcenter.form;
+using System.Text.RegularExpressions;
+
+namespace UploadFiles
+{
+ public class UploadBean : IComparable
+ {
+ public string filePath;
+ public string id;
+ public string fileName;
+ public bool hasBom;
+
+ public override string ToString()
+ {
+ return string.Format("{0}", fileName);
+ }
+
+ int IComparable.CompareTo(object obj)
+ {
+
+ if (obj == null) return 1;
+ UploadBean b = obj as UploadBean;
+ if (b == null)
+ {
+ return 1;
+ }
+ if (hasBom)
+ {
+ if (b.hasBom)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ else
+ {
+ if (b.hasBom)
+ {
+ return -1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ }
+
+ class ConnorSaveToTC
+ {
+ //新批量上传
+ public static void UploadFiles2(List files, Hashtable sourcetable, string xmlpath, OracleConnection myConnection)
+ {
+ string btlxml = xmlpath+ "标题栏.xml";
+
+ ConnorUtils.WriteLog("所有文件数量:"+ files.Count);
+
+ ArrayList list = ConnorReadFile.readBTLXml(btlxml);
+ Dictionary dic = ConnorReadFile.ReadBomConfig(xmlpath);
+ List btlList = new List