SoVectorizeAction.3coin4 - Man Page

The SoVectorizeAction class is the base class for vectorizing Coin scene graphs.

Synopsis

#include <Inventor/annex/HardCopy/SoVectorizeAction.h>

Inherits SoCallbackAction.

Inherited by SoVectorizePSAction.

Public Types

enum DimensionUnit { INCH, MM, METER }
enum Orientation { PORTRAIT, LANDSCAPE }
enum PageSize { A0 = 0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 }
enum PointStyle { CIRCLE, SQUARE }
enum ColorTranslationMethod { REVERSE_ONLY_BLACK_AND_WHITE, AS_IS, REVERSE }
enum JoinLineStyle { NO_JOIN, MITERED_JOIN, MITERED_BEVELED_JOIN, BEVELED_JOIN, TRIANGULAR_JOIN, ROUNDED_JOIN }
enum EndLineStyle { BUTT_END, SQUARE_END, TRIANGULAR_END, ROUND_END }
enum HLHSRMode { NO_HLHSR, HLHSR_SIMPLE_PAINTER, HLHSR_PAINTER, HLHSR_PAINTER_SURFACE_REMOVAL, HIDDEN_LINES_REMOVAL }

Public Types inherited from SoCallbackAction
enum Response { CONTINUE, ABORT, PRUNE }
typedef Response SoCallbackActionCB(void *userdata, SoCallbackAction *action, const SoNode *node)

Public Types inherited from SoAction
enum AppliedCode { NODE = 0, PATH = 1, PATH_LIST = 2 }
enum PathCode { NO_PATH = 0, IN_PATH = 1, BELOW_PATH = 2, OFF_PATH = 3 }

Public Member Functions

virtual SoType getTypeId (void) const
SoVectorizeAction (void)
virtual ~SoVectorizeAction ()
SoVectorOutput * getOutput (void) const
virtual void apply (SoNode *node)
virtual void apply (SoPath *path)
virtual void apply (const SoPathList &pathlist, SbBool obeysrules=FALSE)
void beginStandardPage (const PageSize &pagesize, const float border=10.0f)
virtual void beginPage (const SbVec2f &startpagepos, const SbVec2f &pagesize, DimensionUnit u=MM)
virtual void endPage (void)
virtual void calibrate (const SbViewportRegion &vp)
virtual void beginViewport (const SbVec2f &startpos=SbVec2f(-1.0f, 1.0f), const SbVec2f &size=SbVec2f(-1.0f, -1.0f), DimensionUnit u=MM)
virtual void endViewport (void)
virtual void setOrientation (Orientation o)
virtual Orientation getOrientation (void) const
virtual void setBackgroundColor (SbBool bg, const SbColor &col=SbColor(0.0f, 0.0f, 0.0f))
virtual SbBool getBackgroundColor (SbColor &col) const
virtual void setNominalWidth (float w, DimensionUnit u=MM)
virtual float getNominalWidth (DimensionUnit u=MM) const
virtual void setPixelImageSize (float w, DimensionUnit u=MM)
virtual float getPixelImageSize (DimensionUnit u=MM) const
virtual void setPointStyle (const PointStyle &style)
virtual PointStyle getPointStyle (void) const
const SbVec2f & getPageStartpos (void) const
const SbVec2f & getPageSize (void) const
virtual void setDrawingDimensions (const SbVec2f &d, DimensionUnit u=MM)
virtual void setDrawingDimensions (float w, float h, DimensionUnit u=MM)
virtual SbVec2f getDrawingDimensions (DimensionUnit u=MM) const
virtual void setStartPosition (const SbVec2f &p, DimensionUnit u=MM)
virtual void setStartPosition (float x, float y, DimensionUnit u=MM)
virtual SbVec2f getStartPosition (DimensionUnit u=MM) const
virtual void setColorTranslationMethod (ColorTranslationMethod method)
virtual ColorTranslationMethod getColorTranslationMethod (void) const
virtual void setLineEndStyle (EndLineStyle style)
virtual EndLineStyle getLineEndStyle (void) const
virtual void setLineJoinsStyle (JoinLineStyle style)
virtual JoinLineStyle getLineJoinsStyle (void) const
virtual void setHLHSRMode (HLHSRMode mode)
HLHSRMode getHLHSRMode (void) const
virtual void setBorder (float width)
virtual void setBorder (float width, SbColor color)
virtual void setMiterLimit (float limit)
virtual float getMiterLimit (void) const
virtual void setPenDescription (int num_pens, const SbColor *colors=0, const float *widths=0, DimensionUnit u=MM)
virtual void getPenDescription (SbColor *colors, float *widths, DimensionUnit u=MM) const
virtual int getPenNum (void) const
virtual void setColorPriority (SbBool priority)
virtual SbBool getColorPriority (void) const
virtual void enableLighting (SbBool flag)
SbBool isLightingEnabled (void) const

Public Member Functions inherited from SoCallbackAction
SoCallbackAction (void)
SoCallbackAction (const SbViewportRegion &vp)
virtual ~SoCallbackAction (void)
void setViewportRegion (const SbViewportRegion &vp)
void addPreCallback (const SoType type, SoCallbackActionCB *cb, void *userdata)
void addPostCallback (const SoType type, SoCallbackActionCB *cb, void *userdata)
void addPreTailCallback (SoCallbackActionCB *cb, void *userdata)
void addPostTailCallback (SoCallbackActionCB *cb, void *userdata)
void addTriangleCallback (const SoType type, SoTriangleCB *cb, void *userdata)
void addLineSegmentCallback (const SoType type, SoLineSegmentCB *cb, void *userdata)
void addPointCallback (const SoType type, SoPointCB *cb, void *userdata)
SoDecimationTypeElement::Type getDecimationType (void) const
float getDecimationPercentage (void) const
float getComplexity (void) const
SoComplexity::Type getComplexityType (void) const
int32_t getNumCoordinates (void) const
const SbVec3f & getCoordinate3 (const int index) const
const SbVec4f & getCoordinate4 (const int index) const
SoDrawStyle::Style getDrawStyle (void) const
unsigned short getLinePattern (void) const
float getLineWidth (void) const
float getPointSize (void) const
const SbName & getFontName (void) const
float getFontSize (void) const
SoLightModel::Model getLightModel (void) const
const SbVec3f & getLightAttenuation (void) const
void getMaterial (SbColor &ambient, SbColor &diffuse, SbColor &specular, SbColor &emission, float &shininess, float &transparency, const int index=0) const
SoMaterialBinding::Binding getMaterialBinding (void) const
uint32_t getNumNormals (void) const
const SbVec3f & getNormal (const int index) const
SoNormalBinding::Binding getNormalBinding (void) const
int32_t getNumProfileCoordinates (void) const
const SbVec2f & getProfileCoordinate2 (const int index) const
const SbVec3f & getProfileCoordinate3 (const int index) const
const SoNodeList & getProfile (void) const
SoShapeHints::VertexOrdering getVertexOrdering (void) const
SoShapeHints::ShapeType getShapeType (void) const
SoShapeHints::FaceType getFaceType (void) const
float getCreaseAngle (void) const
int32_t getNumTextureCoordinates (void) const
const SbVec2f & getTextureCoordinate2 (const int index) const
const SbVec3f & getTextureCoordinate3 (const int index) const
const SbVec4f & getTextureCoordinate4 (const int index) const
SoTextureCoordinateBinding::Binding getTextureCoordinateBinding (void) const
const SbColor & getTextureBlendColor (void) const
const unsigned char * getTextureImage (SbVec2s &size, int &numcomps) const
const unsigned char * getTextureImage (SbVec3s &size, int &numcomps) const
const SbMatrix & getTextureMatrix (void) const
SoTexture2::Model getTextureModel (void) const
SoTexture2::Wrap getTextureWrapS (void) const
SoTexture2::Wrap getTextureWrapT (void) const
SoTexture2::Wrap getTextureWrapR (void) const
const SbMatrix & getModelMatrix (void) const
SoUnits::Units getUnits (void) const
float getFocalDistance (void) const
const SbMatrix & getProjectionMatrix (void) const
const SbMatrix & getViewingMatrix (void) const
const SbViewVolume & getViewVolume (void) const
const SbViewportRegion & getViewportRegion (void) const
SoPickStyle::Style getPickStyle (void) const
int32_t getSwitch (void) const
Response getCurrentResponse (void) const
void invokePreCallbacks (const SoNode *const node)
void invokePostCallbacks (const SoNode *const node)
void invokeTriangleCallbacks (const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)
void invokeLineSegmentCallbacks (const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)
void invokePointCallbacks (const SoShape *const shape, const SoPrimitiveVertex *const v)
SbBool shouldGeneratePrimitives (const SoShape *shape) const
virtual SoNode * getCurPathTail (void)
void setCurrentNode (SoNode *const node)
void setCallbackAll (SbBool callbackall)
SbBool isCallbackAll (void) const

Public Member Functions inherited from SoAction
virtual ~SoAction (void)
virtual SbBool isOfType (SoType type) const
void apply (SoAction *beingApplied)
virtual void invalidateState (void)
AppliedCode getWhatAppliedTo (void) const
SoNode * getNodeAppliedTo (void) const
SoPath * getPathAppliedTo (void) const
const SoPathList * getPathListAppliedTo (void) const
const SoPathList * getOriginalPathListAppliedTo (void) const
SbBool isLastPathListAppliedTo (void) const
PathCode getPathCode (int &numindices, const int *&indices)
void traverse (SoNode *const node)
SbBool hasTerminated (void) const
const SoPath * getCurPath (void)
SoState * getState (void) const
PathCode getCurPathCode (void) const
void usePathCode (int &numindices, const int *&indices)
void pushCurPath (const int childindex, SoNode *node=NULL)
void popCurPath (const PathCode prevpathcode)
void pushCurPath (void)
void popPushCurPath (const int childindex, SoNode *node=NULL)
void popCurPath (void)
void switchToPathTraversal (SoPath *path)
void switchToNodeTraversal (SoNode *node)

Static Public Member Functions

static SoType getClassTypeId (void)
static void addMethod (const SoType type, SoActionMethod method)
static void enableElement (const SoType type, const int stackindex)
static void initClass (void)

Static Public Member Functions inherited from SoCallbackAction
static SoType getClassTypeId (void)
static void addMethod (const SoType type, SoActionMethod method)
static void enableElement (const SoType type, const int stackindex)
static void initClass (void)

Static Public Member Functions inherited from SoAction
static void initClass (void)
static void initClasses (void)
static SoType getClassTypeId (void)
static void nullAction (SoAction *action, SoNode *node)

Protected Member Functions

virtual const SoEnabledElementsList & getEnabledElements (void) const
void setOutput (SoVectorOutput *output)
virtual float pixelsToUnits (const int pixels)
virtual void printHeader (void) const =0
virtual void printFooter (void) const
virtual void printBackground (void) const
virtual void printItem (const SoVectorizeItem *item) const =0
virtual void printViewport (void) const
SbVec2f getRotatedViewportStartpos (void) const
SbVec2f getRotatedViewportSize (void) const
const SbBSPTree & getBSPTree (void) const

Protected Member Functions inherited from SoCallbackAction
virtual void beginTraversal (SoNode *node)

Protected Member Functions inherited from SoAction
SoAction (void)
virtual void endTraversal (SoNode *node)
void setTerminated (const SbBool flag)
virtual SbBool shouldCompactPathList (void) const

Static Protected Member Functions

static SoEnabledElementsList * getClassEnabledElements (void)
static SoActionMethodList * getClassActionMethods (void)

Static Protected Member Functions inherited from SoCallbackAction
static SoEnabledElementsList * getClassEnabledElements (void)
static SoActionMethodList * getClassActionMethods (void)

Static Protected Member Functions inherited from SoAction
static SoEnabledElementsList * getClassEnabledElements (void)
static SoActionMethodList * getClassActionMethods (void)

Additional Inherited Members

Protected Attributes inherited from SoAction

SoState * state
SoActionMethodList * traversalMethods

Detailed Description

The SoVectorizeAction class is the base class for vectorizing Coin scene graphs.

SoVectorizeAction will traverse the scene graph and convert all supported geometry into vectorized data. Subclasses can then use this data to produce vector files of different formats.

Currently supported geometry:

The geometry will be shaded based on the OpenGL shading model, so lights and material will affect the geometry in the same way as in a standard Coin viewer. Please note that neither transparency nor texture mapping is supported yet.

Since

Coin 2.1

TGS provides HardCopy support as a separate extension for TGS Inventor.

Member Enumeration Documentation

enum SoVectorizeAction::DimensionUnit

The unit used by the scene graph.

enum SoVectorizeAction::Orientation

The drawing orientation.

enum SoVectorizeAction::PageSize

The size of the destination page.

Enumerator

A0

841 x 1189 mm.

A1

594 x 841 mm.

A2

420 x 594 mm.

A3

297 x 420 mm.

A4

210 x 297 mm.

A5

148 x 210 mm.

A6

105 x 148 mm.

A7

74 x 105 mm.

A8

52 x 74 mm.

A9

37 x 52 mm.

A10

26 x 37 mm.

enum SoVectorizeAction::PointStyle

Enumerates point rendering styles.

Enumerator

CIRCLE

Render points as circles.

SQUARE

Render points as squares.

Constructor & Destructor Documentation

SoVectorizeAction::SoVectorizeAction (void)

Default constructor.

SoVectorizeAction::~SoVectorizeAction () [virtual]

Destructor.

Member Function Documentation

SoType SoVectorizeAction::getTypeId (void) const [virtual]

Returns the type identification of an object derived from a class inheriting SoAction. This is used for runtime type checking and 'downward' casting.

Reimplemented from SoCallbackAction.

Reimplemented in SoVectorizePSAction.

SoType SoVectorizeAction::getClassTypeId (void) [static]

This static method returns the SoType object associated with objects of this class.

void SoVectorizeAction::addMethod (const SoType type, SoActionMethod method) [static]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

void SoVectorizeAction::enableElement (const SoType type, const int stackindex) [static]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

const SoEnabledElementsList & SoVectorizeAction::getEnabledElements (void) const [protected], [virtual]

Returns list of enabled elements.

Reimplemented from SoCallbackAction.

Reimplemented in SoVectorizePSAction.

SoEnabledElementsList * SoVectorizeAction::getClassEnabledElements (void) [static], [protected]

Returns list of enabled elements for this class. The enabledElements and methods variables are protected in the original OIV API. This is not such a good idea, since exposed static class member variables is a major grievance with regard to Win32 DLLs. This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

SoActionMethodList * SoVectorizeAction::getClassActionMethods (void) [static], [protected]

Returns list of action methods for this class. The enabledElements and methods variables are protected in the original OIV API. This is not such a good idea, since exposed static class member variables is a major grievance with regard to Win32 DLLs. This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

SoVectorOutput * SoVectorizeAction::getOutput (void) const

Returns the SoVectorOutput class used by this action. The output is written to stdout by default, but you can change this by using SoVectorOutput::openFile().

void SoVectorizeAction::initClass (void) [static]

Initializes the runtime type system for this class, and sets up the enabled elements and action method list.  

void SoVectorizeAction::apply (SoNode * root) [virtual]

Applies the action to the scene graph rooted at root.

Note that you should not apply an action to a node with a zero reference count. The behavior in that case is undefined.

Reimplemented from SoAction.

void SoVectorizeAction::apply (SoPath * path) [virtual]

Applies the action to the parts of the graph defined by path.

Note that an SoPath will also contain all nodes that may influence e.g. geometry nodes in the path. So for instance applying an SoGLRenderAction on an SoPath will render that path as expected in the view, where geometry will get its materials, textures, and other appearance settings correctly.

If the path ends in an SoGroup node, the action will also traverse the tail node's children.

Reimplemented from SoAction.

void SoVectorizeAction::apply (const SoPathList & pathlist, SbBool obeysrules = FALSE) [virtual]

Applies action to the graphs defined by pathlist. If obeysrules is set to TRUE, pathlist must obey the following four conditions (which is the case for path lists returned from search actions for non-group nodes and path lists returned from picking actions):

All paths must start at the same head node. All paths must be sorted in traversal order. The paths must be unique. No path can continue through the end point of another path.

See also

SoAction::apply(SoPath * path)

Reimplemented from SoAction.

void SoVectorizeAction::beginPage (const SbVec2f & startpagepos, const SbVec2f & pagesize, DimensionUnit u = MM) [virtual]

Begin writing a page. This will write file header information and print background (if enabled) and border.

void SoVectorizeAction::endPage (void) [virtual]

End page. This will write all remaining geometry, and write the file footer.

void SoVectorizeAction::calibrate (const SbViewportRegion & vp) [virtual]

Will calibrate pixel based attributes (font size, line width, points size, etc) so that it will match OpenGL rendering done in vp.

See also

setPixelSize()

setNominalWidth()

void SoVectorizeAction::beginViewport (const SbVec2f & start = SbVec2f(-1.0f, 1.0f), const SbVec2f & size = SbVec2f(-1.0f, -1.0f), DimensionUnit u = MM) [virtual]

Begin writing a viewport inside the current page.

See also

beginPage(), endViewport()

void SoVectorizeAction::endViewport (void) [virtual]

End writing a viewport. This will flush all vector items.

void SoVectorizeAction::setOrientation (Orientation o) [virtual]

Sets the orientation to o.

SoVectorizeAction::Orientation SoVectorizeAction::getOrientation (void) const [virtual]

Returns the current orientation.

See also

setOrientation()

void SoVectorizeAction::setBackgroundColor (SbBool bg, const SbColor & col = SbColor(0.0f, 0.0f, 0.0f)) [virtual]

Sets the background color. If bg is FALSE, the background will not be cleared before rendering. If bg is TRUE, the background will be cleared to col before in beginPage().

SbBool SoVectorizeAction::getBackgroundColor (SbColor & col) const [virtual]

Returns if the background will be cleared or not. When this function returns TRUE, col will be set to the background color.

void SoVectorizeAction::setNominalWidth (float w, DimensionUnit u = MM) [virtual]

Sets how to convert pixel based attributes (line width and point size) to vector sizes. By default 1 pixel equals 0.35 mm.

See also

calibrate()

void SoVectorizeAction::setPixelImageSize (float w, DimensionUnit u = MM) [virtual]

Sets how the images and 2D fonts are converted. By default 1 pixel equals 0.35 mm.

See also

calibrate()

float SoVectorizeAction::getPixelImageSize (DimensionUnit u = MM) const [virtual]

Returns the pixel image size.

See also

setPixelImageSize()

void SoVectorizeAction::setPointStyle (const PointStyle & style) [virtual]

Sets the points rendering style. Default style is CIRCLE.

SoVectorizeAction::PointStyle SoVectorizeAction::getPointStyle (void) const [virtual]

Returns the points rendering style.

const SbVec2f & SoVectorizeAction::getPageStartpos (void) const

Returns the current page startpos.

const SbVec2f & SoVectorizeAction::getPageSize (void) const

Returns the current page size.

void SoVectorizeAction::setDrawingDimensions (const SbVec2f & d, DimensionUnit u = MM) [virtual]

Sets the drawing dimensions. You can use this and setStartPosition() instead of using beginViewport(). Provided for TGS OIV compatibility.

See also

beginViewport()

SbVec2f SoVectorizeAction::getDrawingDimensions (DimensionUnit u = MM) const [virtual]

Returns the current drawing dimensions.

void SoVectorizeAction::setStartPosition (const SbVec2f & p, DimensionUnit u = MM) [virtual]

Sets the drawing staring position. You can use this and setDrawingDimensions() instead of using beginViewport(). Provided for TGS OIV compatibility.

SbVec2f SoVectorizeAction::getStartPosition (DimensionUnit u = MM) const [virtual]

Returns the current drawing starting position.

void SoVectorizeAction::setColorTranslationMethod (ColorTranslationMethod method) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::ColorTranslationMethod SoVectorizeAction::getColorTranslationMethod (void) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setLineEndStyle (EndLineStyle style) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::EndLineStyle SoVectorizeAction::getLineEndStyle (void) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setLineJoinsStyle (JoinLineStyle style) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::JoinLineStyle SoVectorizeAction::getLineJoinsStyle (void) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setHLHSRMode (HLHSRMode mode) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SoVectorizeAction::HLHSRMode SoVectorizeAction::getHLHSRMode (void) const

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setBorder (float width) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setBorder (float width, SbColor color) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setMiterLimit (float limit) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setPenDescription (int num_pens, const SbColor * colors = 0, const float * widths = 0, DimensionUnit u = MM) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::getPenDescription (SbColor * colors, float * widths, DimensionUnit u = MM) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

int SoVectorizeAction::getPenNum (void) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setColorPriority (SbBool priority) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SbBool SoVectorizeAction::getColorPriority (void) const [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::enableLighting (SbBool flag) [virtual]

Not implemented yet. Provided for TGS OIV compatibility.

SbBool SoVectorizeAction::isLightingEnabled (void) const

Not implemented yet. Provided for TGS OIV compatibility.

void SoVectorizeAction::setOutput (SoVectorOutput * output) [protected]

Should be used by subclasses to set the SoVectorOutput instance that should be used.

float SoVectorizeAction::pixelsToUnits (const int pixels) [protected], [virtual]

Converts pixels to normalized units.

void SoVectorizeAction::printHeader (void) const [protected], [pure virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Implemented in SoVectorizePSAction.

void SoVectorizeAction::printFooter (void) const [protected], [virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Should be overridden by subclasses to print file footer data.

Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::printBackground (void) const [protected], [virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Should be overridden by subclasses to print background data.

Reimplemented in SoVectorizePSAction.

void SoVectorizeAction::printItem (const SoVectorizeItem * item) const [protected], [pure virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Should be overridden by subclasses to print an item.

Implemented in SoVectorizePSAction.

void SoVectorizeAction::printViewport (void) const [protected], [virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Should be overridden by subclasses to set up the current page viewport.

Reimplemented in SoVectorizePSAction.

SbVec2f SoVectorizeAction::getRotatedViewportStartpos (void) const [protected]

Convenience method for subclasses. Will return the viewport startpos, taking the orientation into account

SbVec2f SoVectorizeAction::getRotatedViewportSize (void) const [protected]

Convenience method for subclasses. Will return the viewport size, taking the orientation into account

const SbBSPTree & SoVectorizeAction::getBSPTree (void) const [protected]

Returns the bps tree used to store triangle and line vertices.

Author

Generated automatically by Doxygen for Coin from the source code.

Info

Mon Jan 22 2024 00:00:00 Version 4.0.2 Coin