#pragma once

#include "IDrawPad.h"
#include "Filing/IFileIdentifier.h"
#include "Filing/IFolderIdentifier.h"

namespace VectorWorks
{
	using namespace VectorWorks::Filing;

	// ---------------------------------------------------------------------------------------------------
	typedef void*		TOSWndPtr;

	// ---------------------------------------------------------------------------------------------------
	// {9C3E6ED0-8290-410f-9984-0C44B71702ED}
	static const VWIID IID_SDK	= { 0x9c3e6ed0, 0x8290, 0x410f, { 0x99, 0x84, 0xc, 0x44, 0xb7, 0x17, 0x2, 0xed } };

	class DYNAMIC_ATTRIBUTE ISDK : public IVWSingletonUnknown
	{
	//  pre VW2009
	public:
		virtual Boolean VCOM_CALLTYPE GetClassBeginningMarker(InternalIndex index, SMarkerStyle& mstyle) = 0;
		virtual Boolean VCOM_CALLTYPE GetClassEndMarker(InternalIndex index, SMarkerStyle& mstyle) = 0;
		virtual void VCOM_CALLTYPE GetClColor(InternalIndex index, ObjectColorType& color) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetClFillPat(InternalIndex index) = 0;
		virtual short VCOM_CALLTYPE GetClLineWeight(InternalIndex index) = 0;
		virtual void VCOM_CALLTYPE GetClMarker(InternalIndex index, MarkerType& style, short& size, short& angle) = 0;
		virtual short VCOM_CALLTYPE GetClPenPat(InternalIndex index) = 0;
		virtual Boolean VCOM_CALLTYPE GetClUseGraphic(InternalIndex index) = 0;
		virtual short VCOM_CALLTYPE GetClVisibility(InternalIndex index) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetVPClassFillStyle(MCObjectHandle viewport, InternalIndex classIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetClassBeginningMarker(InternalIndex index, SMarkerStyle mstyle) = 0;
		virtual Boolean VCOM_CALLTYPE SetClassEndMarker(InternalIndex index, SMarkerStyle mstyle) = 0;
		virtual void VCOM_CALLTYPE SetClColor(InternalIndex index, ObjectColorType color) = 0;
		virtual void VCOM_CALLTYPE SetClFillPat(InternalIndex index, InternalIndex fill) = 0;
		virtual void VCOM_CALLTYPE SetClLineWeight(InternalIndex index, short mils) = 0;
		virtual void VCOM_CALLTYPE SetClMarker(InternalIndex index, MarkerType style, short size, short angle) = 0;
		virtual void VCOM_CALLTYPE SetClPenPat(InternalIndex index, short penPat) = 0;
		virtual void VCOM_CALLTYPE SetClUseGraphic(InternalIndex index, Boolean use) = 0;
		virtual void VCOM_CALLTYPE SetClVisibility(InternalIndex index, short vis) = 0;
		virtual Boolean VCOM_CALLTYPE VPClassHasOverride(MCObjectHandle viewport, InternalIndex classIndex) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteAllDLComponents() = 0;
		virtual Boolean VCOM_CALLTYPE DeleteDLComponent(Sint16 index) = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultArrowByClass() = 0;
		virtual void VCOM_CALLTYPE GetDefaultArrowHeads(Boolean& starting, Boolean& ending, ArrowType& style, short& size) = 0;
		virtual void VCOM_CALLTYPE GetDefaultArrowHeadsN(Boolean& starting, Boolean& ending, ArrowType& style, double_gs& size) = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultBeginningMarker(SMarkerStyle& mstyle, Boolean& visibility) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetDefaultClass() = 0;
		virtual void VCOM_CALLTYPE GetDefaultColors(ObjectColorType& colors) = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultEndMarker(SMarkerStyle& mstyle, Boolean& visibility) = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultFColorsByClass() = 0;
		virtual InternalIndex VCOM_CALLTYPE GetDefaultFillPat() = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultFPatByClass() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetDefaultHatch() = 0;
		virtual short VCOM_CALLTYPE GetDefaultLineWeight() = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultLWByClass() = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultPColorsByClass() = 0;
		virtual short VCOM_CALLTYPE GetDefaultPenPat() = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultPPatByClass() = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentClass(Sint16 index, long &componentClass) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentFill(Sint16 index, long &fill) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentFillColors(Sint16 index, ColorRef &fillForeColor, ColorRef &fillBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentName(Sint16 index, TXString& outComponentName) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentPenColors(Sint16 index, ColorRef &leftPenForeColor, ColorRef &leftPenBackColor, ColorRef &rightPenForeColor, ColorRef &rightPenBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentPenStyles(Sint16 index, Sint8 &penStyleLeft, Sint8 &penStyleRight) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentPenWeights(Sint16 index, Uint8 &penWeightLeft, Uint8 &penWeightRight) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentUseFillClassAttr(Sint16 index, Boolean &useClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentUsePenClassAttr(Sint16 index, Boolean &leftPenUseClassAttr, Boolean &rightPenUseClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE GetDLComponentWidth(Sint16 index, WorldCoord &width) = 0;
		virtual WorldCoord VCOM_CALLTYPE GetDLControlOffset() = 0;
		virtual Sint16 VCOM_CALLTYPE GetDLOptions() = 0;
		virtual WorldCoord VCOM_CALLTYPE GetDLSeparation() = 0;
		virtual InternalIndex VCOM_CALLTYPE GetDocumentDefaultSketchStyle() = 0;
		virtual Boolean VCOM_CALLTYPE GetNumberOfDLComponents(short& numComponents) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetObjectInternalIndex(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetProgramVariable(short variableSelector, void* result) = 0;
		virtual Boolean VCOM_CALLTYPE GetWallPrefStyle(InternalIndex& wallStyleNum) = 0;
		virtual Boolean VCOM_CALLTYPE GetWallStyle(MCObjectHandle theWall, InternalIndex& wallStyle) = 0;
		virtual Boolean VCOM_CALLTYPE InsertNewDLComponent(Sint16 beforeIndex, WorldCoord width, long fill, Uint8 penWeightLeft, Uint8 penWeightRight, Sint8 penStyleLeft, Sint8 penStyleRight) = 0;
		virtual void VCOM_CALLTYPE SetDefaultArrowByClass() = 0;
		virtual void VCOM_CALLTYPE SetDefaultArrowHeads(Boolean starting, Boolean ending, ArrowType style, short size) = 0;
		virtual void VCOM_CALLTYPE SetDefaultArrowHeadsN(Boolean starting, Boolean ending, ArrowType style, double_param size) = 0;
		virtual Boolean VCOM_CALLTYPE SetDefaultBeginningMarker(SMarkerStyle mstyle, Boolean visibility) = 0;
		virtual void VCOM_CALLTYPE SetDefaultClass(InternalIndex classID) = 0;
		virtual void VCOM_CALLTYPE SetDefaultColors(ObjectColorType colors) = 0;
		virtual Boolean VCOM_CALLTYPE SetDefaultEndMarker(SMarkerStyle mstyle, Boolean visibility) = 0;
		virtual void VCOM_CALLTYPE SetDefaultFColorsByClass() = 0;
		virtual void VCOM_CALLTYPE SetDefaultFillPat(InternalIndex theFill) = 0;
		virtual void VCOM_CALLTYPE SetDefaultFPatByClass() = 0;
		virtual Boolean VCOM_CALLTYPE SetDefaultHatch(MCObjectHandle inHatchDef) = 0;
		virtual void VCOM_CALLTYPE SetDefaultLineWeight(short mils) = 0;
		virtual void VCOM_CALLTYPE SetDefaultLWByClass() = 0;
		virtual void VCOM_CALLTYPE SetDefaultPColorsByClass() = 0;
		virtual void VCOM_CALLTYPE SetDefaultPenPat(short penPat) = 0;
		virtual void VCOM_CALLTYPE SetDefaultPPatByClass() = 0;
		virtual void VCOM_CALLTYPE SetDefaultWallThickness(WorldCoord thickness) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentClass(Sint16 index, long componentClass) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentFill(Sint16 index, long fill) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentFillColors(Sint16 index, ColorRef fillForeColor, ColorRef fillBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentName(Sint16 index, const TXString& componentName) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentPenColors(Sint16 index, ColorRef leftPenForeColor, ColorRef leftPenBackColor, ColorRef rightPenForeColor, ColorRef rightPenBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentPenStyles(Sint16 index, Sint8 penStyleLeft, Sint8 penStyleRight) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentPenWeights(Sint16 index, Uint8 penWeightLeft, Uint8 penWeightRight) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentUseFillClassAttr(Sint16 index, Boolean useClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentUsePenClassAttr(Sint16 index, Boolean leftPenUseClassAttr, Boolean rightPenUseClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE SetDLComponentWidth(Sint16 index, WorldCoord width) = 0;
		virtual void VCOM_CALLTYPE SetDLControlOffset(WorldCoord controlOffset) = 0;
		virtual void VCOM_CALLTYPE SetDLOptions(Sint16 options) = 0;
		virtual void VCOM_CALLTYPE SetDLSeparation(WorldCoord separation) = 0;
		virtual Boolean VCOM_CALLTYPE SetDocumentDefaultSketchStyle(InternalIndex sketchIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetProgramVariable(short variableSelector, const void* value) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallPrefStyle(InternalIndex wallStyleNum) = 0;
		virtual void VCOM_CALLTYPE WrapGetDefaultWallThickness(double_gs& outCoordLen) = 0;
		virtual void VCOM_CALLTYPE Add3DVertex(MCObjectHandle h, const WorldPt3& v, Boolean recalcBounds = true) = 0;
		virtual void VCOM_CALLTYPE AddVertex(MCObjectHandle h, const WorldPt& p, VertexType t = vtCorner, WorldCoord arcRadius = 0, Boolean recalcBounds = true) = 0;
		virtual void VCOM_CALLTYPE CalcAreaN(MCObjectHandle h, double_gs& area) = 0;
		virtual void VCOM_CALLTYPE CalcPerimN(MCObjectHandle h, double_gs& perim) = 0;
		virtual double_gs VCOM_CALLTYPE CalcSurfaceArea(MCObjectHandle h) = 0;
		virtual double_gs VCOM_CALLTYPE CalcVolume(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE Centroid3D(MCObjectHandle h, double_gs &xCG, double_gs &yCG, double_gs &zCG) = 0;
		virtual short VCOM_CALLTYPE CountVertices(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE CreateSkylight(MCObjectHandle object) = 0;
		virtual void VCOM_CALLTYPE DeleteVertex(MCObjectHandle h, short vertexNum) = 0;
		virtual void VCOM_CALLTYPE ForEach3DPointInObject(MCObjectHandle h, GS_3DPointIteratorProcPtr proc, void* env) = 0;
		virtual void VCOM_CALLTYPE ForEachPolyEdge( MCObjectHandle inPolyH, GS_ForEachPolyEdgeProcPtr inProc, void* inEnv) = 0;
		virtual void VCOM_CALLTYPE Get3DVertex(MCObjectHandle h, short vertexNum, WorldPt3& vertex) = 0;
		virtual void VCOM_CALLTYPE GetArcInfoN(MCObjectHandle h, double_gs& startAngle, double_gs& sweepAngle, WorldPt& center, WorldCoord& radiusX, WorldCoord& radiusY) = 0;
		virtual Boolean VCOM_CALLTYPE GetBatAttributes(MCObjectHandle object, const short dormerID, Boolean& useHeight, WorldCoord& heightDepthValue, WorldCoord& bottomWidth, WorldCoord& topWidth, WorldCoord& baseHeight, double_gs& topSlope, WorldCoord& controlPoint) = 0;
		virtual void VCOM_CALLTYPE GetControlVertex(MCObjectHandle h, short vertexNum, WorldPt& vertex, VertexType& vType, WorldCoord& arcRadius) = 0;
		virtual Boolean VCOM_CALLTYPE GetDormerAttributes(MCObjectHandle object, const short dormerID, short& edgeIndex, WorldCoord& cornerOffset, Boolean& isPerpOffset, WorldCoord& perpOrHeightOffset, InternalIndex& symName, Boolean& centerSymbol, WorldCoord& symOffset) = 0;
		virtual void VCOM_CALLTYPE GetEndPoints(MCObjectHandle h, WorldPt& startPt, WorldPt& endPt) = 0;
		virtual void VCOM_CALLTYPE GetEntityMatrix(MCObjectHandle h, TransformMatrix& theMat) = 0;
		virtual void VCOM_CALLTYPE GetExtrudeValues(MCObjectHandle h, WorldCoord& bottom, WorldCoord& top) = 0;
		virtual Boolean VCOM_CALLTYPE GetGableAttributes(MCObjectHandle object, const short dormerID, Boolean& useHeight, WorldCoord& heightDepthValue, WorldCoord& bottomWidth, double_gs& leftSlope, double_gs& rightSlope, WorldCoord& overhang) = 0;
		virtual Boolean VCOM_CALLTYPE GetHipAttributes(MCObjectHandle object, const short dormerID, Boolean& useHeight, WorldCoord& heightDepthValue, WorldCoord& bottomWidth, double_gs& leftSlope, double_gs& rightSlope, double_gs& frontSlope, WorldCoord& overhang) = 0;
		virtual void VCOM_CALLTYPE GetLocus3DPosition(MCObjectHandle h, WorldPt3& locPos) = 0;
		virtual void VCOM_CALLTYPE GetLocusPosition(MCObjectHandle h, WorldPt& locPos) = 0;
		virtual void VCOM_CALLTYPE GetMarkerPolys(MCObjectHandle object, MCObjectHandle& startMarkerPoly, MCObjectHandle& endMarkerPoly) = 0;
		virtual short VCOM_CALLTYPE GetNumRoofElements(MCObjectHandle object) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjectBoundingBoxVerts(MCObjectHandle h, WorldRectVerts &outBoxVerts) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjectBounds(MCObjectHandle h, WorldRect& bounds) = 0;
		virtual void VCOM_CALLTYPE GetObjectCube(MCObjectHandle h, WorldCube& boundsCube) = 0;
		virtual short VCOM_CALLTYPE GetPolyDirection(MCObjectHandle polyToCheck) = 0;
		virtual Boolean VCOM_CALLTYPE GetPolyShapeClose(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE GetQArcQuadrant(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetRoofAttributes(MCObjectHandle object, Boolean& genGableWall, WorldCoord& bearingInset, WorldCoord& roofThick, short& miterType, WorldCoord& vertMiter) = 0;
		virtual Boolean VCOM_CALLTYPE GetRoofElementType(MCObjectHandle object, const short dormerID, short& edgeIndex, Boolean& isDormer, short& dormerType) = 0;
		virtual void VCOM_CALLTYPE GetRRectDiameters(MCObjectHandle h, WorldCoord& xDiam, WorldCoord& yDiam) = 0;
		virtual Boolean VCOM_CALLTYPE GetShedAttributes(MCObjectHandle object, const short dormerID, Boolean& useHeight, WorldCoord& heightDepthValue, WorldCoord& bottomWidth, double_gs& topSlope, WorldCoord& overhang) = 0;
		virtual Boolean VCOM_CALLTYPE GetSkylight(MCObjectHandle object, const short skylightID, short& edgeIndex, WorldCoord& cornerOffset, WorldCoord& perpOffset, InternalIndex& symName) = 0;
		virtual void VCOM_CALLTYPE GetSweepAnglesN(MCObjectHandle theSweep, double_gs& startAngle, double_gs& arcAngle, double_gs& incrAngle) = 0;
		virtual Boolean VCOM_CALLTYPE GetTrapeziumAttributes(MCObjectHandle object, const short dormerID, Boolean& useHeight, WorldCoord& heightDepthValue, WorldCoord& bottomWidth, Boolean& useTopWidth, WorldCoord& topWidth, double_gs& leftSlope, double_gs& rightSlope, double_gs& topSlope) = 0;
		virtual void VCOM_CALLTYPE GetVertex(MCObjectHandle h, short vertexNum, WorldPt& vertex, VertexType& vType, WorldCoord& arcRadius) = 0;
		virtual void VCOM_CALLTYPE Insert3DVertex(MCObjectHandle h, const WorldPt3& p, short beforeVertex, Boolean recalcBounds = true) = 0;
		virtual void VCOM_CALLTYPE InsertVertex(MCObjectHandle h, const WorldPt& p, short beforeVertex, VertexType t = vtCorner, WorldCoord arcRadius = 0, Boolean recalcBounds = true) = 0;
		virtual Boolean VCOM_CALLTYPE Moments3D(MCObjectHandle h, double_gs &Ixx, double_gs &Iyy, double_gs &Izz) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsCurveEvaluatePoint(MCObjectHandle nurbsHandle, long index, double u, WorldPt3& pt) = 0;
		virtual long VCOM_CALLTYPE NurbsCurveGetNumPieces(MCObjectHandle nHandle) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsCurveType(MCObjectHandle nHandle, long index, bool& isByWeight) = 0;
		virtual short VCOM_CALLTYPE NurbsDegree(MCObjectHandle nHandle, long index) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsDelVertex(MCObjectHandle nHandle, long index1, long index2) = 0;
		virtual long VCOM_CALLTYPE NurbsGetNumPts(MCObjectHandle nHandle, long index) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsGetPt3D(MCObjectHandle nHandle, long index1, long index2, WorldPt3& pt) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsGetWeight(MCObjectHandle nHandle, long index1, long index2, double& weight) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsKnot(MCObjectHandle nHandle, long index1, long index2, double& knot) = 0;
		virtual long VCOM_CALLTYPE NurbsNumKnots(MCObjectHandle nHandle, long index) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsSetKnot(MCObjectHandle nHandle, long index1, long index2, double knot) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsSetPt3D(MCObjectHandle nHandle, long index1, long index2, WorldPt3 pt) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsSetWeight(MCObjectHandle nHandle, long index1, long index2, double weight) = 0;
		virtual Boolean VCOM_CALLTYPE NurbsSurfaceEvaluatePoint(MCObjectHandle nurbsHandle, double u, double v, WorldPt3& pt) = 0;
		virtual double_gs VCOM_CALLTYPE ObjArea(MCObjectHandle h) = 0;
		virtual double_gs VCOM_CALLTYPE ObjSurfaceArea(MCObjectHandle h) = 0;
		virtual double_gs VCOM_CALLTYPE ObjVolume(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE Products3D(MCObjectHandle h, double_gs &Ixy, double_gs &Iyz, double_gs &Izx) = 0;
		virtual void VCOM_CALLTYPE RemoveRoofElement(MCObjectHandle object, short id) = 0;
		virtual void VCOM_CALLTYPE Set3DVertex(MCObjectHandle h, short vertexNum, const WorldPt3& vertex, Boolean recalcBounds = true) = 0;
		virtual void VCOM_CALLTYPE SetArcAnglesN(MCObjectHandle h, double_param startAngle, double_param sweepAngle) = 0;
		virtual Boolean VCOM_CALLTYPE SetBatAttributes(MCObjectHandle object, const short dormerID, Boolean useHeight, WorldCoord heightDepthValue, WorldCoord bottomWidth, WorldCoord topWidth, WorldCoord baseHeight, double_param topSlope, WorldCoord controlPoint) = 0;
		virtual Boolean VCOM_CALLTYPE SetDormerAttributes(MCObjectHandle object, const short dormerID, short edgeIndex, WorldCoord cornerOffset, Boolean isPerpOffset, WorldCoord perpOrHeightOffset, InternalIndex symName, Boolean centerSymbol, WorldCoord symOffset) = 0;
		virtual void VCOM_CALLTYPE SetDormerThick(MCObjectHandle object, WorldCoord wallThick, WorldCoord roofThick) = 0;
		virtual void VCOM_CALLTYPE SetEndPoints(MCObjectHandle h, const WorldPt& startPt, const WorldPt& endPt) = 0;
		virtual void VCOM_CALLTYPE SetEntityMatrix(MCObjectHandle h, const TransformMatrix& theMat) = 0;
		virtual void VCOM_CALLTYPE SetExtrudeValues(MCObjectHandle h, WorldCoord bottom, WorldCoord top) = 0;
		virtual Boolean VCOM_CALLTYPE SetGableAttributes(MCObjectHandle object, const short dormerID, Boolean useHeight, WorldCoord heightDepthValue, WorldCoord bottomWidth, double_param leftSlope, double_param rightSlope, WorldCoord overhang) = 0;
		virtual Boolean VCOM_CALLTYPE SetHipAttributes(MCObjectHandle object, const short dormerID, Boolean useHeight, WorldCoord heightDepthValue, WorldCoord bottomWidth, double_param leftSlope, double_param rightSlope, double_param frontSlope, WorldCoord overhang) = 0;
		virtual void VCOM_CALLTYPE SetLocus3DPosition(MCObjectHandle h, const WorldPt3& locPos) = 0;
		virtual void VCOM_CALLTYPE SetLocusPosition(MCObjectHandle h, const WorldPt& locPos) = 0;
		virtual void VCOM_CALLTYPE SetObjectBounds(MCObjectHandle h, const WorldRect& bounds) = 0;
		virtual void VCOM_CALLTYPE SetPolyShapeClose(MCObjectHandle h, Boolean closed) = 0;
		virtual void VCOM_CALLTYPE SetQArcQuadrant(MCObjectHandle h, short quadrant) = 0;
		virtual void VCOM_CALLTYPE SetRoofAccessoriesParameters(MCObjectHandle roof, Boolean insertAttic, Boolean insertSoffit, Boolean insertFascia, WorldCoord fasciaWidth, WorldCoord fasciaHeight, WorldCoord atticHeight, WorldCoord recess, WorldCoord rakeThick, WorldCoord trimDepth) = 0;
		virtual void VCOM_CALLTYPE SetRoofAttributes(MCObjectHandle object, Boolean genGableWall, WorldCoord bearingInset, WorldCoord roofThick, short miterType, WorldCoord vertMiter) = 0;
		virtual void VCOM_CALLTYPE SetRRectDiameters(MCObjectHandle h, WorldCoord xDiam, WorldCoord yDiam) = 0;
		virtual Boolean VCOM_CALLTYPE SetShedAttributes(MCObjectHandle object, const short dormerID, Boolean useHeight, WorldCoord heightDepthValue, WorldCoord bottomWidth, double_param topSlope, WorldCoord overhang) = 0;
		virtual Boolean VCOM_CALLTYPE SetSkylight(MCObjectHandle object, const short skylightID, short edgeIndex, WorldCoord cornerOffset, WorldCoord perpOffset, InternalIndex symName) = 0;
		virtual void VCOM_CALLTYPE SetSweepAnglesN(MCObjectHandle theSweep, double_param startAngle, double_param arcAngle, double_param incrAngle) = 0;
		virtual void VCOM_CALLTYPE SetSweepScrew(MCObjectHandle theSweep, WorldCoord dist) = 0;
		virtual Boolean VCOM_CALLTYPE SetTrapeziumAttributes(MCObjectHandle object, const short dormerID, Boolean useHeight, WorldCoord heightDepthValue, WorldCoord bottomWidth, Boolean useTopWidth, WorldCoord topWidth, double_param leftSlope, double_param rightSlope, double_param topSlope) = 0;
		virtual void VCOM_CALLTYPE SetVertex(MCObjectHandle h, short vertexNum, const WorldPt& vertex, VertexType vType, WorldCoord arcRadius, Boolean recalcBounds = true) = 0;
		virtual void VCOM_CALLTYPE WrapGetSweepScrew(MCObjectHandle theSweep, double_gs& outCoordLen) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCircularDimension(const WorldPt& center, const WorldPt& end, WorldCoord startOffset, WorldCoord textOffset, const WorldRect& box, Boolean isRadius) = 0;
		virtual Boolean VCOM_CALLTYPE GetArrowByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE GetArrowHeads(MCObjectHandle h, Boolean& starting, Boolean& ending, ArrowType& style, short& size) = 0;
		virtual void VCOM_CALLTYPE GetArrowHeadsN(MCObjectHandle h, Boolean& starting, Boolean& ending, ArrowType& style, double_gs& size) = 0;
		virtual Boolean VCOM_CALLTYPE GetColor(MCObjectHandle h, ObjectColorType& colors) = 0;
		virtual OpacityRef VCOM_CALLTYPE GetDefaultOpacity() = 0;
		virtual Boolean VCOM_CALLTYPE GetDefaultOpacityByClass() = 0;
		virtual Boolean VCOM_CALLTYPE GetFColorsByClass(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetFillIAxisEndPoint(MCObjectHandle objectHandle, WorldPt& iAxisEndPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetFillJAxisEndPoint(MCObjectHandle objectHandle, WorldPt& jAxisEndPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetFillOriginPoint(MCObjectHandle objectHandle, WorldPt& originPoint) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetFillPat(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetFillPoints(MCObjectHandle objectHandle, WorldPt& originPoint, WorldPt& iAxisEndPoint, WorldPt& jAxisEndPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetFPatByClass(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE GetLineWeight(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE GetLineWeightDisplayMM(short mils) = 0;
		virtual short VCOM_CALLTYPE GetLineWeightDisplayPt(short mils) = 0;
		virtual Boolean VCOM_CALLTYPE GetLWByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE GetMarker(MCObjectHandle obj, MarkerType& style, short& size, short& angle, Boolean& start, Boolean& end) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjBeginningMarker(MCObjectHandle h, SMarkerStyle& mstyle, Boolean& visibility) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjEndMarker(MCObjectHandle h, SMarkerStyle& mstyle, Boolean& visibility) = 0;
		virtual OpacityRef VCOM_CALLTYPE GetOpacity(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetOpacityByClass(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetPColorsByClass(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE GetPenPat(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetPPatByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE GetVertexVis(MCObjectHandle h, short vertNum, Boolean& vis) = 0;
		virtual void VCOM_CALLTYPE SetArrowByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetArrowHeads(MCObjectHandle h, Boolean starting, Boolean ending, ArrowType style, short size) = 0;
		virtual void VCOM_CALLTYPE SetArrowHeadsN(MCObjectHandle h, Boolean starting, Boolean ending, ArrowType style, double_param size) = 0;
		virtual void VCOM_CALLTYPE SetColor(MCObjectHandle h, ObjectColorType colors) = 0;
		virtual void VCOM_CALLTYPE SetDefaultOpacity(OpacityRef inOpacity) = 0;
		virtual void VCOM_CALLTYPE SetDefaultOpacityByClass() = 0;
		virtual void VCOM_CALLTYPE SetFColorsByClass(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE SetFillIAxisEndPoint(MCObjectHandle objectHandle, const WorldPt& iAxisEndPoint) = 0;
		virtual Boolean VCOM_CALLTYPE SetFillJAxisEndPoint(MCObjectHandle objectHandle, const WorldPt& jAxisEndPoint) = 0;
		virtual Boolean VCOM_CALLTYPE SetFillOriginPoint(MCObjectHandle objectHandle, const WorldPt& originPoint) = 0;
		virtual void VCOM_CALLTYPE SetFillPat(MCObjectHandle h, InternalIndex theFill) = 0;
		virtual void VCOM_CALLTYPE SetFPatByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetLineWeight(MCObjectHandle h, short mils) = 0;
		virtual Boolean VCOM_CALLTYPE SetLineWeightDisplayMM(short hundredths) = 0;
		virtual Boolean VCOM_CALLTYPE SetLineWeightDisplayPt(short sixteenths) = 0;
		virtual void VCOM_CALLTYPE SetLWByClass(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE SetObjBeginningMarker(MCObjectHandle h, SMarkerStyle mstyle, Boolean visibility) = 0;
		virtual Boolean VCOM_CALLTYPE SetObjEndMarker(MCObjectHandle h, SMarkerStyle mstyle, Boolean visibility) = 0;
		virtual void VCOM_CALLTYPE SetOpacity(MCObjectHandle h, OpacityRef  inNewOpacity) = 0;
		virtual void VCOM_CALLTYPE SetOpacityByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetPColorsByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetPenPat(MCObjectHandle h, short penPat) = 0;
		virtual void VCOM_CALLTYPE SetPPatByClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetVertexVis(MCObjectHandle h, short vertNum, Boolean vis) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetDefinition(MCObjectHandle h) = 0;
		virtual short VCOM_CALLTYPE GetDXFColorToLineWeight(const short inDXFColorIndex) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetNamedObject(const TXString& objName) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetObjectClass(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE GetObjectName(MCObjectHandle h, TXString& outName) = 0;
		virtual short VCOM_CALLTYPE GetObjectType(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE GetSymbolDefinitionIcon(MCObjectHandle theSymDef, long icon[32] ) = 0;
		virtual short VCOM_CALLTYPE GetSymbolDefinitionType(MCObjectHandle theSymDef) = 0;
		virtual Boolean VCOM_CALLTYPE IsLocked(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE IsSelected(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE IsVisible(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE LockObject(MCObjectHandle h, Boolean lock = true) = 0;
		virtual void VCOM_CALLTYPE SelectObject(MCObjectHandle h, Boolean select = true) = 0;
		virtual void VCOM_CALLTYPE SetDXFColorToLineWeight(const short inDXFColorIndex, const short inLineWeight) = 0;
		virtual void VCOM_CALLTYPE SetObjectClass(MCObjectHandle h, InternalIndex classID) = 0;
		virtual GSError VCOM_CALLTYPE SetObjectName(MCObjectHandle h, const TXString& name) = 0;
		virtual void VCOM_CALLTYPE SetSymbolDefinitionIcon(MCObjectHandle theSymDef, const long icon[32] ) = 0;
		virtual void VCOM_CALLTYPE SetVisibility(MCObjectHandle h, Boolean visible) = 0;
		virtual void VCOM_CALLTYPE AttachAuxObject(MCObjectHandle h, MCObjectHandle newOwner) = 0;
		virtual void VCOM_CALLTYPE DeleteAuxObject(MCObjectHandle h, MCObjectHandle owner) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE FindAuxObject(MCObjectHandle owner, short objectType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE FindDataObject(MCObjectHandle owner, OSType tag) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE FirstAuxObject(MCObjectHandle h) = 0;
		virtual OSType VCOM_CALLTYPE GetDataTag(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE GetPluginType(const TXString& name, EVSPluginType& type) = 0;
		virtual Boolean VCOM_CALLTYPE IsPluginFormat(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE NewDataObject(MCObjectHandle attachTo, OSType tag, size_t objectSize) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE NextAuxObject(MCObjectHandle start, short objectType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE NextDataObject(MCObjectHandle start, OSType tag) = 0;
		virtual void VCOM_CALLTYPE RemoveAuxObject(MCObjectHandle h, MCObjectHandle owner) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataCreate(MCObjectHandle inOwnerObj,OSType dataContainer,int dataType,int dataTag,int numDataElements) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataGet(MCObjectHandle inOwnerObj,OSType dataContainer,int dataType,int dataTag,int dataIndex, void* getData) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataGetNumElements(MCObjectHandle inOwnerObj,OSType dataContainer,int dataType,int dataTag,long* getData) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataRemoveContainer(MCObjectHandle inOwnerObj,OSType dataContainer) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataRemoveTag(MCObjectHandle inOwnerObj,OSType dataContainer,int dataType,int dataTag) = 0;
		virtual Boolean VCOM_CALLTYPE TaggedDataSet(MCObjectHandle inOwnerObj,OSType dataContainer,int dataType,int dataTag,int dataIndex, const void* data) = 0;
		virtual double_gs VCOM_CALLTYPE CoordLengthToPageLengthN(WorldCoord len) = 0;
		virtual double_gs VCOM_CALLTYPE CoordLengthToPagePoints(WorldCoord len) = 0;
		virtual Boolean VCOM_CALLTYPE CoordLengthToPixelLength(WorldCoord numCoords, short& numPixels) = 0;
		virtual double_gs VCOM_CALLTYPE CoordLengthToUnitsLengthN(WorldCoord len) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateOvalN(const WorldPt& origin, const Vector2 &orientation, CBWorldCoord_param width, CBWorldCoord_param height) = 0;
		virtual Boolean VCOM_CALLTYPE DimStringToCoord(const TXString& s, WorldCoord& c) = 0;
		virtual void VCOM_CALLTYPE FPCoordLengthToPageLength(double_param coordLen, double_gs& pageLen) = 0;
		virtual void VCOM_CALLTYPE FPCoordLengthToUnitsLength(double_param coordLen, double_gs& unitsLen) = 0;
		virtual void VCOM_CALLTYPE ModelPt2DToScreenPt(WorldPt& vertex) = 0;
		virtual void VCOM_CALLTYPE ModelVecToScreenVec(WorldPt& vertex) = 0;
		virtual void VCOM_CALLTYPE PageLengthToFPCoordLength(double_param pageLen, double_gs& coordLen) = 0;
		virtual WorldCoord VCOM_CALLTYPE PagePointsToCoordLength(double_gs& points) = 0;
		virtual void VCOM_CALLTYPE PixelLengthToCoordLength(short numPixels, WorldCoord& numCoords) = 0;
		virtual void VCOM_CALLTYPE ScreenPtToModelPt2D(WorldPt& vertex) = 0;
		virtual void VCOM_CALLTYPE ScreenVecToModelVec(WorldPt& vertex) = 0;
		virtual void VCOM_CALLTYPE UnitsLengthToFPCoordLength(double_param unitsLen, double_gs& coordLen) = 0;
		virtual WorldCoord VCOM_CALLTYPE WorldCoordsPerDrawingUnit() = 0;
		virtual void VCOM_CALLTYPE WrapPageLengthToCoordLengthN(double_param len, double_gs& outCoordLen) = 0;
		virtual void VCOM_CALLTYPE WrapUnitsLengthToCoordLengthN(double_param len, double_gs& outCoordLen) = 0;
		virtual short VCOM_CALLTYPE AddSolid(MCObjectHandle obj1, MCObjectHandle obj2, MCObjectHandle& newSolid) = 0;
		virtual Boolean VCOM_CALLTYPE AppendRoofEdge(MCObjectHandle object, const WorldPt& edgePt, double_param slope, WorldCoord projection, WorldCoord eaveHeight) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE Create3DPoly() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateAngleDimension(const WorldPt& center, const WorldPt& p1, const WorldPt& p2, WorldCoord startOffset) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateArcN(const WorldRect& bounds, double_param startAngle, double_param sweepAngle) = 0;
		virtual short VCOM_CALLTYPE CreateBatDormer(MCObjectHandle object) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateChainDimension(MCObjectHandle h1, MCObjectHandle h2) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCombineIntoSurface(const WorldPt& inPoint) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCone(const WorldPt3& center, const WorldPt3 &tip, WorldCoord radius) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateContourCurves(MCObjectHandle h, double_param delta, WorldPt3 pointOnPlane, WorldPt3 planeNormal) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCustomDimensionStandard(const TXString& name) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCustomObject(const TXString& name, const WorldPt& location, double_param angle = 0.0, bool bInsert = true) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCustomObjectByMatrix(const TXString& name, const TransformMatrix& matrix) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCustomObjectDoubleClick(const TXString& name) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateCustomObjectPath(const TXString& name, MCObjectHandle pathHand = NULL, MCObjectHandle profileGroupHand = NULL) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateExtrude(WorldCoord bottom, WorldCoord top) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateExtrudeAlongPath(MCObjectHandle pathHandle, MCObjectHandle profileHandle) = 0;
		virtual short VCOM_CALLTYPE CreateGableDormer(MCObjectHandle object) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateGroup() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateHemisphere(const WorldPt3& center, const WorldPt3 &topPoint) = 0;
		virtual short VCOM_CALLTYPE CreateHipDormer(MCObjectHandle object) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateImageProp(TXString& propName, InternalIndex textureRef, WorldCoord height, WorldCoord width, Boolean enforceImageAspectRatio, Boolean crossedPlanes, Boolean createPlugin, Boolean autoRotate, Boolean createSymbol) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateInterpolatedSurface(MCObjectHandle surfaceHandle, long numUPts, long numVPts, short uDegree, short vDegree) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLayer(const TXString& layerName, short layerType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLayerN(const TXString& name, double_param scale) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLightN(const WorldPt3& pos, short kind, Boolean isOn, double_param brightness, const WorldPt3& color, Boolean castShadows) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLine(const WorldPt& startPt, const WorldPt& endPt) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLinearDimension(const WorldPt& p1, const WorldPt& p2, WorldCoord startOffset, WorldCoord textOffset, const Vector2& dir, short dimType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLocus(const WorldPt& location) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLocus3D(const WorldPt3& location) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateLoftSurfaces(MCObjectHandle groupCurvesH, Boolean bRule, Boolean  bClose, Boolean bSolid) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateNurbsCurve(WorldPt3 firstPt, bool byCtrlPts, short degree) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateNurbsSurface(long numUPts, long numVPts, short uDegree, short vDegree) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateOval(const WorldRect& bounds) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreatePolyshape() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateQArc(const WorldRect& bounds, short quadrant) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRectangle(const WorldRect& bounds) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRectangleN(const WorldPt& origin, const Vector2 &orientation, CBWorldCoord_param width, CBWorldCoord_param height) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRoof(Boolean genGableWall, WorldCoord bearingInset, WorldCoord roofThick, short miterType, WorldCoord vertMiter) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRoundWall(const WorldPt& startPt, const WorldPt& ptOnArc, const WorldPt& endPt, WorldCoord wallThickness = 0) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRRectangle(const WorldRect& bounds, WorldCoord xDiam, WorldCoord yDiam) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateRRectangleN(const WorldPt& origin, const Vector2 &orientation, CBWorldCoord_param width, CBWorldCoord_param height, CBWorldCoord_param xDiam, CBWorldCoord_param yDiam, Boolean isProportional) = 0;
		virtual short VCOM_CALLTYPE CreateShedDormer(MCObjectHandle object) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateSlab(short slabKind) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateSphere(const WorldPt3& center, WorldCoord radius) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateStaticHatch(const TXString& name, const WorldPt& inOriginPoint, double_param inRotationAngle) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateStaticHatchFromObject(MCObjectHandle inObj, const TXString& name, const WorldPt& inOriginPoint, double_param inRotationAngle) = 0;
		virtual Boolean VCOM_CALLTYPE CreateSurfacefromCurvesNetwork() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateSweepN(double_param startAngle, double_param arcAngle, double_param incrAngle, WorldCoord screwDist) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateSymbolDefinition(TXString& inoutName) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateSymbolFolder(const TXString& name) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateTaperedExtrude(MCObjectHandle profileH, const double_param angle = 0.0, const double_param height = 1.0 ) = 0;
		virtual short VCOM_CALLTYPE CreateTrapeziumDormer(MCObjectHandle object) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateViewport(MCObjectHandle parentHandle) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateWall(const WorldPt& startPt, const WorldPt& endPt, WorldCoord thickness = 0) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE DefineCustomObject(const TXString& name, Byte prefWhen = kCustomObjectPrefAlways) = 0;
		virtual void VCOM_CALLTYPE DuplicateSelection(WorldCoord dx, WorldCoord dy) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ExtendNurbsCurve(MCObjectHandle curveHandle, double_param distance, Boolean bStart, Boolean bLinear) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ExtendNurbsSurface(MCObjectHandle surfaceHandle, double_param distance, Boolean bStart, Boolean bLinear, Boolean bUDir) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GenerateBezierApproximationFromPolygon(MCObjectHandle hPolygonHandle, const WorldCoord approximationTolerance, const double discontinuityAngleTolerance, const unsigned short quadraticsPerCubic) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GroupSelection() = 0;
		virtual short VCOM_CALLTYPE IntersectSolid(MCObjectHandle obj1, MCObjectHandle obj2, MCObjectHandle& newSolid) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE PlaceSymbolByNameN(const TXString& symName, const WorldPt& location, double_param rotation = 0.0) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE PlaceSymbolN(MCObjectHandle definition, const WorldPt& location, double_param rotation = 0.0) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE RevolveWithRail(MCObjectHandle profileH, MCObjectHandle railH, MCObjectHandle axisH) = 0;
		virtual void VCOM_CALLTYPE Split2DObjectByLine(MCObjectHandle h, const WorldPt& p1, const WorldPt& p2, MCObjectHandle& listHandles) = 0;
		virtual short VCOM_CALLTYPE SubtractSolid(MCObjectHandle obj1, MCObjectHandle obj2, MCObjectHandle& newSolid) = 0;
		virtual void VCOM_CALLTYPE AddChoice(long dialogID, long itemID, const TXString& strItemText, short nItemIndex) = 0;
		virtual void VCOM_CALLTYPE AddListBoxTabStop(long dialogID, long componentID, int tabStop) = 0;
		virtual short VCOM_CALLTYPE AddListBrowserImage(long dialogID, long componentID, short resourceType, short resourceID, short resourceIDSelected = 0) = 0;
		virtual Boolean VCOM_CALLTYPE AdjustComponentPixelPos(long nDialogID, long nComponentID, int nHorizontalPixels, int nVerticalPixels) = 0;
		virtual void VCOM_CALLTYPE AlertCritical(const TXString& text, const TXString& advice = "") = 0;
		virtual void VCOM_CALLTYPE AlertInform(const TXString& text, const TXString& advice = "", bool minorAlert = false, const TXString& category = "", const TXString& item = "", const TXString& checkboxOverrideText = "") = 0;
		virtual short VCOM_CALLTYPE AlertQuestion(const TXString& question, const TXString& advice = "", short defaultButton = 0, const TXString& OKOverrideText = "", const TXString& CancelOverrideText = "", const TXString& customButtonAText = "", const TXString& customButtonBText = "", const TXString& category = "", const TXString& item = "", const TXString& checkboxOverrideText = "") = 0;
		virtual bool VCOM_CALLTYPE AlignBottomEdge(long dialogID, long srcItemID, short bottomID, short alignMode = 1) = 0;
		virtual bool VCOM_CALLTYPE AlignLeftEdge(long dialogID, long srcItemID, short leftID, short alignMode = 1) = 0;
		virtual bool VCOM_CALLTYPE AlignRightEdge(long dialogID, long srcItemID, short rightID, short alignMode = 1) = 0;
		virtual Boolean VCOM_CALLTYPE AreListBrowserColumnLinesEnabled(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE AreListBrowserRadioColumnLinesEnabled(long dialogID, long componentID, short columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE ClearGradientSliderSegments(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE Confirm(short strListID, short index, Boolean yesOrNo) = 0;
		virtual void VCOM_CALLTYPE CreateCenteredStaticText(long dialogID, long itemID, const TXString& text, short widthInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateCheckBox(long dialogID, long itemID, const TXString& name) = 0;
		virtual void VCOM_CALLTYPE CreateCheckBoxGroupBox(long dialogID, short itemID, const TXString& name, bool hasFrame) = 0;
		virtual Boolean VCOM_CALLTYPE CreateClassPullDownMenu(long nDialogID, long nComponentID, int nWidthInChars) = 0;
		virtual void VCOM_CALLTYPE CreateCMYKColorSwatch(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreateColorPopup(long dialogID, long itemID, short widthInCharacters = -1) = 0;
		virtual void VCOM_CALLTYPE CreateControl(long dialogID, long itemID, long controlKind, const TXString& name, long data) = 0;
		virtual void VCOM_CALLTYPE CreateCustomControl(long dlogID, long controlID, short width, short length) = 0;
		virtual Boolean VCOM_CALLTYPE CreateDesignLayerPullDownMenu(long nDialogID, long nComponentID, int nWidthInChars) = 0;
		virtual void VCOM_CALLTYPE CreateEditInteger(long dialogID, long itemID, long defaultValue, short widthInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateEditReal(long dialogID, long itemID, long editRealType, double value, short widthInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateEditText(long dialogID, long itemID, const TXString& defaultText, short widthInCharacters, short heightInLines = 1) = 0;
		virtual Boolean VCOM_CALLTYPE CreateEnhancedPullDownMenu(long liDialogID, long liComponentID, int iWidthInCharacters, Boolean bShowIconInMainWindow) = 0;
		virtual void VCOM_CALLTYPE CreateGroupBox(long dialogID, long itemID, const TXString& name, Boolean hasFrame) = 0;
		virtual Boolean VCOM_CALLTYPE CreateIconPushButton(long nDialogID, long nComponentID, int nIconID, int nWidthInChars) = 0;
		virtual Boolean VCOM_CALLTYPE CreateImageControl(long liDialogID, long liComponentID, int iWidthPixels, int iHeightPixels, MCObjectHandle hImage) = 0;
		virtual long VCOM_CALLTYPE CreateLayout(const TXString& dialogTitle, Boolean hasHelp, const TXString& defaultButtonName, const TXString& cancelButtonName) = 0;
		virtual void VCOM_CALLTYPE CreateLineAttributePopup(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreateLineStylePopup(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreateLineWeightPopup(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreateListBox(long dialogID, long itemID, short widthInCharacters, short heightInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateListBoxN(long dialogID, long itemID, short widthInCharacters, short heightInCharacters, Boolean isMultiSel) = 0;
		virtual void VCOM_CALLTYPE CreateListBrowser(long dialogID, long componentID, Sint16 widthInCharacters, Sint16 heightInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateMarkerPopup(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreatePatternPopup(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreatePullDownMenu(long dialogID, long itemID, short widthInCharacters) = 0;
		virtual Boolean VCOM_CALLTYPE CreatePullDownMenuGroupBox(long liDialogID, long liComponentID, int iPullDownWidth, const TXString& strLabel, Boolean bHasFrame) = 0;
		virtual void VCOM_CALLTYPE CreatePushButton(long dialogID, long itemID, const TXString& buttonName) = 0;
		virtual void VCOM_CALLTYPE CreateRadioButton(long dialogID, long itemID, const TXString& buttonName) = 0;
		virtual void VCOM_CALLTYPE CreateRadioButtonGroupBox(long dialogID, short itemID, const TXString& name, bool hasFrame) = 0;
		virtual long VCOM_CALLTYPE CreateResizableLayout(const TXString& dialogTitle, Boolean hasHelp, const TXString& defaultButtonName, const TXString& cancelButtonName, Boolean widthResizable, Boolean heightResizable) = 0;
		virtual void VCOM_CALLTYPE CreateRightStaticText(long dialogID, long itemID, const TXString& text, short widthInCharacters) = 0;
		virtual Boolean VCOM_CALLTYPE CreateSeparator(long liDialogID, long liComponentID, int iLength) = 0;
		virtual Boolean VCOM_CALLTYPE CreateSheetLayerPullDownMenu(long nDialogID, long nComponentID, int nWidthInChars) = 0;
		virtual void VCOM_CALLTYPE CreateStandardIconControl(long dialogID, long iconControlID, int iconNumber) = 0;
		virtual void VCOM_CALLTYPE CreateStaticText(long dialogID, long itemID, const TXString& text, short widthInCharacters) = 0;
		virtual void VCOM_CALLTYPE CreateSwapControl(long dialogID, long itemID) = 0;
		virtual void VCOM_CALLTYPE CreateSwapPane(long dialogID, long swapControlID, long newGroupID) = 0;
		virtual void VCOM_CALLTYPE CreateSymbolDisplayControl(long dialogIDIn, long itemIDIn, const TXString& symbolRefIn, short heightIn, short widthIn, short marginIn, short renderModeIn, short standardViewIn) = 0;
		virtual void VCOM_CALLTYPE CreateTabControl(long dialogID, short itemID) = 0;
		virtual void VCOM_CALLTYPE CreateTabPane(long dialogID, short itemID, short groupID) = 0;
		virtual Boolean VCOM_CALLTYPE CreateThreeStateCheckBox(long liDialogID, long liComponentID, const TXString& strName) = 0;
		virtual Boolean VCOM_CALLTYPE CreateTreeControl(long nDialogID, long nComponentID, int nWidthInChars, int nHeightInChars) = 0;
		virtual void VCOM_CALLTYPE DeleteAllItems(long dialogID, long itemID) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteAllListBrowserItems(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteListBrowserColumn(long dialogID, long componentID, short columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteListBrowserItem(long dialogID, long componentID, short itemIndex) = 0;
		virtual void VCOM_CALLTYPE DeselectEditText(long dialogID, long controlID) = 0;
		virtual Boolean VCOM_CALLTYPE DisplayColorPopup(int top, int left, int bottom, int right, Boolean inDisplayByClassOption, ColorRef& ioColorRef, Boolean& ioIsByClass) = 0;
		virtual void VCOM_CALLTYPE DisplaySwapPane(long dialogID, long swapControlID, long groupNumber) = 0;
		virtual void VCOM_CALLTYPE DisplayTabPane(long dialogID, long controlID, long groupNumber) = 0;
		virtual void VCOM_CALLTYPE EnableItem(long dialogID, long itemID, Boolean bEnable) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowser(long dialogID, long componentID, Boolean enable) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowserClickAllDataChange(long dialogID, long componentID, Boolean enable) = 0;
		virtual void VCOM_CALLTYPE EnableListBrowserColumnLines(long dialogID, long componentID, Boolean enableColumnLines) = 0;
		virtual void VCOM_CALLTYPE EnableListBrowserColumnTracking(long dialogID, long componentID, short columnIndex, Boolean enableColumnTracking) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowserDragAndDrop(long dialogID, long componentID, Boolean bEnable) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowserDropOnIndices(long liDialogID, long liComponentID, int iStartIndex, int iEndIndex, Boolean bEnable) = 0;
		virtual void VCOM_CALLTYPE EnableListBrowserRadioColumnLines(long dialogID, long componentID, short columnIndex, Boolean enableRadioColumnLines) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowserSingleLineSelection(long dialogID, long componentID, Boolean enable) = 0;
		virtual void VCOM_CALLTYPE EnableListBrowserSorting(long dialogID, long componentID, Boolean enableSorting) = 0;
		virtual Boolean VCOM_CALLTYPE EnableListBrowserUpdates(long liDialogID, long liComponentID, Boolean bEnableUpdates) = 0;
		virtual Boolean VCOM_CALLTYPE EnsureListBrowserItemIsVisible(long dialogID, long componentID, int iIndex) = 0;
		virtual Boolean VCOM_CALLTYPE ExpandTreeControlItem(long nDialogID, long nComponentID, int nItemID, Boolean bExpand) = 0;
		virtual Boolean VCOM_CALLTYPE FindListBrowserColumnDataItem(long dialogID, long componentID, short columnIndex, const TXString& itemString, short& columnDataItemIndex) = 0;
		virtual Boolean VCOM_CALLTYPE FindListBrowserColumnItem(long dialogID, long componentID, short columnIndex, const TXString& itemString, short& itemIndex) = 0;
		virtual void VCOM_CALLTYPE FormatTextDialog(FormatTextType& formatTextRec) = 0;
		virtual long VCOM_CALLTYPE GetActiveEditItem(long dialogID) = 0;
		virtual long VCOM_CALLTYPE GetActivePane(long dialogID, long controlID) = 0;
		virtual void VCOM_CALLTYPE GetBooleanItem(long dialogID, long itemID, Boolean& state) = 0;
		virtual void VCOM_CALLTYPE GetChoiceCount(long dialogID, long itemID, short& numItems) = 0;
		virtual void VCOM_CALLTYPE GetChoiceIndex(long dialogID, long itemID, const TXString& strItemText, short& nItemIndex) = 0;
		virtual void VCOM_CALLTYPE GetChoiceText(long dialogID, long itemID, short nItemIndex, TXString& outItemText) = 0;
		virtual void VCOM_CALLTYPE GetCMYKColor(long dialogID, long itemID, TGSColorV2 &outColor) = 0;
		virtual void VCOM_CALLTYPE GetColorButton(long dialogID, long itemID, RGBColor& rgb) = 0;
		virtual void VCOM_CALLTYPE GetColorChoice(long dialogID, long itemID, short& colorIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentRect(long nDialogID, long nComponentID, int& nLeft, int& nTop, int& nRight, int& nBottom) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentTextWidth(long nDialogID, long nComponentID, int& nWidthInLMUnits) = 0;
		virtual void VCOM_CALLTYPE GetControlData(long dialogID, long itemID, long& data) = 0;
		virtual void VCOM_CALLTYPE GetCustomControlScrollArea(long dialogID, long component, int *leftStart, int *topStart) = 0;
		virtual bool VCOM_CALLTYPE GetEditInteger(long dialogID, long componentID, long& value) = 0;
		virtual bool VCOM_CALLTYPE GetEditReal(long dialogID, long componentID, short editRealType, double& value) = 0;
		virtual Boolean VCOM_CALLTYPE GetGradientSliderData(long dialogID, long componentID, short segmentIndex, double& spotPosition, double& midpointPosition, WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE GetGradientSliderSelectedMarker(long dialogID, long componentID, short& segmentIndex, short& markerType) = 0;
		virtual Boolean VCOM_CALLTYPE GetIconPushButtonState(long nDialogID, long nComponentID, Boolean& bPressed) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetImagePopupObject(long dialogID, long componentID, short itemIndex) = 0;
		virtual short VCOM_CALLTYPE GetImagePopupObjectItemIndex(long dialogID, long componentID, InternalIndex objectIndex) = 0;
		virtual short VCOM_CALLTYPE GetImagePopupSelectedItem(long dialogID, long componentID) = 0;
		virtual void VCOM_CALLTYPE GetItemText(long dialogID, long itemID, TXString& outCurrentText) = 0;
		virtual Boolean VCOM_CALLTYPE GetLayoutDialogPosition(long dialogID, short& left, short& top, short& right, short& bottom) = 0;
		virtual void VCOM_CALLTYPE GetLayoutDialogSize(long dialogID, short& width, short& height) = 0;
		virtual long VCOM_CALLTYPE GetLayoutFromRsrc(short textRsrcID) = 0;
		virtual void VCOM_CALLTYPE GetLineAttributeData(long dialogID, long itemID, short& lineStyle, short& lineWeight) = 0;
		virtual void VCOM_CALLTYPE GetLineStyleChoice(long dialogID, long itemID, short& lineStyle) = 0;
		virtual void VCOM_CALLTYPE GetLineWeightChoice(long dialogID, long itemID, short& lineWeight) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserColumnWidth(long dialogID, long componentID, short columnIndex, short& width) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserColumnDataItemInfo(long dialogID, long componentID, short columnIndex, short columnDataItemIndex, TXString& itemString, short &imageOn, short &imageOff, long &itemData) = 0;
		virtual int VCOM_CALLTYPE GetListBrowserColumnSortState(long dialogID, long componentID, int columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserColumnOwnerDrawnType(long dialogID, long componentID, int iIndex, int iSubIndex, int &iOwnerDrawnType) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserColumnHeaderToolTip(long dialogID, long componentID, int iColumnIndex, TXString& strToolTipPrimaryText, TXString& strToolTipSubText) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserColumnHeaderJust(long dialogID, long componentID, int iColumnIndex, int &iJustification) = 0;
		virtual short VCOM_CALLTYPE GetListBrowserControlType(long dialogID, long componentID, short columnIndex) = 0;
		virtual short VCOM_CALLTYPE GetListBrowserEditDisplayType(long dialogID, long componentID, short columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserEventInfo(long dialogID, long componentID, int& iEventType, int& iRowIndex, int& iColumnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemDashStyle(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iStyleIndex, int &iLineWeight) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemData(long nDialogID, long nComponentID, int nItemIndex, int nSubItemIndex, long& nUserData) = 0;
		virtual short VCOM_CALLTYPE GetListBrowserItemDisplayType(long dialogID, long componentID, short columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemFillForeColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iRedIndex, int &iGreenIndex, int &iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemFillBackColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iRedIndex, int &iGreenIndex, int &iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemGradientOrImageRefNumber(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, long &liRefNumber) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemInfo(long dialogID, long componentID, short itemIndex, short subItemIndex, TXString& itemString, short& imageIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemPenForeColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iRedIndex, int &iGreenIndex, int &iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemPenBackColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iRedIndex, int &iGreenIndex, int &iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemTextJust(long dialogID, long componentID, int itemIndex, int subItemIndex, int &justification) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemTextStyle(long dialogID, long componentID, int itemIndex, int subItemIndex, unsigned char &textStyle) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserItemTextColor(long dialogID, long componentID, int itemIndex, int subItemIndex, int &redIndex, int &greenIndex, int &blueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetListBrowserMultImageIndexes(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int& iImageIndex0, int& iImageIndex1, int& iImageIndex2) = 0;
		virtual int VCOM_CALLTYPE GetListBrowserSortColumn(long dialogID, long componentID) = 0;
		virtual void VCOM_CALLTYPE GetMarkerChoice(long dialogID, long itemID, MarkerType& style, Sint8& angle, double& size, double& width, Uint8& thicknessBasis, double& thickness) = 0;
		virtual short VCOM_CALLTYPE GetMarkerPopupSelectedItem(long dialogID, long componentID, char& style, char& angle, short& size) = 0;
		virtual GSHandle VCOM_CALLTYPE GetMultilineText(long dialogID, long itemID) = 0;
		virtual short VCOM_CALLTYPE GetNumGradientSliderSegments(long dialogID, long componentID) = 0;
		virtual short VCOM_CALLTYPE GetNumImagePopupItems(long dialogID, long componentID) = 0;
		virtual short VCOM_CALLTYPE GetNumListBrowserColumns(long dialogID, long componentID) = 0;
		virtual short VCOM_CALLTYPE GetNumListBrowserColumnDataItems(long dialogID, long componentID, short columnIndex) = 0;
		virtual short VCOM_CALLTYPE GetNumListBrowserItems(long dialogID, long componentID) = 0;
		virtual int VCOM_CALLTYPE GetNumSelectedListBrowserItems(long dialogID, long componentID) = 0;
		virtual void VCOM_CALLTYPE GetPatternData(long dialogID, long itemID, short& patternIndex, short& foreColor, short& backColor) = 0;
		virtual void VCOM_CALLTYPE GetSelChoiceIndex(long dialogID, long itemID, short inStartIndex, short& outSelectedIndex) = 0;
		virtual void VCOM_CALLTYPE GetSelectedChoiceIndex(long dialogID, long itemID, short& nItemIndex) = 0;
		virtual void VCOM_CALLTYPE GetSelectionRange(long dialogID, long controlID, int& startPos, int& endPos) = 0;
		virtual Boolean VCOM_CALLTYPE GetThreeStateCheckBoxState(long liDialogID, long liComponentID, int& iState) = 0;
		virtual Boolean VCOM_CALLTYPE GetTreeControlItemData(long nDialogID, long nComponentID, int nItemID, long& nItemData) = 0;
		virtual Boolean VCOM_CALLTYPE GetTreeControlSelectedItem(long nDialogID, long nComponentID, int& nItemID) = 0;
		virtual int VCOM_CALLTYPE InsertEnhancedPullDownMenuItem(long liDialogID, long liComponentID, const TXString& strName, int iIconID) = 0;
		virtual short VCOM_CALLTYPE InsertGradientSliderSegment(long dialogID, long componentID, double_param spotPosition, const WorldPt3& color) = 0;
		virtual short VCOM_CALLTYPE InsertImagePopupObjectItem(long dialogID, long componentID, InternalIndex objectIndex) = 0;
		virtual long VCOM_CALLTYPE InsertImagePopupResource(long dialogID, long componentID, long listID, long index) = 0;
		virtual int VCOM_CALLTYPE InsertImagePopupSeparator(long liDialogID, long liComponentID, const TXString& strLabel) = 0;
		virtual short VCOM_CALLTYPE InsertListBrowserColumn(long dialogID, long componentID, short columnIndex, const TXString& headerString, short width) = 0;
		virtual short VCOM_CALLTYPE InsertListBrowserColumnDataItem(long dialogID, long componentID, short columnIndex, const TXString& itemString, short imageOn, short imageOff, long itemData) = 0;
		virtual short VCOM_CALLTYPE InsertListBrowserItem(long dialogID, long componentID, short itemIndex, const TXString& itemString) = 0;
		virtual Boolean VCOM_CALLTYPE InsertProposedClassOrLayerItem(long nDialogID, long nComponentID, const TXString& strLabel, int nIconIndex) = 0;
		virtual int VCOM_CALLTYPE InsertTreeControlItem(long nDialogID, long nComponentID, const TXString& strItemLabel, int nParentID, int nAfterID) = 0;
		virtual Boolean VCOM_CALLTYPE IsItemEnabled(long nDialogID, long nComponentID) = 0;
		virtual Boolean VCOM_CALLTYPE IsItemVisible(long nDialogID, long nComponentID) = 0;
		virtual Boolean VCOM_CALLTYPE IsListBrowserColumnTrackingEnabled(long dialogID, long componentID, short columnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE IsListBrowserItemSelected(long dialogID, long componentID, short itemIndex) = 0;
		virtual Boolean VCOM_CALLTYPE IsListBrowserSortingEnabled(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE NotifyPullDownClicked(long nDialogID, long nComponentID) = 0;
		virtual TOSWndPtr VCOM_CALLTYPE OverrideControl(long dlogID, long controlID, void* pCallbackOSFunction) = 0;
		virtual void VCOM_CALLTYPE PostMinorNoteAlert(short strListID, short index) = 0;
		virtual void VCOM_CALLTYPE PostMinorStopAlert(short strListID, short index) = 0;
		virtual void VCOM_CALLTYPE PostNoteAlert(short strListID, short index) = 0;
		virtual void VCOM_CALLTYPE PostStopAlert(short strListID, short index) = 0;
		virtual Boolean VCOM_CALLTYPE RefreshItem(long liDialogID, long liComponentID) = 0;
		virtual Boolean VCOM_CALLTYPE RefreshListBrowser(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveAllImagePopupItems(long dialogID, long componentID) = 0;
		virtual void VCOM_CALLTYPE RemoveAllListBrowserColumnDataItems(long dialogID, long componentID, short columnIndex) = 0;
		virtual void VCOM_CALLTYPE RemoveChoice(long dialogID, long itemID, short itemIndexToRemove) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveEnhancedPullDownMenuItemRange(long liDialogID, long liComponentID, int iStartItemIndexToRemove, int iEndItemIndexToRemove) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveGradientSliderSegment(long dialogID, long componentID, short segmentIndex) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveImagePopupItem(long dialogID, long componentID, short itemIndex) = 0;
		virtual void VCOM_CALLTYPE RemoveListBoxTabStop(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveListBrowserColumnDataItem(long dialogID, long componentID, short columnIndex, short columnDataItemIndex) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveTreeControlItem(long nDialogID, long nComponentID, int nItemID) = 0;
		virtual long VCOM_CALLTYPE RunLayoutDialog(long dialogID, GS_EventHandlerProcPtr handleEvent = NULL, void* env = NULL) = 0;
		virtual void VCOM_CALLTYPE SelectChoice(long dialogID, long itemID, short nItemIndex, Boolean bSelect = true) = 0;
		virtual void VCOM_CALLTYPE SelectEditText(long dialogID, long itemID) = 0;
		virtual Boolean VCOM_CALLTYPE SelectTreeControlItem(long nDialogID, long nComponentID, int nItemID) = 0;
		virtual bool VCOM_CALLTYPE SetBelowItem(long dialogID, long srcItemID, long  belowItemID, short indent = 0, short lineSpacing = 0) = 0;
		virtual void VCOM_CALLTYPE SetBooleanItem(long dialogID, long itemID, Boolean bSelect) = 0;
		virtual void VCOM_CALLTYPE SetCMYKColor(long dialogID, long itemID, TGSColorV2 &inColor) = 0;
		virtual void VCOM_CALLTYPE SetColorButton(long dialogID, long itemID, const RGBColor& rgb) = 0;
		virtual void VCOM_CALLTYPE SetColorChoice(long dialogID, long itemID, short colorIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentIndeterminate(long nDialogID, long nComponentID, Boolean bIndeterminateState) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentSize(long nDialogID, long nComponentID, int nWidthPixels, int nHeightPixels) = 0;
		virtual void VCOM_CALLTYPE SetControlData(long dialogID, long itemID, long data) = 0;
		virtual void VCOM_CALLTYPE SetEdgeBinding(long dialogID, long itemID, Boolean boundToLeft, Boolean boundToRight, Boolean boundToTop, Boolean boundToBottom) = 0;
		virtual void VCOM_CALLTYPE SetEditInteger(long dialogID, long componentID, long value) = 0;
		virtual void VCOM_CALLTYPE SetEditReal(long dialogID, long componentID, short editRealType, double value) = 0;
		virtual bool VCOM_CALLTYPE SetFirstGroupItem(long dialogID, long groupID, long firstItemID) = 0;
		virtual bool VCOM_CALLTYPE SetFirstLayoutItem(long dialogID, long firstItemID) = 0;
		virtual Boolean VCOM_CALLTYPE SetFocusOnItem(long liDialogID, long liComponentID) = 0;
		virtual Boolean VCOM_CALLTYPE SetFocusOnListBrowser(long dialogID, long componentID) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientSliderData(long dialogID, long componentID, short& segmentIndex, double_param spotPosition, double_param midpointPosition, const WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientSliderSelectedMarker(long dialogID, long componentID, short segmentIndex, short markerType) = 0;
		virtual void VCOM_CALLTYPE SetHelpText(long dialogID, long itemID, const TXString& helpText) = 0;
		virtual Boolean VCOM_CALLTYPE SetIconPushButtonState(long nDialogID, long nComponentID, Boolean bPressed) = 0;
		virtual Boolean VCOM_CALLTYPE SetImageControlHandle(long liDialogID, long liComponentID, MCObjectHandle hImage) = 0;
		virtual Boolean VCOM_CALLTYPE SetImageControlPath(long nDialogID, long nComponentID, const TXString& strPath) = 0;
		virtual Boolean VCOM_CALLTYPE SetImagePopupSelectedItem(long dialogID, long componentID, short itemIndex) = 0;
		virtual void VCOM_CALLTYPE SetItemText(long dialogID, long itemID, const TXString& strNewText) = 0;
		virtual Boolean VCOM_CALLTYPE SetItemToolTipText(long nDialogID, long nComponentID, const TXString& strToolTip, const TXString& strSubToolTip, int nIndex, int nSubIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetLayoutDialogPosition(long dialogID, short left, short top) = 0;
		virtual void VCOM_CALLTYPE SetLayoutDialogSize(long dialogID, short width, short height) = 0;
		virtual Boolean VCOM_CALLTYPE SetLayoutOption(long dialogID, short option, long value) = 0;
		virtual void VCOM_CALLTYPE SetLineAttributeData(long dialogID, long itemID, short lineStyle, short lineWeight) = 0;
		virtual void VCOM_CALLTYPE SetLineStyleChoice(long dialogID, long itemID, short lineStyle) = 0;
		virtual void VCOM_CALLTYPE SetLineWeightChoice(long dialogID, long itemID, short lineWeight) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserColumnWidth(long dialogID, long componentID, short fromColumn, short toColumn, short width) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserColumnOwnerDrawnType(long dialogID, long componentID, int iIndex, int iSubIndex, int iOwnerDrawnType) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserColumnHeaderToolTip(long dialogID, long componentID, int iColumnIndex, const TXString& strToolTipPrimaryText, const TXString& strToolTipSubText) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserColumnHeaderJust(long dialogID, long componentID, int iColumnIndex, int iJustification) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserColumnImage(long nDialogID, long nComponentID, int nColumnIndex, int nImageIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserControlType(long dialogID, long componentID, short columnIndex, short controlType) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserDragAndDropColumn(long dialogID, long componentID, int iColumnIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserEditDisplayType(long dialogID, long componentID, short columnIndex, short displayType) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemDashStyle(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iStyleIndex, int iLineWeight) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemData(long nDialogID, long nComponentID, int nItemIndex, int nSubItemIndex, long nUserData) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemDisplayType(long dialogID, long componentID, short columnIndex, short displayType) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemFillForeColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iRedIndex, int iGreenIndex, int iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemFillBackColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iRedIndex, int iGreenIndex, int iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemGradientOrImageRefNumber(long dialogID, long componentID, int itemIndex, int iSubItemIndex, long liRefNumber) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemInfo(long dialogID, long componentID, short itemIndex, short subItemIndex, const TXString& itemString, short imageIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemPenForeColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iRedIndex, int iGreenIndex, int iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemPenBackColor(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iRedIndex, int iGreenIndex, int iBlueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemTextJust(long dialogID, long componentID, int itemIndex, int subItemIndex, int justification) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemTextStyle(long dialogID, long componentID, int itemIndex, int subItemIndex, unsigned char textStyle) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemTextColor(long dialogID, long componentID, int itemIndex, int subItemIndex, int redIndex, int greenIndex, int blueIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserItemUsingColumnDataItem(long dialogID, long componentID, short itemIndex, short subItemIndex, short columnDataItemIndex) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserMultImageIndexes(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iImageIndex0, int iImageIndex1, int iImageIndex2) = 0;
		virtual Boolean VCOM_CALLTYPE SetListBrowserSelection(long dialogID, long componentID, short firstItemIndex, short lastItemIndex, Boolean select) = 0;
		virtual void VCOM_CALLTYPE SetListBrowserSortColumn(long dialogID, long componentID, int columnIndex, Boolean isAscending) = 0;
		virtual void VCOM_CALLTYPE SetMarkerChoice(long dialogID, long itemID, MarkerType style, Sint8 angle, double size, double width, Uint8 thicknessBasis, double thickness) = 0;
		virtual void VCOM_CALLTYPE SetMultilineText(long dialogID, long itemID, GSHandle text) = 0;
		virtual void VCOM_CALLTYPE SetPatternData(long dialogID, long itemID, short patternIndex, short foreColor, short backColor) = 0;
		virtual void VCOM_CALLTYPE SetProportionalBinding(long dialogID, long itemID, Boolean leftProportional, Boolean rightProportional, Boolean topProportional, Boolean bottomProportional) = 0;
		virtual bool VCOM_CALLTYPE SetRightItem(long dialogID, long srcItemID, long rightItemID, short indent = 0, short lineSpacing = 0) = 0;
		virtual void VCOM_CALLTYPE SetSelectionRange(long dialogID, long controlID, int startPos, int endPos) = 0;
		virtual void VCOM_CALLTYPE SetTextEditable(long dialogID, long itemID, Boolean editable) = 0;
		virtual Boolean VCOM_CALLTYPE SetThreeStateCheckBoxState(long liDialogID, long liComponentID, int iState) = 0;
		virtual Boolean VCOM_CALLTYPE SetTreeControlItemData(long nDialogID, long nComponentID, int nItemID, long nItemData) = 0;
		virtual Boolean VCOM_CALLTYPE ShowEnhancedPullDownMenuGroupIcon(long liDialogID, long liComponentID, Boolean bShowGroupIcon) = 0;
		virtual void VCOM_CALLTYPE ShowItem(long dialogID, long itemID, Boolean bShow) = 0;
		virtual void VCOM_CALLTYPE UpdateCustomControlScrollArea(long dialogID, long component, int width, int height, int leftStart, int topStart, int stepSize, bool liveUpdate, bool alwaysShowHoriz = false, bool alwaysShowVert = false ) = 0;
		virtual void VCOM_CALLTYPE UpdateSymbolDisplayControl(long dialogIDIn, long itemIDIn, const TXString& symbolRefIn, short renderModeIn, short standardViewIn) = 0;
		virtual bool VCOM_CALLTYPE VerifyLayout(long dialogID) = 0;
		virtual InternalIndex VCOM_CALLTYPE AddClass(const TXString& className) = 0;
		virtual Boolean VCOM_CALLTYPE AddDashPat(const DashPatType& theDash) = 0;
		virtual InternalIndex VCOM_CALLTYPE AddGuidesClass() = 0;
		virtual void VCOM_CALLTYPE ColorIndexToName(const ColorRef& inColorRef, TXString& outColorName) = 0;
		virtual void VCOM_CALLTYPE ColorIndexToRGB(ColorRef colorIndex, RGBColor& rgb) = 0;
		virtual Boolean VCOM_CALLTYPE CopySymbol(const TXString& inFilePath, const TXString& symName) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateGradient(const TXString& name) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateHatch(const TXString& inName, Boolean inUsePageUnits, Boolean inRotateInWalls, Boolean inRotateInSymbols, Boolean inTransparent,  ColorRef inFillColorIndex) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateImageFromPaint(MCObjectHandle paint, const TXString& imageName) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreatePaintFromImage(MCObjectHandle image) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateWallStyle(const TXString& wallStyleName) = 0;
		virtual void VCOM_CALLTYPE DeleteClass(const TXString& className) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteDashPat(short deleteIndex, short setEntsToIndex) = 0;
		virtual void VCOM_CALLTYPE DeselectAll() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetActiveSymbolDef() = 0;
		virtual Boolean VCOM_CALLTYPE GetClassVisibility(InternalIndex index) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetCurrentLayer() = 0;
		virtual short VCOM_CALLTYPE GetCurrentView() = 0;
		virtual Boolean VCOM_CALLTYPE GetDashPat(short index, DashPatType& theDash) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetDimensionClassID() = 0;
		virtual Boolean VCOM_CALLTYPE GetGradientData(MCObjectHandle gradient, short segmentIndex, double& spotPosition, double& midpointPosition, WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE GetGradientMidpointPosition(MCObjectHandle gradient, short segmentIndex, double& position) = 0;
		virtual void VCOM_CALLTYPE GetGradientSpotColor(MCObjectHandle gradient, short segmentIndex, WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE GetGradientSpotPosition(MCObjectHandle gradient, short segmentIndex, double& position) = 0;
		virtual void VCOM_CALLTYPE GetGridUnits(WorldCoord& x, WorldCoord& y) = 0;
		virtual Boolean VCOM_CALLTYPE GetHatchLevel(MCObjectHandle inHatchDef, short inLevel, WorldPt& outStartPt, WorldPt& outRepeatVec, double& outDashFactor, WorldPt& outOffsetVec, ColorRef& outColorIndex, short& outMilsLineWeight) = 0;
		virtual void VCOM_CALLTYPE GetLayerScaleN(MCObjectHandle h, double_gs& scale) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetNamedLayer(const TXString& layerName) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetNoneClassID() = 0;
		virtual short VCOM_CALLTYPE GetNumDashPats() = 0;
		virtual short VCOM_CALLTYPE GetNumGradientSegments(MCObjectHandle gradient) = 0;
		virtual void VCOM_CALLTYPE GetPageBounds(WorldRect& bounds) = 0;
		virtual Boolean VCOM_CALLTYPE GetPatternBits(short inIndex, Uint8 outPattern[8]) = 0;
		virtual Boolean VCOM_CALLTYPE GetSheetLayerUserOrigin(MCObjectHandle layerHandle, WorldPt& origin) = 0;
		virtual void VCOM_CALLTYPE GetUnits(UnitsType& currentUnits) = 0;
		virtual void VCOM_CALLTYPE GetUserOrigin(WorldPt& origin) = 0;
		virtual Boolean VCOM_CALLTYPE GetUserOriginFP(WorldPt& outOrigin) = 0;
		virtual short VCOM_CALLTYPE InsertGradientSegment(MCObjectHandle gradient, double_param spotPosition, double_param midpointPosition, const WorldPt3& color) = 0;
		virtual void VCOM_CALLTYPE MarkCurrentDocChanged() = 0;
		virtual long VCOM_CALLTYPE NumSelectedObjects() = 0;
		virtual Boolean VCOM_CALLTYPE RemoveGradientSegment(MCObjectHandle gradient, short segmentIndex) = 0;
		virtual void VCOM_CALLTYPE ResetAllObjectsVisibility() = 0;
		virtual void VCOM_CALLTYPE RGBToColorIndex(const RGBColor& rgb, ColorRef& colorIndex) = 0;
		virtual void VCOM_CALLTYPE SelectAll() = 0;
		virtual void VCOM_CALLTYPE SetActiveSymbolDef(MCObjectHandle aSymDef) = 0;
		virtual void VCOM_CALLTYPE SetClassVisibility(InternalIndex index, Boolean visible) = 0;
		virtual void VCOM_CALLTYPE SetCurrentLayer(MCObjectHandle theLayer) = 0;
		virtual void VCOM_CALLTYPE SetDashPat(short index, const DashPatType& theDash) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientData(MCObjectHandle gradient, short& segmentIndex, double_param spotPosition, double_param midpointPosition, const WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientMidpointPosition(MCObjectHandle gradient, short segmentIndex, double_param position) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientSpotColor(MCObjectHandle gradient, short segmentIndex, const WorldPt3& color) = 0;
		virtual Boolean VCOM_CALLTYPE SetGradientSpotPosition(MCObjectHandle gradient, short& segmentIndex, double_param position) = 0;
		virtual Boolean VCOM_CALLTYPE SetHatchLevel(MCObjectHandle inHatchDef, short inLevel, const WorldPt& inStartPt, const WorldPt& inRepeatVec, double_param inDashFactor, const WorldPt& inOffsetVec, ColorRef inColorIndex, short inMilsLineWeight) = 0;
		virtual void VCOM_CALLTYPE SetLayerScaleN(MCObjectHandle theLayer, double_param newScale) = 0;
		virtual void VCOM_CALLTYPE SetMarker(MCObjectHandle obj, MarkerType style, short size, short angle, Boolean start, Boolean end) = 0;
		virtual void VCOM_CALLTYPE SetProjection(MCObjectHandle theLayer, short newProj, Boolean confirmWithUser, Boolean doProgress) = 0;
		virtual Boolean VCOM_CALLTYPE SetRenderMode(MCObjectHandle theLayer, short newRenderMode, Boolean immediate, Boolean doProgress) = 0;
		virtual Boolean VCOM_CALLTYPE SetSheetLayerUserOrigin(MCObjectHandle layerHandle, const WorldPt& origin) = 0;
		virtual void VCOM_CALLTYPE SetUserOrigin(const WorldPt& origin) = 0;
		virtual Boolean VCOM_CALLTYPE SetUserOriginFP(const WorldPt& inOrigin) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ShowCreateImageDialog() = 0;
		virtual Boolean VCOM_CALLTYPE ShowGradientEditorDialog(MCObjectHandle& gradient) = 0;
		virtual Boolean VCOM_CALLTYPE ValidClass(InternalIndex classID) = 0;
		virtual TTesselator VCOM_CALLTYPE CreateTessellator(short convertRes3D) = 0;
		virtual void VCOM_CALLTYPE DeleteTessellator(TTesselator pTess) = 0;
		virtual bool VCOM_CALLTYPE TesselateObject(TTesselator pTess, MCObjectHandle h, GS_TessellateIteratorProcPtr proc, void* pEnv) = 0;
		virtual Boolean VCOM_CALLTYPE UpdateThumbnailPreview(InternalIndex inIndex) = 0;
		virtual void VCOM_CALLTYPE CloseXCode(long extCodeInfoID) = 0;
		virtual GenericFunctionPtr VCOM_CALLTYPE OpenXCode(long extCodeInfoID, Boolean needsResourceFileOpen) = 0;
		virtual void VCOM_CALLTYPE GSDisposeHandle(GSHandle handle) = 0;
		virtual void VCOM_CALLTYPE GSDisposePtr(void* p) = 0;
		virtual void VCOM_CALLTYPE GSGetHandleSize(GSHandle handle, size_t& size) = 0;
		virtual void VCOM_CALLTYPE GSGetHandleState(GSHandle handle, Boolean& isLocked) = 0;
		virtual void VCOM_CALLTYPE GSHLock(GSHandle handle) = 0;
		virtual void VCOM_CALLTYPE GSHUnlock(GSHandle handle) = 0;
		virtual GSHandle VCOM_CALLTYPE GSNewHandle(size_t size) = 0;
		virtual VoidPtr VCOM_CALLTYPE GSNewPtr(size_t size) = 0;
		virtual void VCOM_CALLTYPE GSReduceHandleSize(GSHandle handle, size_t size) = 0;
		virtual Boolean VCOM_CALLTYPE GSSetHandleSize(GSHandle handle, size_t size) = 0;
		virtual void VCOM_CALLTYPE GSSetHandleState(GSHandle handle, Boolean isLocked) = 0;
		virtual VoidPtr VCOM_CALLTYPE GSSetPtrSize(void* p, size_t size) = 0;
		virtual long VCOM_CALLTYPE AddResourceToList(long listID, MCObjectHandle resource) = 0;
		virtual long VCOM_CALLTYPE BuildResourceList(short objectType, FolderSpecifier folderIndex, const TXString& subFolderName, long& numItems) = 0;
		virtual void VCOM_CALLTYPE DeleteResourceFromList(long listID, long index) = 0;
		virtual void VCOM_CALLTYPE DisposeResourceList(long listID) = 0;
		virtual void VCOM_CALLTYPE GetActualNameFromResourceList(long listID, long index, TXString& name) = 0;
		virtual short VCOM_CALLTYPE GetMyMenuCommandIndex() = 0;
		virtual void VCOM_CALLTYPE GetNameFromResourceList(long listID, long index, TXString& name) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetResourceFromList(long listID, long index) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ImportResourceToCurrentFile(long listID, long index) = 0;
		virtual Boolean VCOM_CALLTYPE RegisterMenuForCallback(short menuIndex, OSType whichChange) = 0;
		virtual long VCOM_CALLTYPE ResourceListSize(long listID) = 0;
		virtual void VCOM_CALLTYPE UnregisterMenuForCallback(short menuIndex, OSType whichChange) = 0;
		virtual void VCOM_CALLTYPE AddButtonMode(short iconID) = 0;
		virtual void VCOM_CALLTYPE AddCheckMode(short initialSetting, short iconID) = 0;
		virtual void VCOM_CALLTYPE AddPullDownMenuItem(short group, const TXString& item) = 0;
		virtual void VCOM_CALLTYPE AddPullDownMenuMode(const TXString& label) = 0;
		virtual void VCOM_CALLTYPE AddRadioMode(short initialSetting, short numButtons, short id1, short id2, short id3 = 0, short id4 = 0, short id5 = 0, short id6 = 0) = 0;
		virtual void VCOM_CALLTYPE AddTxtBtnMode(const TXString& theText) = 0;
		virtual void VCOM_CALLTYPE EnableMode(short modeNum, Boolean enable) = 0;
		virtual short VCOM_CALLTYPE GetModeValue(short modeNum) = 0;
		virtual void VCOM_CALLTYPE SetHelpString(const TXString& helpMessage) = 0;
		virtual void VCOM_CALLTYPE SetModeValue(short modeNum, short theValue) = 0;
		virtual void VCOM_CALLTYPE SetPullDownMenuSelection(short group, short selectedItem) = 0;
		virtual void VCOM_CALLTYPE ClassIDToName(InternalIndex classID, TXString& outClassName) = 0;
		virtual InternalIndex VCOM_CALLTYPE ClassNameToID(const TXString& className) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE InternalIndexToHandle(InternalIndex index) = 0;
		virtual void VCOM_CALLTYPE InternalIndexToNameN(InternalIndex index, TXString& outName) = 0;
		virtual InternalIndex VCOM_CALLTYPE MaxClassID() = 0;
		virtual Boolean VCOM_CALLTYPE NameToInternalIndexN(const TXString& name, InternalIndex& index) = 0;
		virtual Boolean VCOM_CALLTYPE SetPolyVertexLoopDirection(MCObjectHandle ioPolyToSet, PolyDirectionSpecType inPolyDirectionSpec) = 0;
		virtual void VCOM_CALLTYPE AddToConstraintModel(MCObjectHandle obj) = 0;
		virtual Boolean VCOM_CALLTYPE AddViewportAnnotationObject(MCObjectHandle viewportHandle, MCObjectHandle annotationHandle) = 0;
		virtual Boolean VCOM_CALLTYPE AppendParameterWidget(long ObjectID, int parameterID, const TXString& text, long data) = 0;
		virtual Boolean VCOM_CALLTYPE AppendWidget(long ObjectID, int widgetType, int eventID, const TXString& text, long data) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ConvertTo3DPolygons(MCObjectHandle h, Boolean preserveOriginal = false) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE ConvertToNURBS(MCObjectHandle h, Boolean keepOrig = false) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ConvertToPolygon(MCObjectHandle h, Boolean preserveOriginal = false) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ConvertToPolygonN(MCObjectHandle h, Boolean preserveOriginal , short conversionResolution) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ConvertToPolyline(MCObjectHandle h, Boolean preserveOriginal = false) = 0;
		virtual Boolean VCOM_CALLTYPE ConvertToUnstyledWall(MCObjectHandle theWall) = 0;
		virtual void VCOM_CALLTYPE CreateConstraintModel(MCObjectHandle obj, Boolean useSelection) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateOffsetNurbsObjectHandle(MCObjectHandle h,   double offset) = 0;
		virtual Boolean VCOM_CALLTYPE CustomObjectControlPtsCreate( MCObjectHandle inOwnerObj, int numDataElements, GS_CustomObjectControlPtsInitProcPtr initProc,void* env) = 0;
		virtual Boolean VCOM_CALLTYPE CustomObjectControlPtsRemove(MCObjectHandle inOwnerObj) = 0;
		virtual Boolean VCOM_CALLTYPE CustomObjectControlPtSet(MCObjectHandle inOwnerObj,int dataIndex, const WorldPt3& pt,Boolean is2DOnly,Boolean isHidden,int inClientID) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CustomObjectGetSurfaceProxy(MCObjectHandle inPathObject) = 0;
		virtual Boolean VCOM_CALLTYPE CustomObjectReplacePath(MCObjectHandle inPathObject, MCObjectHandle pathPolyline) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteAllComponents(MCObjectHandle wall) = 0;
		virtual Boolean VCOM_CALLTYPE DeleteComponent(MCObjectHandle wall, Sint16 index) = 0;
		virtual void VCOM_CALLTYPE DeleteConstraint(MCObjectHandle obj, MCObjectHandle constraint) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE DuplicateObject(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE EnableParameter(MCObjectHandle inCustomObject, short inParameterIndex, Boolean inSetEnabled) = 0;
		virtual Boolean VCOM_CALLTYPE EvaluateNurbsSurfacePointAndNormal(MCObjectHandle surfaceHandle, double u, double v, WorldPt3& point,  WorldPt3& normal) = 0;
		virtual void VCOM_CALLTYPE ForEachLayer( GS_ForEachObjectProcPtr action, void *actionEnv) = 0;
		virtual void VCOM_CALLTYPE ForEachObject( short traverseWhat, GS_ForEachObjectProcPtr action, void *actionEnv) = 0;
		virtual void VCOM_CALLTYPE Get2DPt(MCObjectHandle obj, short index, WorldPt& loc) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetBinaryConstraint(short type, MCObjectHandle obj1, MCObjectHandle obj2, short obj1VertexA, short obj1VertexB, short obj2VertexA, short obj2VertexB, long containedObj1, long containedObj2) = 0;
		virtual void VCOM_CALLTYPE GetClosestPt(MCObjectHandle& obj, const WorldPt& pt, short& index, long& containedObj) = 0;
		virtual void VCOM_CALLTYPE GetClosestSide(MCObjectHandle obj, const WorldPt& pt, short& indexA, short& indexB) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentClass(MCObjectHandle wall, Sint16 index, long &componentClass) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentFill(MCObjectHandle wall, Sint16 index, long &fill) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentFillColors(MCObjectHandle wall, Sint16 index, ColorRef &fillForeColor, ColorRef &fillBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentName(MCObjectHandle wall, Sint16 index, TXString& outComponentName) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentPenColors(MCObjectHandle wall, Sint16 index, ColorRef &leftPenForeColor, ColorRef &leftPenBackColor, ColorRef &rightPenForeColor, ColorRef &rightPenBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentPenStyles(MCObjectHandle wall, Sint16 index, Sint8 &penStyleLeft, Sint8 &penStyleRight) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentPenWeights(MCObjectHandle wall, Sint16 index, Uint8 &penWeightLeft, Uint8 &penWeightRight) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentUseFillClassAttr(MCObjectHandle wall, Sint16 index, Boolean &useClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentUsePenClassAttr(MCObjectHandle wall, Sint16 index, Boolean &leftPenUseClassAttr, Boolean &rightPenUseClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE GetComponentWidth(MCObjectHandle wall, Sint16 index, WorldCoord &width) = 0;
		virtual Boolean VCOM_CALLTYPE GetCustomObjectColor(MCObjectHandle objectHand, int iTagID, ColorRef& ioColorRef) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetCustomObjectPath(MCObjectHandle objectHand) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetCustomObjectProfileGroup(MCObjectHandle objectHand) = 0;
		virtual Boolean VCOM_CALLTYPE GetDimensionStandardVariable(short dimensionIndex, short fieldSelector, TVariableBlock& value) = 0;
		virtual Boolean VCOM_CALLTYPE GetDistanceAlongNurbsCurve(MCObjectHandle inNurbsCurve, double_param inParameter1, long inParameter1CurveIndex,  double_param inParameter2, long inParameter2CurveIndex, double_gs& outDistance) = 0;
		virtual Boolean VCOM_CALLTYPE GetLocalizedPluginChoice(const TXString& pluginName, const TXString& parameterName, int choiceIndex, TXString& localizedChoice) = 0;
		virtual Boolean VCOM_CALLTYPE GetLocalizedPluginName(const TXString& pluginName, TXString& outLocalizedName) = 0;
		virtual Boolean VCOM_CALLTYPE GetLocalizedPluginParameter(const TXString& pluginName, const TXString& parameterName, TXString& localizedParameterName) = 0;
		virtual Boolean VCOM_CALLTYPE GetNumberOfComponents(MCObjectHandle wall, short& numComponents) = 0;
		virtual Boolean VCOM_CALLTYPE GetNurbsObjectDistanceFromPoint(MCObjectHandle h, const WorldPt&  point,  double& distance) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjectProperty(MCObjectHandle hObject, long inPropID, Boolean& outValue) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjectPropertyChar(MCObjectHandle hObject, long inPropID, unsigned char& outValue) = 0;
		virtual Boolean VCOM_CALLTYPE GetObjectVariable(MCObjectHandle theObject, short setSelector, TVariableBlock& value) = 0;
		virtual Boolean VCOM_CALLTYPE GetParameterOnNurbsCurve(MCObjectHandle h, const WorldPt3&  point,  double& parameter, long& index) = 0;
		virtual Boolean VCOM_CALLTYPE GetPointAndParameterOnNurbsCurveAtGivenLength(MCObjectHandle inNurbCurve, double_param inPercentOfLength, WorldPt3& outPointOnCurve,  double_gs& outParametricParameter, long& outPiecewiseCurveIndex) = 0;
		virtual Boolean VCOM_CALLTYPE GetRoofEdge(MCObjectHandle object, short index, WorldPt& vertexPt, double_gs& slope, WorldCoord& projection, WorldCoord& eaveHeight) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetSingularConstraint(short type, MCObjectHandle obj, short vertexA, short vertexB) = 0;
		virtual Boolean VCOM_CALLTYPE GetViewportClassVisibility(MCObjectHandle viewportHandle, InternalIndex classIndex, short& visibilityType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetViewportCropObject(MCObjectHandle viewportHandle) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetViewportGroup(MCObjectHandle viewportHandle, short groupType) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetViewportGroupParent(MCObjectHandle groupHandle) = 0;
		virtual Boolean VCOM_CALLTYPE GetViewportLayerVisibility(MCObjectHandle viewportHandle, MCObjectHandle layerHandle, short& visibilityType) = 0;
		virtual MeshErrorType VCOM_CALLTYPE GroupToMesh(MCObjectHandle theMesh) = 0;
		virtual Boolean VCOM_CALLTYPE HasConstraint(MCObjectHandle obj) = 0;
		virtual Boolean VCOM_CALLTYPE InsertAllParametersAsWidgets(long inObjectID) = 0;
		virtual Boolean VCOM_CALLTYPE InsertNewComponent(MCObjectHandle wall, Sint16 beforeIndex, WorldCoord width, long fill, Uint8 penWeightLeft, Uint8 penWeightRight, Sint8 penStyleLeft, Sint8 penStyleRight) = 0;
		virtual Boolean VCOM_CALLTYPE InsertParameterWidget(long ObjectID, int position, int parameterID, const TXString& text, long data) = 0;
		virtual Boolean VCOM_CALLTYPE InsertWidget(long ObjectID, int position, int widgetType, int eventID, const TXString& text, long data) = 0;
		virtual Boolean VCOM_CALLTYPE IsObjectFromReferencedFile(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE IsViewportGroupContainedObject(MCObjectHandle objectHandle,  short groupType) = 0;
		virtual void VCOM_CALLTYPE MakePolyshapeValid(MCObjectHandle thePoly) = 0;
		virtual MeshErrorType VCOM_CALLTYPE MeshToGroup(MCObjectHandle theMesh) = 0;
		virtual void VCOM_CALLTYPE MoveObject(MCObjectHandle h, WorldCoord dx, WorldCoord dy) = 0;
		virtual void VCOM_CALLTYPE MoveObject3D(MCObjectHandle h, WorldCoord dx, WorldCoord dy, WorldCoord dz) = 0;
		virtual void VCOM_CALLTYPE NotifyLayerChange(long liAdditionalData = 0) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveCustomObjectColor(MCObjectHandle objectHand, int iTagID) = 0;
		virtual Boolean VCOM_CALLTYPE RemoveRoofEdge(MCObjectHandle object, short index) = 0;
		virtual void VCOM_CALLTYPE ResetObject(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE RotateObjectN(MCObjectHandle& h, const WorldPt& rotCenter, double_param angle) = 0;
		virtual Boolean VCOM_CALLTYPE ScaleObject3D(MCObjectHandle ioObject, const WorldPt3& scaleCen, const Vector& scaleVector) = 0;
		virtual void VCOM_CALLTYPE ScaleObjectN(MCObjectHandle h, const WorldPt& scaleCen, double_param scaleX, double_param scaleY) = 0;
		virtual Boolean VCOM_CALLTYPE SetBinaryConstraint(short type, MCObjectHandle obj1, MCObjectHandle obj2, short obj1VertexA, short obj1VertexB, short obj2VertexA, short obj2VertexB, long containedObj1, long containedObj2) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentClass(MCObjectHandle wall, Sint16 index, long componentClass) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentFill(MCObjectHandle wall, Sint16 index, long fill) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentFillColors(MCObjectHandle wall, Sint16 index, ColorRef fillForeColor, ColorRef fillBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentName(MCObjectHandle wall, Sint16 index, const TXString& componentName) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentPenColors(MCObjectHandle wall, Sint16 index, ColorRef leftPenForeColor, ColorRef leftPenBackColor, ColorRef rightPenForeColor, ColorRef rightPenBackColor) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentPenStyles(MCObjectHandle wall, Sint16 index, Sint8 penStyleLeft, Sint8 penStyleRight) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentPenWeights(MCObjectHandle wall, Sint16 index, Uint8 penWeightLeft, Uint8 penWeightRight) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentUseFillClassAttr(MCObjectHandle wall, Sint16 index, Boolean useClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentUsePenClassAttr(MCObjectHandle wall, Sint16 index, Boolean leftPenUseClassAttr, Boolean rightPenUseClassAttr) = 0;
		virtual Boolean VCOM_CALLTYPE SetComponentWidth(MCObjectHandle wall, Sint16 index, WorldCoord width) = 0;
		virtual void VCOM_CALLTYPE SetConstraintValue(MCObjectHandle constraint, double_param value) = 0;
		virtual Boolean VCOM_CALLTYPE SetCustomDimensionStandardVariable(short dimensionIndex, short fieldSelector, const TVariableBlock& value) = 0;
		virtual Boolean VCOM_CALLTYPE SetCustomObjectColor(MCObjectHandle objectHand, int iTagID, ColorRef inColorRef) = 0;
		virtual Boolean VCOM_CALLTYPE SetCustomObjectControlPointVisibility(MCObjectHandle objectHand, short controlPtIndex, Boolean setVisible) = 0;
		virtual Boolean VCOM_CALLTYPE SetCustomObjectPath(MCObjectHandle objectHand, MCObjectHandle pathHand) = 0;
		virtual Boolean VCOM_CALLTYPE SetCustomObjectProfileGroup(MCObjectHandle objectHand, MCObjectHandle profileGroupHand) = 0;
		virtual void VCOM_CALLTYPE SetDefinition(MCObjectHandle h, MCObjectHandle newDef) = 0;
		virtual Boolean VCOM_CALLTYPE SetObjectProperty(long inCodeRefID, long inPropID, Boolean inValue) = 0;
		virtual Boolean VCOM_CALLTYPE SetObjectPropertyChar(long inCodeRefID, long inPropID, unsigned char inValue) = 0;
		virtual Boolean VCOM_CALLTYPE SetObjectVariable(MCObjectHandle theObject, short setSelector, const TVariableBlock& value) = 0;
		virtual void VCOM_CALLTYPE SetParameterVisibility(MCObjectHandle inCustomObject, short inParameterIndex, Boolean inSetVisible) = 0;
		virtual void VCOM_CALLTYPE SetRoofEdge(MCObjectHandle object, short index, const WorldPt& vertexPt, double_param slope, WorldCoord projection, WorldCoord eaveHeight) = 0;
		virtual Boolean VCOM_CALLTYPE SetSingularConstraint(short type, MCObjectHandle obj, short vertexA, short vertexB) = 0;
		virtual Boolean VCOM_CALLTYPE SetViewportClassVisibility(MCObjectHandle viewportHandle, InternalIndex classIndex, short visibilityType) = 0;
		virtual Boolean VCOM_CALLTYPE SetViewportCropObject(MCObjectHandle viewportHandle, MCObjectHandle cropHandle) = 0;
		virtual Boolean VCOM_CALLTYPE SetViewportLayerVisibility(MCObjectHandle viewportHandle, MCObjectHandle layerHandle, short visibilityType) = 0;
		virtual Boolean VCOM_CALLTYPE TrimToSelectedObjects(MCObjectHandle sourceObject, const WorldPt& pickPt, MCObjectHandle& result1, MCObjectHandle& result2) = 0;
		virtual Boolean VCOM_CALLTYPE UpdateConstraintModel() = 0;
		virtual void VCOM_CALLTYPE UpdateViewport(MCObjectHandle viewportHandle) = 0;
		virtual Boolean VCOM_CALLTYPE ViewportHasCropObject(MCObjectHandle viewportHandle) = 0;
		virtual short VCOM_CALLTYPE GSCountResources(OSType inType, Boolean lookOnlyInCurrentFile = true) = 0;
		virtual short VCOM_CALLTYPE GSGetApplicationResFile(short selector) = 0;
		virtual short VCOM_CALLTYPE GSGetCurrentResFile() = 0;
		virtual GSHandle VCOM_CALLTYPE GSGetIndResource(OSType inType, short inIndex, short& outID, Boolean lookOnlyInCurrentFile = true) = 0;
		virtual GSHandle VCOM_CALLTYPE GSGetResource(OSType type, short id, Boolean lookOnlyInCurrentFile = true) = 0;
		virtual void VCOM_CALLTYPE GSGetResourceName(OSType inType, short inID, TXString& outName, Boolean lookOnlyInCurrentFile = true) = 0;
		virtual void VCOM_CALLTYPE GSGetResourceString(short id, short index, TXString& theString, Boolean lookOnlyInCurrentFile = true, EEmptyStringResourceHandling debugWarning = eWarnAboutEmptyStringResult) = 0;
		virtual void VCOM_CALLTYPE GSReleaseResource(GSHandle theResource) = 0;
		virtual void VCOM_CALLTYPE GSRemoveResource(OSType inType, short inID) = 0;
		virtual void VCOM_CALLTYPE GSSetResourceName(OSType inType, short inID, const TXString& inName, Boolean lookOnlyInCurrentFile = true) = 0;
		virtual void VCOM_CALLTYPE GSUseResFile(short inFileID) = 0;
		virtual Boolean VCOM_CALLTYPE GSWriteResource(GSHandle inResource, OSType inType, short inID) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE FirstSelectedObject() = 0;
		virtual void VCOM_CALLTYPE GetSelectionBounds(WorldRect& bounds, BoundsType type = kRefreshBounds) = 0;
		virtual long VCOM_CALLTYPE GetSelectionBoundsCube(WorldCube &theCube) = 0;
		virtual void VCOM_CALLTYPE MoveSelection(WorldCoord dx, WorldCoord dy) = 0;
		virtual void VCOM_CALLTYPE MoveSelection3D(WorldCoord dx, WorldCoord dy, WorldCoord dz) = 0;
		virtual void VCOM_CALLTYPE RotateSelectionN(const WorldPt& rotCen, double_param rotAngle) = 0;
		virtual void VCOM_CALLTYPE ScaleSelectionN(const WorldPt& scaleCen, double_param scaleX, double_param scaleY) = 0;
		virtual Boolean VCOM_CALLTYPE AddText(MCObjectHandle textBlock, long beforeChar, Handle newText) = 0;
		virtual Boolean VCOM_CALLTYPE AddTextFromBuffer(MCObjectHandle textBlock, long beforeChar, void* buffer, long bufferSize) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateTextBlock(const TXString& textStr, const WorldPt& textOrigin, Boolean fixedSize, WorldCoord width) = 0;
		virtual void VCOM_CALLTYPE DeleteText(MCObjectHandle textBlock, long firstChar, long numChars) = 0;
		virtual long VCOM_CALLTYPE GetCharNumFromPoint(MCObjectHandle textBlock, const WorldPt& pt) = 0;
		virtual Handle VCOM_CALLTYPE GetTextChars(MCObjectHandle textBlock) = 0;
		virtual Boolean VCOM_CALLTYPE GetTextCharsToBuffer(MCObjectHandle textBlock, void* buffer, long& bufferSize) = 0;
		virtual void VCOM_CALLTYPE GetTextColor(MCObjectHandle textBlock, long charNum, ColorRef& charColor) = 0;
		virtual void VCOM_CALLTYPE GetTextFontIndex(MCObjectHandle textBlock, long charNum, short& fontIndex) = 0;
		virtual void VCOM_CALLTYPE GetTextJustification(MCObjectHandle textBlock, short& justification) = 0;
		virtual long VCOM_CALLTYPE GetTextLength(MCObjectHandle textBlock) = 0;
		virtual void VCOM_CALLTYPE GetTextLineHeight(MCObjectHandle textBlock, long charNum, WorldCoord& height) = 0;
		virtual void VCOM_CALLTYPE GetTextOrientationN(MCObjectHandle h, double_gs& angle, short& flipState) = 0;
		virtual void VCOM_CALLTYPE GetTextSize(MCObjectHandle textBlock, long charNum, WorldCoord& charSize) = 0;
		virtual void VCOM_CALLTYPE GetTextStyle(MCObjectHandle textBlock, long charNum, unsigned char& charStyle) = 0;
		virtual void VCOM_CALLTYPE GetTextVerticalAlignment(MCObjectHandle textBlock, short& verticalAlignment) = 0;
		virtual void VCOM_CALLTYPE GetTextVerticalSpacing(MCObjectHandle textBlock, short& spacing, WorldCoord& height) = 0;
		virtual Boolean VCOM_CALLTYPE GetTextWidth(MCObjectHandle textBlock, WorldCoord& width) = 0;
		virtual Boolean VCOM_CALLTYPE GetTextWrap(MCObjectHandle textBlock, Boolean& wrapped) = 0;
		virtual void VCOM_CALLTYPE SetTextColor(MCObjectHandle textBlock, long firstChar, long numChars, ColorRef charColor) = 0;
		virtual void VCOM_CALLTYPE SetTextFontIndex(MCObjectHandle textBlock, long firstChar, long numChars, short fontIndex) = 0;
		virtual void VCOM_CALLTYPE SetTextJustification(MCObjectHandle textBlock, short justification) = 0;
		virtual void VCOM_CALLTYPE SetTextOrientationN(MCObjectHandle h, double_param angle, short flipState) = 0;
		virtual void VCOM_CALLTYPE SetTextSize(MCObjectHandle textBlock, long firstChar, long numChars, WorldCoord charSize) = 0;
		virtual void VCOM_CALLTYPE SetTextStyle(MCObjectHandle textBlock, long firstChar, long numChars, unsigned char charStyle) = 0;
		virtual void VCOM_CALLTYPE SetTextVerticalAlignment(MCObjectHandle textBlock, short verticalAlignment) = 0;
		virtual void VCOM_CALLTYPE SetTextVerticalSpacing(MCObjectHandle textBlock, short spacing, WorldCoord height) = 0;
		virtual void VCOM_CALLTYPE SetTextWidth(MCObjectHandle textBlock, WorldCoord width) = 0;
		virtual void VCOM_CALLTYPE SetTextWrap(MCObjectHandle textBlock, Boolean wrapped) = 0;
		virtual void VCOM_CALLTYPE SpellCheckTextBuffer(GSHandle charsHandle, Boolean textChanged) = 0;
		virtual void VCOM_CALLTYPE AttachDefaultTextureSpace(MCObjectHandle object, short multiPartID) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateShaderRecord(MCObjectHandle texture, long family, long prototype) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateTexture() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateTextureBitmap() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateTextureBitmapFromPaintNode(MCObjectHandle paintNodeObject) = 0;
		virtual void VCOM_CALLTYPE DeleteTextureSpace(MCObjectHandle object, short multiPartID) = 0;
		virtual Boolean VCOM_CALLTYPE EditShaderRecord(MCObjectHandle shaderRecord) = 0;
		virtual Boolean VCOM_CALLTYPE EditTexture(MCObjectHandle texture) = 0;
		virtual void VCOM_CALLTYPE Deprecated883() = 0; // EditTextureBitmap
		virtual Boolean VCOM_CALLTYPE EditTextureSpace(MCObjectHandle texturedObject, short multiPartID) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetClGenTexture(InternalIndex index) = 0;
		virtual void VCOM_CALLTYPE GetClRoofTextures(InternalIndex index, InternalIndex& top, InternalIndex& edge, InternalIndex& dormer) = 0;
		virtual Boolean VCOM_CALLTYPE GetClUseTexture(InternalIndex index) = 0;
		virtual void VCOM_CALLTYPE GetClWallTextures(InternalIndex index, InternalIndex& right, InternalIndex& left, InternalIndex& center) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetShaderRecord(MCObjectHandle parentNode, long family) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetTextureRef(MCObjectHandle object, short multiPartID, Boolean resolveByClass) = 0;
		virtual void VCOM_CALLTYPE GetTextures(MCObjectHandle h, InternalIndex& primaryTexture, InternalIndex& secondaryTexture, InternalIndex& tertiaryTexture) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetTextureSpace(MCObjectHandle object, short multiPartID) = 0;
		virtual InternalIndex VCOM_CALLTYPE GetVPClassGenTexture(MCObjectHandle viewport, InternalIndex classIndex) = 0;
		virtual void VCOM_CALLTYPE GetVPClassRoofTextures(MCObjectHandle viewport, InternalIndex classIndex, InternalIndex& top, InternalIndex& edge, InternalIndex& dormer) = 0;
		virtual void VCOM_CALLTYPE GetVPClassWallTextures(MCObjectHandle viewport, InternalIndex classIndex, InternalIndex& right, InternalIndex& left, InternalIndex& center) = 0;
		virtual void VCOM_CALLTYPE SetClGenTexture(InternalIndex index, InternalIndex texture) = 0;
		virtual void VCOM_CALLTYPE SetClRoofTextures(InternalIndex index, InternalIndex top, InternalIndex edge, InternalIndex dormer) = 0;
		virtual void VCOM_CALLTYPE SetClUseTexture(InternalIndex index, Boolean use) = 0;
		virtual void VCOM_CALLTYPE SetClWallTextures(InternalIndex index, InternalIndex right, InternalIndex left, InternalIndex center) = 0;
		virtual void VCOM_CALLTYPE SetDefaultTextureSpace(MCObjectHandle object, MCObjectHandle space, short multiPartID) = 0;
		virtual void VCOM_CALLTYPE SetTextureRef(MCObjectHandle object, InternalIndex textureRef, short multiPartID) = 0;
		virtual long VCOM_CALLTYPE AddHotSpot(short inHotSpotType, const WorldPt3& inLocation, long inCursorID, const TXString& inTip) = 0;
		virtual long VCOM_CALLTYPE AddToolPersistentDraw(GS_PersistentDrawProcPtr drawProcPtr, void *drawEnv) = 0;
		virtual long VCOM_CALLTYPE AddToolSnapGeometry(MCObjectHandle inSnapGeometry) = 0;
		virtual void VCOM_CALLTYPE BoxToolDraw() = 0;
		virtual Boolean VCOM_CALLTYPE ClearAllToolPts() = 0;
		virtual void VCOM_CALLTYPE ClearDataDisplayBar() = 0;
		virtual long VCOM_CALLTYPE ClickDragToolStatus() = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarCreate(short inNumFields, long& outCustomBarRefID) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarGetFieldInfo(long inCustomBarID, short inFieldIndex, CustomBarFieldInfo& inFieldInfo) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarInstall(long inCustomBarID) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarRelease(long inCustomBarRefID) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarSetFieldAngle(long inCustomBarID, short inFieldIndex, const double& inDegrees) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarSetFieldInfo(long inCustomBarID, short inFieldIndex, const CustomBarFieldInfo& inFieldInfo) = 0;
		virtual Boolean VCOM_CALLTYPE CustomBarSetFieldWorldCoord(long inCustomBarID, short inFieldIndex, const WorldCoord& inCoordVal) = 0;
		virtual void VCOM_CALLTYPE Default2DToolDraw() = 0;
		virtual void VCOM_CALLTYPE Default3DToolDraw() = 0;
		virtual void VCOM_CALLTYPE DrawCoordArcN(const WorldRect& theBox, double_param startAngle, double_param sweepAngle) = 0;
		virtual void VCOM_CALLTYPE DrawCoordEllipse(WorldRect& theBox) = 0;
		virtual void VCOM_CALLTYPE DrawCoordLine(const WorldPt& p1, const WorldPt& p2) = 0;
		virtual void VCOM_CALLTYPE DrawCoordLine3D(const WorldPt3& p1, const WorldPt3& p2) = 0;
		virtual void VCOM_CALLTYPE DrawCoordRect(const WorldRect& theBox) = 0;
		virtual void VCOM_CALLTYPE DrawDataDisplayBar(Boolean drawFramesFirst = false) = 0;
		virtual void VCOM_CALLTYPE DrawNurbsObject(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE DrawObject(MCObjectHandle h, Boolean doSelect) = 0;
		virtual void VCOM_CALLTYPE GetCoords(WorldPt& p, ViewPt& m) = 0;
		virtual long VCOM_CALLTYPE GetNumToolPts() = 0;
		virtual const ICoreToolAccess* VCOM_CALLTYPE GetToolCoreInterface() = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPt2D(long inIndex, WorldPt& outToolPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPt3D(long inIndex, WorldPt3& outToolPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtCurrent2D(WorldPt& outToolPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtCurrent3D(WorldPt3& outToolPt) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtCurrentViewPt(ViewPt& outToolPt) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtCurrentWorkingPlane(WorldPt3& outToolPt) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtViewPoint(long inIndex, ViewPt& outToolPoint) = 0;
		virtual Boolean VCOM_CALLTYPE GetToolPtWorkingPlane(long inIndex, WorldPt3& outToolPoint) = 0;
		virtual void VCOM_CALLTYPE InstallConstraintAlong3DLine(const Ray& inConstraintDescription) = 0;
		virtual void VCOM_CALLTYPE Interactive2DDraw( short options, short shiftConsMode, GS_I2DDrawProcPtr drawProc, void *env) = 0;
		virtual long VCOM_CALLTYPE OnePointToolStatus() = 0;
		virtual long VCOM_CALLTYPE PolyToolStatus() = 0;
		virtual Boolean VCOM_CALLTYPE PopLastToolPt() = 0;
		virtual void VCOM_CALLTYPE RemoveHotSpot(long inHotSpotID) = 0;
		virtual void VCOM_CALLTYPE RemoveToolPersistentDraw(long persistentDrawRefID) = 0;
		virtual void VCOM_CALLTYPE RemoveToolSnapGeometry(long inSnapGeometryID) = 0;
		virtual Boolean VCOM_CALLTYPE RunTemporary2DTool( long& ioUserData, ToolDefProcPtr inToolProc) = 0;
		virtual Boolean VCOM_CALLTYPE RunTemporary3DTool( long& ioUserData, ToolDefProcPtr inToolProc) = 0;
		virtual void VCOM_CALLTYPE SetCursorMode() = 0;
		virtual void VCOM_CALLTYPE SetDataDisplayBarField(short fieldNum, BarNumberType barType, TXString& outBarLabel) = 0;
		virtual void VCOM_CALLTYPE SetDimUserBarValue(short fieldNum, WorldCoord dimVal) = 0;
		virtual void VCOM_CALLTYPE SetFloatUserBarValueN(short fieldNum, double_param floatVal, short numPlaces) = 0;
		virtual void VCOM_CALLTYPE SetTextUserBarValue(short fieldNum, const TXString& textVal) = 0;
		virtual Boolean VCOM_CALLTYPE SetToolProperty(long inCodeRefID, long inToolPropID, Boolean inValue) = 0;
		virtual Boolean VCOM_CALLTYPE SetToolPropertyChar(long inCodeRefID, long inToolPropID, char inValue) = 0;
		virtual long VCOM_CALLTYPE ThreePointToolStatus() = 0;
		virtual long VCOM_CALLTYPE TrackHotSpot(Boolean& outIs3d, WorldPt3& outLocation) = 0;
		virtual void VCOM_CALLTYPE TrackTool(MCObjectHandle& overObject, short& overPart, long& code) = 0;
		virtual long VCOM_CALLTYPE TwoPointToolStatus() = 0;
		virtual void VCOM_CALLTYPE AddObjectToContainer(MCObjectHandle h, MCObjectHandle container) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE AuxOwner(MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE DeleteObject(MCObjectHandle h, Boolean useUndo = true) = 0;
		virtual Boolean VCOM_CALLTYPE FindHandleDeep(MCObjectHandle handleToFind, MCObjectHandle firstObjectInSearchList, MCObjectHandle& unused) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE FirstMemberObj(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetDefaultContainer() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetDrawingHeader() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetHatchListHeader() = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetSymbolLibraryHeader() = 0;
		virtual void VCOM_CALLTYPE InsertObjectAfter(MCObjectHandle h, MCObjectHandle afterObject) = 0;
		virtual void VCOM_CALLTYPE InsertObjectBefore(MCObjectHandle h, MCObjectHandle beforeObject) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE LastMemberObj(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE NextObject(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ParentObject(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE PrevObject(MCObjectHandle h) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE SearchForAncestorType(Sint16 objectType, MCObjectHandle h) = 0;
		virtual void VCOM_CALLTYPE SetPageBounds(const WorldRect& bounds) = 0;
		virtual Boolean VCOM_CALLTYPE AcquireExportPDFSettingsAndLocation(Boolean inbSeparateDocuments) = 0;
		virtual void VCOM_CALLTYPE ClosePDFDocument() = 0;
		virtual short VCOM_CALLTYPE ExportPDFPages(const TXString& inSavedViewNameStr) = 0;
		virtual Boolean VCOM_CALLTYPE OpenPDFDocument(const TXString& inFileNameStr) = 0;
		virtual Boolean VCOM_CALLTYPE AddAfterMoveObject(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE AddAfterSwapObject(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE AddBeforeMoveObject(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE AddBeforeSwapObject(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE AddBothSwapObject(MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE AddCoordMoveObject2D(MCObjectHandle h, WorldCoord dx, WorldCoord dy) = 0;
		virtual Boolean VCOM_CALLTYPE AddCoordMoveObject3D(MCObjectHandle h, WorldCoord dx, WorldCoord dy, WorldCoord dz) = 0;
		virtual void VCOM_CALLTYPE EndUndoEvent() = 0;
		virtual void VCOM_CALLTYPE NameUndoEvent(const TXString& name) = 0;
		virtual Boolean VCOM_CALLTYPE NonUndoableActionOK() = 0;
		virtual void VCOM_CALLTYPE SetUndoMethod(short undoType) = 0;
		virtual void VCOM_CALLTYPE SupportUndoAndRemove() = 0;
		virtual void VCOM_CALLTYPE UndoAndRemove() = 0;
		virtual void VCOM_CALLTYPE AngleToStringN(double_param angle, TXString& s) = 0;
		virtual void VCOM_CALLTYPE AssociateLinearDimension(MCObjectHandle h, Boolean selectedObjectsMode) = 0;
		virtual Boolean VCOM_CALLTYPE CallPluginLibrary(const TXString& routineName, void* argumentTable, long status) = 0;
		virtual void VCOM_CALLTYPE ClipSurface(MCObjectHandle h1, MCObjectHandle h2) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CombineIntoSurface(const WorldPt& insidePt) = 0;
		virtual void VCOM_CALLTYPE CoordToDimString(WorldCoord c, TXString& s) = 0;
		virtual Sint16 VCOM_CALLTYPE CStringCompare(ConstGSCStrPtr cStr1, ConstGSCStrPtr cStr2, const short compareFlags) = 0;
		virtual Boolean VCOM_CALLTYPE CStringEqual(ConstGSCStrPtr cStr1, ConstGSCStrPtr cStr2, const short compareFlags) = 0;
		virtual void VCOM_CALLTYPE DisableModules(long modules) = 0;
		virtual void VCOM_CALLTYPE DisplayContextHelpOfCurrentPlugin() = 0;
		virtual Boolean VCOM_CALLTYPE DisplayContextualHelp(const TXString& helpIdentifier) = 0;
		virtual void VCOM_CALLTYPE DisplayOrganizationDialog(short tabToSelect) = 0;
		virtual short VCOM_CALLTYPE DoMenuName(const TXString& name, short chunkIndex) = 0;
		virtual long VCOM_CALLTYPE DoProgramAction(short actionSelector, void* actionEnv) = 0;
		virtual void VCOM_CALLTYPE DoubleToString(TNumStyleClass inNumStyle,  Byte inAccuracy, Byte inFormat, double_param inDouble, TXString& outString) = 0;
		virtual void VCOM_CALLTYPE DrawScreen(const ViewRect& clipRect, Boolean isLastFrame = true) = 0;
		virtual void VCOM_CALLTYPE EllipseEllipseIntersect(const WorldRect& e1, const WorldRect& e2, Sect4Struct& sects) = 0;
		virtual long VCOM_CALLTYPE ExternalNameToID(const TXString& fnName) = 0;
		virtual short VCOM_CALLTYPE FontIndexFromName(const TXString& fontName) = 0;
		virtual void VCOM_CALLTYPE FontNameFromIndex(short fontIndex, TXString& fontName, Boolean useMappingTable) = 0;
		virtual void VCOM_CALLTYPE GetActiveSerialNumber(TXString& outSerialNumber) = 0;
		virtual Boolean VCOM_CALLTYPE GetCallBackInval() = 0;
		virtual short VCOM_CALLTYPE GetCurrentMode() = 0;
		virtual int VCOM_CALLTYPE GetDataBarCursorVisState() = 0;
		virtual long VCOM_CALLTYPE GetEnabledModules() = 0;
		virtual void VCOM_CALLTYPE GetHostInfo(short& hostID, Byte& version, Byte& majorRev, Byte& minorRev, TXString& outProductName, TXString& outProductVersion) = 0;
		virtual void VCOM_CALLTYPE GetModifierFlags(Boolean& optionFlag, Boolean& cmdFlag, Boolean& shiftFlag) = 0;
		virtual void VCOM_CALLTYPE GetProduct(short& product, long& modules) = 0;
		virtual Boolean VCOM_CALLTYPE GetSavedSetting(const TXString& category, const TXString& setting, TXString& value) = 0;
		virtual void VCOM_CALLTYPE HandlePendingUpdatesAndActivates() = 0;
		virtual void VCOM_CALLTYPE HilitePalettesAndTopDocument(Boolean doHilite) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE IntersectObjects(MCObjectHandle obj1, MCObjectHandle obj2, Boolean onlyOnObjs) = 0;
		virtual Boolean VCOM_CALLTYPE Kludge(short selector, void* in, void* out) = 0;
		virtual void VCOM_CALLTYPE LineEllipseIntersect(const WorldPt& a1, const WorldPt& a2, const WorldRect& r, Sect2Struct& sects) = 0;
		virtual void VCOM_CALLTYPE LineLineIntersect(const WorldPt& a1, const WorldPt& a2, const WorldPt& b1, const WorldPt& b2, Boolean& parallel, Boolean& intOnLines, WorldPt& sect) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE ObjectNearCoordPt(const WorldPt& p) = 0;
		virtual Boolean VCOM_CALLTYPE PlaySoundResource(Handle soundResource, Boolean async, Boolean forcePlay) = 0;
		virtual Boolean VCOM_CALLTYPE PointInsidePoly(const WorldPt& checkPt, MCObjectHandle h) = 0;
		virtual Boolean VCOM_CALLTYPE PointOnPolyEdge(const WorldPt& checkPt, MCObjectHandle h, WorldCoord checkRadius) = 0;
		virtual long VCOM_CALLTYPE RegisterExternal(const TXString& fileName, short codeResID, OSType codeResType) = 0;
		virtual Boolean VCOM_CALLTYPE RegisterNotificationProcedure(StatusProcPtr proc, OSType whichChange) = 0;
		virtual void VCOM_CALLTYPE SetCallBackInval(Boolean turnInvalOn) = 0;
		virtual void VCOM_CALLTYPE SetPersistentHighlight(MCObjectHandle theObject, Boolean highlightState) = 0;
		virtual void VCOM_CALLTYPE SetSavedSetting(const TXString& category, const TXString& setting, const TXString& value) = 0;
		virtual Boolean VCOM_CALLTYPE StringToAngleN(const TXString& s, double_gs& angle) = 0;
		virtual Boolean VCOM_CALLTYPE StringToDouble(TNumStyleClass inNumStyle, const TXString& inString, double_gs& outDouble) = 0;
		virtual Boolean VCOM_CALLTYPE SymbolContainsLight(MCObjectHandle symbol) = 0;
		virtual void VCOM_CALLTYPE ToggleObjectHighlight(MCObjectHandle theObject) = 0;
		virtual void VCOM_CALLTYPE UnregisterNotificationProcedure(StatusProcPtr proc, OSType whichChange) = 0;
		virtual Boolean VCOM_CALLTYPE VerifyPluginLibrary(const TXString& routineName) = 0;
		virtual void VCOM_CALLTYPE GetPerspectiveInfo(MCObjectHandle theLayer, WorldCoord& perspectiveDistance, WorldCoord& clipDistance, WorldRect& clipRect) = 0;
		virtual short VCOM_CALLTYPE GetProjection(MCObjectHandle theLayer) = 0;
		virtual short VCOM_CALLTYPE GetRenderMode(MCObjectHandle theLayer) = 0;
		virtual short VCOM_CALLTYPE GetScreenDPI() = 0;
		virtual void VCOM_CALLTYPE GetViewCenter(WorldPt& center) = 0;
		virtual void VCOM_CALLTYPE GetViewMatrix(MCObjectHandle theLayer, TransformMatrix& theMat) = 0;
		virtual void VCOM_CALLTYPE GetWorkingPlane(Axis &theAxis) = 0;
		virtual void VCOM_CALLTYPE NewCurrentViewMatrix(const TransformMatrix& theMat, Boolean interactive) = 0;
		virtual void VCOM_CALLTYPE NewWorkingPlane(const Axis &theAxis) = 0;
		virtual void VCOM_CALLTYPE PreviewDrawFrame(Handle thisPreview, Boolean selectedOnly = false) = 0;
		virtual void VCOM_CALLTYPE PreviewFinish(Handle& thisPreview) = 0;
		virtual Handle VCOM_CALLTYPE PreviewSetup(Boolean doDynamicSpeedups = true, double_param targetFPS = 0.0, Boolean drawGroundPlane = true, Boolean drawPage = true, Boolean drawCropRect = true) = 0;
		virtual void VCOM_CALLTYPE RedrawRect(const WorldRect& redrawR) = 0;
		virtual void VCOM_CALLTYPE SetViewCenter(const WorldPt& center) = 0;
		virtual void VCOM_CALLTYPE SetViewMatrix(MCObjectHandle theLayer, const TransformMatrix& theMatrix) = 0;
		virtual void VCOM_CALLTYPE SetWorkingPlaneAxis(const Vector &si, const Vector &sj, const Vector &sk) = 0;
		virtual void VCOM_CALLTYPE SetWorkingPlaneVertex(const WorldPt3 &v) = 0;
		virtual void VCOM_CALLTYPE SetZoomFactorN(double_param zoomFac) = 0;
		virtual void VCOM_CALLTYPE ViewRotWorldZN(double_param angle, Boolean interactive) = 0;
		virtual Boolean VCOM_CALLTYPE WorldRect2ViewRect(const WorldRect& wRect, ViewRect& vRect) = 0;
		virtual short VCOM_CALLTYPE AddBreak(MCObjectHandle theWall, WorldCoord off, short breakType, void* breakData) = 0;
		virtual void VCOM_CALLTYPE DeleteBreak(MCObjectHandle theWall, short index) = 0;
		virtual void VCOM_CALLTYPE ForEachBreak( MCObjectHandle theWall, GS_ForEachBreakProcPtr action, void* actionEnv) = 0;
		virtual WorldCoord VCOM_CALLTYPE GetLayerDeltaZOffset(MCObjectHandle theWall) = 0;
		virtual Boolean VCOM_CALLTYPE GetLinkHeightToLayerDeltaZ(MCObjectHandle theWall) = 0;
		virtual void VCOM_CALLTYPE GetPolyBreakGeometry(MCObjectHandle theWall, short breakIndex, MCObjectHandle& polyline) = 0;
		virtual void VCOM_CALLTYPE GetWallCaps(MCObjectHandle theWall, Boolean &leftCap, Boolean &rightCap, Boolean &round) = 0;
		virtual void VCOM_CALLTYPE GetWallCapsOffsets(MCObjectHandle theWall, WorldCoord &leftCapLeftOffset, WorldCoord &leftCapRightOffset, WorldCoord &rightCapLeftOffset, WorldCoord &rightCapRightOffset) = 0;
		virtual void VCOM_CALLTYPE GetWallHeights(MCObjectHandle theWall, WorldCoord& startHeightTop, WorldCoord& startHeightBottom, WorldCoord& endHeightTop, WorldCoord& endHeightBottom) = 0;
		virtual Boolean VCOM_CALLTYPE JoinWalls(MCObjectHandle firstWall, MCObjectHandle secondWall,  const WorldPt& firstWallPt, const WorldPt& secondWallPt, JoinModifierType joinModifier, Boolean capped, Boolean showAlerts) = 0;
		virtual void VCOM_CALLTYPE MoveWallByOffset(MCObjectHandle theWall, WorldCoord& offset) = 0;
		virtual void VCOM_CALLTYPE ReverseWallSides(MCObjectHandle theWall) = 0;
		virtual void VCOM_CALLTYPE SetAsPolyBreak(MCObjectHandle& thePolyline, MCObjectHandle theWall, short breakIndex) = 0;
		virtual void VCOM_CALLTYPE SetBreak(MCObjectHandle theWall, short index, WorldCoord off, short breakType, void* breakData) = 0;
		virtual Boolean VCOM_CALLTYPE SetLayerDeltaZOffset(MCObjectHandle theWall, WorldCoord layerDeltaZOffset) = 0;
		virtual Boolean VCOM_CALLTYPE SetLinkHeightToLayerDeltaZ(MCObjectHandle theWall, Boolean linkToLayerDeltaZ) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallCaps(MCObjectHandle theWall, const Boolean &leftCap, const Boolean &rightCap, const Boolean &round) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallCapsOffsets(MCObjectHandle theWall, WorldCoord leftCapLeftOffset, WorldCoord leftCapRightOffset, WorldCoord rightCapLeftOffset, WorldCoord rightCapRightOffset) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallHeights(MCObjectHandle theWall, WorldCoord startHeightTop, WorldCoord startHeightBottom, WorldCoord endHeightTop, WorldCoord endHeightBottom) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallStyle(MCObjectHandle theWall, InternalIndex wallStyle, WorldCoord selectedOffset, WorldCoord replacingOffset) = 0;
		virtual Boolean VCOM_CALLTYPE SetWallWidth(MCObjectHandle theWall, WorldCoord newWidth) = 0;
		virtual void VCOM_CALLTYPE WrapGetWallWidth(MCObjectHandle theWall, double_gs& outCoordLen) = 0;
		virtual Boolean VCOM_CALLTYPE GetScreenSize(ViewRect& screenRect) = 0;
		virtual void VCOM_CALLTYPE AutoFitWorksheetRowHeights(MCObjectHandle worksheet, short fromRow, short toRow) = 0;
		virtual void VCOM_CALLTYPE ClearWorksheetCells(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateWorksheet(const TXString& name, short rows, short columns) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE CreateWorksheetImage(MCObjectHandle worksheet, const WorldPt& topLeftCorner) = 0;
		virtual void VCOM_CALLTYPE DeleteWorksheetColumns(MCObjectHandle worksheet, short startColumn, short numColumns) = 0;
		virtual void VCOM_CALLTYPE DeleteWorksheetRows(MCObjectHandle worksheet, short startRow, short numRows) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetTopVisibleWorksheet() = 0;
		virtual void VCOM_CALLTYPE GetWkSheetSubrowCellActualString(MCObjectHandle worksheet, const ViewPt& cell, Sint16 subrow, TXString& cellString) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellAlignment(MCObjectHandle worksheet, const ViewPt& cell, short& cellAlignment) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellBorder(MCObjectHandle worksheet, const ViewPt& cell, Boolean& top, Boolean& left, Boolean& bottom, Boolean& right) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellFill(MCObjectHandle worksheet, const ViewPt& cell, short& style, ColorRef& bgcolor, ColorRef& fgcolor, short& fillpattern) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellFormula(MCObjectHandle worksheet, const ViewPt& cell, TXString& formula) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellNumberFormat(MCObjectHandle worksheet, const ViewPt& cell, short& style, short& accuracy, const TXString& leaderString, const TXString& trailerString) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellString(MCObjectHandle worksheet, const ViewPt& cell, TXString& cellString) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellTextFormat(MCObjectHandle worksheet, const ViewPt& cell, short& fontIndex, short& size, short& style) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellTextAngle(MCObjectHandle worksheet, const ViewPt& cell, short& angle) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellTextColor(MCObjectHandle worksheet, const ViewPt& cell, ColorRef& color) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellValue(MCObjectHandle worksheet, const ViewPt& cell, double& cellValue) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellVertAlignment(MCObjectHandle worksheet, const ViewPt& cell, short& vAlignment) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetCellWrapTextFlag(MCObjectHandle worksheet, const ViewPt& cell, Boolean& wrapTextFlag) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetColumnOperators(MCObjectHandle worksheet, short databaseRow, short& sort1, short& sort2, short& sort3, short& sum1, short& sum2, short& sum3) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetColumnWidth(MCObjectHandle worksheet, short column, short& width) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetWorksheetFromImage(MCObjectHandle worksheetImage) = 0;
		virtual MCObjectHandle VCOM_CALLTYPE GetWorksheetImage(MCObjectHandle worksheet) = 0;
		virtual Boolean VCOM_CALLTYPE GetWorksheetMergedCellRange(MCObjectHandle worksheet, const ViewPt& cell, ViewPt& topLeftCell, ViewPt& bottomRightCell) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetPlacement(MCObjectHandle worksheet, ViewRect& windowPosition) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetRowColumnCount(MCObjectHandle worksheet, short& numRows, short& numColumns) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetRowHeight(MCObjectHandle worksheet, short row, short& height) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetRowHLockState(MCObjectHandle worksheet, short row, Boolean& lockState) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetSelection(MCObjectHandle worksheet, ViewPt& currentCell, ViewPt& topLeftRangeCell, short& topRangeSubrow, ViewPt& bottomRightRangeCell, short& bottomRangeSubrow) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetSubrowCellString(MCObjectHandle worksheet, const ViewPt& cell, short subrow, TXString& cellString) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetSubrowCellValue(MCObjectHandle worksheet, const ViewPt& cell, short subrow, double& cellValue) = 0;
		virtual void VCOM_CALLTYPE GetWorksheetSubrowCount(MCObjectHandle worksheet, short databaseRow, short& numSubrows) = 0;
		virtual void VCOM_CALLTYPE GetWSCellAllBorders(MCObjectHandle worksheet, const ViewPt& cell, TCellBorder& top,TCellBorder& left,TCellBorder& bottom,TCellBorder& right) = 0;
		virtual void VCOM_CALLTYPE InsertWorksheetColumns(MCObjectHandle worksheet, short beforeColumn, short numColumns) = 0;
		virtual void VCOM_CALLTYPE InsertWorksheetRows(MCObjectHandle worksheet, short beforeRow, short numRows) = 0;
		virtual Boolean VCOM_CALLTYPE IsValidWorksheetCell(MCObjectHandle worksheet, const ViewPt& cell) = 0;
		virtual Boolean VCOM_CALLTYPE IsValidWorksheetRange(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell) = 0;
		virtual Boolean VCOM_CALLTYPE IsValidWorksheetSubrowCell(MCObjectHandle worksheet, const ViewPt& cell, short subrow) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetCellNumber(MCObjectHandle worksheet, const ViewPt& cell) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetCellString(MCObjectHandle worksheet, const ViewPt& cell) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetDatabaseRow(MCObjectHandle worksheet, short databaseRow) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetSubrowCellNumber(MCObjectHandle worksheet, const ViewPt& cell, short subrow) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetSubrowCellString(MCObjectHandle worksheet, const ViewPt& cell, short subrow) = 0;
		virtual Boolean VCOM_CALLTYPE IsWorksheetVisible(MCObjectHandle worksheet) = 0;
		virtual void VCOM_CALLTYPE RecalculateWorksheet(MCObjectHandle worksheet) = 0;
		virtual void VCOM_CALLTYPE SetTopVisibleWorksheet(MCObjectHandle worksheet) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellAlignment(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short cellAlignment) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Boolean top, Boolean left, Boolean bottom, Boolean right, Boolean outline) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellBorders(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Boolean top, Boolean left, Boolean bottom, Boolean right, Boolean outline, Boolean insideHorz, Boolean insideVert) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellFill(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short style, ColorRef bgcolor, ColorRef fgcolor, short fillpattern) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellFormula(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, const TXString& formula) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellNumberFormat(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short style, short accuracy, const TXString& leaderString, const TXString& trailerString) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellTextFormat(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short fontIndex, short size, short style) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellTextAngle(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short angle) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellTextColor(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellVertAlignment(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, short vAlignment) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCellWrapTextFlag(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Boolean wrapTextFlag) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetColumnOperators(MCObjectHandle worksheet, short databaseRow, short sort1, short sort2, short sort3, short sum1, short sum2, short sum3) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetColumnWidth(MCObjectHandle worksheet, short fromColumn, short toColumn, short width) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetCurrentCell(MCObjectHandle worksheet, const ViewPt& currentCell) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetPlacement(MCObjectHandle worksheet, const ViewRect& windowPosition) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetRowsHeight(MCObjectHandle worksheet, short fromRow, short toRow, short height, Boolean updatePalette, Boolean lockHeight) = 0;
		virtual void VCOM_CALLTYPE SetWorksheetSelection(MCObjectHandle worksheet, const ViewPt& currentCell, const ViewPt& topLeftRangeCell, short topRangeSubrow, const ViewPt& bottomRightRangeCell, short bottomRangeSubrow) = 0;
		virtual void VCOM_CALLTYPE SetWSCellAllBorders(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, TCellBorder top,TCellBorder left,TCellBorder bottom,TCellBorder right,TCellBorder insideVert,TCellBorder insideHorz) = 0;
		virtual void VCOM_CALLTYPE SetWSCellBottomBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellInsideHorizBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellInsideVertBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellLeftBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellOutlineBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellRightBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE SetWSCellTopBorder(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell, Sint8 style, Uint8 weight, ColorRef color) = 0;
		virtual void VCOM_CALLTYPE ShowWorksheet(MCObjectHandle worksheet, Boolean show) = 0;
		virtual void VCOM_CALLTYPE ShowWorksheetDialog(short dialogType) = 0;
		virtual Boolean VCOM_CALLTYPE WorksheetMergeCells(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell) = 0;
		virtual Boolean VCOM_CALLTYPE WorksheetSplitCells(MCObjectHandle worksheet, const ViewPt& topLeftCell, const ViewPt& bottomRightCell) = 0;
		virtual void VCOM_CALLTYPE GSCloseResFile(short inFileID) = 0;
		virtual void VCOM_CALLTYPE GetCurrentWorkspaceFile(TXString& outFileName) = 0;
		virtual short VCOM_CALLTYPE OpenExternalResFile(const TXString& inFileName, Byte fileAccessPerm = kFileReadWrite) = 0;
		virtual short VCOM_CALLTYPE OpenWorkspaceResFile(const TXString& inFileName, Boolean createNewFile = false, Byte fileAccessPerm = kFileReadWrite) = 0;
		virtual void VCOM_CALLTYPE SetWorkspaceFileToReload(const TXString& inFileName) = 0;
		virtual Boolean VCOM_CALLTYPE WSAddMenu(long inWorkspaceReference, const TXString& inMenuIdentifier, const TXString& inMenuName) = 0;
		virtual Boolean VCOM_CALLTYPE WSAddMenuItem(long inWorkspaceReference, const TXString& inMenuIdentifier, const TXString& inMenuItemsUniversalName, char inShortcutKey, Uint32 inShortcutKeyModifiers, const TXString& inSubMenuIdentifier) = 0;
		virtual Boolean VCOM_CALLTYPE WSAddTool(long inWorkspaceReference, const TXString& inToolIdentifier, char inShortcutKey, Uint32 inKeyModifiers) = 0;
		virtual Boolean VCOM_CALLTYPE WSAddToolPalette(long inWorkspaceReference, const TXString& inToolPaletteIdentifier) = 0;
		virtual Boolean VCOM_CALLTYPE WSAddToolSet(long inWorkspaceReference, const TXString& inToolSetIdentifier, void* inIconData, Uint32 inIconDataSize) = 0;
		virtual Boolean VCOM_CALLTYPE WSGetVersion(long inWorkspaceReference, long* outWorkspaceVersion) = 0;
		virtual Boolean VCOM_CALLTYPE WSMenuAddMenuItem(long inWorkspaceReference, const TXString& inMenuIdentifier, const TXString& inMenuItemsUniversalName) = 0;
		virtual Boolean VCOM_CALLTYPE WSMenuBarAddMenu(long inWorkspaceReference, const TXString& inMenuIdentifier) = 0;
		virtual Boolean VCOM_CALLTYPE WSOpen(const TXString& inWorkspaceFileToOpen, long inFilePermissions, long* outWorkspaceReference) = 0;
		virtual Boolean VCOM_CALLTYPE WSPaletteGetHomeCorner(long inWorkspaceReference, const TXString& inToolPaletteIdentifier, short* outWindowHomeCorner) = 0;
		virtual Boolean VCOM_CALLTYPE WSPaletteSetHomeCorner(long inWorkspaceReference, const TXString& inPaletteIdentifier, short inWindowHomeCorner) = 0;
		virtual Boolean VCOM_CALLTYPE WSSetVersion(long inWorkspaceReference, long inWorkspaceVersion) = 0;
		virtual Boolean VCOM_CALLTYPE WSToolPaletteAddToolSet(long inWorkspaceReference, const TXString& inToolPaletteIdentifier, const TXString& inToolSetIdentifier) = 0;
		virtual Boolean VCOM_CALLTYPE WSToolSetAddTool(long inWorkspaceReference, const TXString& inToolSetIdentifier, void* inIconData, Uint32 inIconDataSize) = 0;
		virtual Boolean VCOM_CALLTYPE WSToolSetAddToolChildToTool(long inWorkspaceReference, const TXString& inToolSetIdentifier, const TXString& inParentToolIdentifier, const TXString& inChildToolIdentifier) = 0;

	// pre VW2009 - OS dependent
	public:
//if _WINDOWS
//		virtual Boolean VCOM_CALLTYPE GetListBrowserItemPatternIndex(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int &iPatternIndex) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual Boolean VCOM_CALLTYPE GetListBrowserItemPattern(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, Pattern* &pPattern) = 0;
//endif
//if _WINDOWS
//		virtual Boolean VCOM_CALLTYPE SetListBrowserItemPatternIndex(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, int iPatternIndex) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual Boolean VCOM_CALLTYPE SetListBrowserItemPattern(long dialogID, long componentID, int iItemIndex, int iSubItemIndex, Pattern* pPattern) = 0;
//#endif

		//  Image Manipulation
//if _WINDOWS
//		virtual HBITMAP VCOM_CALLTYPE CreateDIBFromPaintNode(MCObjectHandle h) = 0;
//endif
//if _WINDOWS
//		virtual HBITMAP VCOM_CALLTYPE CreateDIBFromPreview(InternalIndex &inIndex, short pixelWidth, short pixelHeight) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual GWorldPtr VCOM_CALLTYPE CreateGWorldFromPaintNode(MCObjectHandle h) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual GWorldPtr VCOM_CALLTYPE CreateGWorldFromPreview(InternalIndex &inIndex, short pixelWidth, short pixelHeight) = 0;
//endif
//if _WINDOWS
//		virtual MCObjectHandle VCOM_CALLTYPE CreatePaintNodeFromDIB(HBITMAP hBitmap) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual MCObjectHandle VCOM_CALLTYPE CreatePaintNodeFromGWorld(GWorldPtr pGW) = 0;
//endif
//if _WINDOWS
//		virtual void VCOM_CALLTYPE DisposeDIB(HBITMAP hBitmap) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual void VCOM_CALLTYPE DisposeGWorld(GWorldPtr pGW) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual BitMapPtr VCOM_CALLTYPE GetBitmapPtr(MCObjectHandle h) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual void VCOM_CALLTYPE DoUpdateOrActivate(EventRecord& theEvent) = 0;
//endif
//if _WINDOWS
//		virtual void VCOM_CALLTYPE EnterMoveableWindow(HWND hDialog) = 0;
//		virtual void VCOM_CALLTYPE ExitMoveableWindow(HWND hDialog) = 0;
//endif
//if !_WIN_EXTERNAL_ && !_GSWINSDK_
//		virtual void VCOM_CALLTYPE FPDisposeDialog(DialogPtr theDialog) = 0;
//		virtual void VCOM_CALLTYPE FPShowWindow(WindowPtr theWindow) = 0;
//		virtual HWND VCOM_CALLTYPE GetMainHWND() = 0;
//endif

	// VW2009
	public:
		virtual EForEachFileResult	VCOM_CALLTYPE ForEachFileInStandardFolder(GS_ForEachFilePathProcPtr processFile, EFolderSpecifier folderSpec, void* env) = 0;
		virtual EForEachFileResult	VCOM_CALLTYPE ForEachFilePathInStandardFolder(GS_ForEachFilePathProcPtr processFile, FolderSpecifier folderSpec, void* env) = 0;
		virtual EForEachFileResult	VCOM_CALLTYPE ForEachFilePathInFolder(GS_ForEachFilePathNProcPtr processFile, IFolderIdentifier* pStartFolderID, bool doRecursive, void* pEnv) = 0;
		virtual EForEachFileResult	VCOM_CALLTYPE ForEachFilePathInPluginFolder(GS_ForEachFilePathNProcPtr processFile, void* pEnv) = 0;
		virtual bool			VCOM_CALLTYPE GetActiveDocument(IFileIdentifier** ppOutFileID, bool& outSaved) = 0;
		virtual bool			VCOM_CALLTYPE OpenDocumentPath(IFileIdentifier* pFileID, bool bShowErrorMessages) = 0;
		virtual GSError			VCOM_CALLTYPE SaveActiveDocumentPath(IFileIdentifier* pFileID) = 0;
		virtual bool			VCOM_CALLTYPE EncryptVSPluginFile(IFileIdentifier* pPluginFileID, bool doObfuscation = true) = 0;
		virtual bool			VCOM_CALLTYPE ReadVSExternalFile(IFileIdentifier* pFileID, TMPExternalDataForWorkspace& outData) = 0;
		virtual short			VCOM_CALLTYPE ImportDXF(IFileIdentifier* pFileID) = 0;
		virtual bool			VCOM_CALLTYPE WriteMaterialImageFile(IFileIdentifier* pFileID, MCObjectHandle hMaterial, long type, long shaderFamily) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE ReadMaterialImageFile(IFileIdentifier* pFileID) = 0;

		virtual void			VCOM_CALLTYPE ClearComponentInstances(MCObjectHandle hContainer, TComponentTypeID componentTypeID = (TComponentTypeID)-1) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE FindFirstComponentInstance(MCObjectHandle hContainer, TComponentTypeID componentTypeID) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE FindNextComponentInstance(TComponentTypeID componentTypeID, MCObjectHandle hComponent) = 0;
		virtual bool			VCOM_CALLTYPE AssignAsComponentInstance(MCObjectHandle hParentContainer, TComponentTypeID componentTypeID, MCObjectHandle hComponent) = 0;
		virtual bool			VCOM_CALLTYPE EnableComponentInstance(MCObjectHandle hComponent, bool bEnable) = 0;
		virtual bool			VCOM_CALLTYPE IsEnabledComponentInstance(MCObjectHandle hComponent) = 0;
		virtual bool			VCOM_CALLTYPE GetComponentInstanceTypeID(MCObjectHandle hComponent, TComponentTypeID& outComponentTypeID) = 0;
		virtual bool			VCOM_CALLTYPE SetComponentInstanceName(MCObjectHandle hComponent, const TXString& localizedName) = 0;
		virtual bool			VCOM_CALLTYPE GetComponentInstanceName(MCObjectHandle hComponent, TXString& outLocalizedName) = 0;
		virtual bool			VCOM_CALLTYPE EmptyToolHighlightingList() = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingObject(MCObjectHandle hHighlightObject) = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingSegment( const WorldPt& startPt,  const WorldPt& endPt) = 0;
		virtual long			VCOM_CALLTYPE AddToolHighlightingPolyCreate() = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingPoly(long polyID, bool bClosed) = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingPolyAddVertex(long polyID, const WorldPt& pt, VertexType type = vtCorner, WorldCoord arcRadius = 0) = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingSegment3D( const WorldPt3& startPt,  const WorldPt3& endPt) = 0;
		virtual long			VCOM_CALLTYPE AddToolHighlightingPoly3DCreate() = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingPoly3D(long polyID, bool bClosed) = 0;
		virtual bool			VCOM_CALLTYPE AddToolHighlightingPoly3DAddVertex(long polyID, const WorldPt3& pt) = 0;
		virtual bool			VCOM_CALLTYPE OpenURL(const TXString& url) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE ConvertNurbsToPolylineArcs(MCObjectHandle hNurbs, double precision, bool insert = false) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE CreateOffsetObjectHandle(MCObjectHandle h, double offset, bool smoothConers = false) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE UnfoldSurface(MCObjectHandle surfaceToUnfold, short conversionRes) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE CreateWallHoleGroup(MCObjectHandle h) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE GetWallHoleGroup(MCObjectHandle h) = 0;
		virtual void			VCOM_CALLTYPE CreateSymbolDisplayControlScaleByZoom(long dialogIDIn, long itemIDIn, const TXString& symbolRefIn, short heightIn, short widthIn, short marginIn, short renderModeIn, short standardViewIn) = 0;
		virtual void			VCOM_CALLTYPE UpdateSymbolDisplayControlScaleByZoom(long dialogIDIn, long itemIDIn, const TXString& symbolRefIn, short renderModeIn, short standardViewIn) = 0;
		virtual void			VCOM_CALLTYPE SetDefaultTextureMapping(MCObjectHandle h, TexturePartSDK partID) = 0;
		virtual TextureMappingInfoSDK VCOM_CALLTYPE GetTextureMappingInfo(MCObjectHandle h, TexturePartSDK partID) = 0;
		virtual void			VCOM_CALLTYPE SetTextureMappingInfo(MCObjectHandle h, TexturePartSDK partID, const TextureMappingInfoSDK& mappingInfo) = 0;
		virtual MCObjectHandle  VCOM_CALLTYPE PerformMultipleUnion(int numberOf2dObjsToAdd, MCObjectHandle h, bool insert) = 0;
		virtual void			VCOM_CALLTYPE GetWorksheetSubrowHeight(MCObjectHandle worksheet, short databaserow, short subrow, short& height) = 0; 
		virtual bool			VCOM_CALLTYPE SetCustomObjectWallHoleGroup(MCObjectHandle objectHand, MCObjectHandle hGeomGroup) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE GetCustomObjectSelectionGroup(MCObjectHandle objectHand) = 0;
		virtual bool			VCOM_CALLTYPE SetCustomObjectSelectionGroup(MCObjectHandle objectHand, MCObjectHandle hSelGroup) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE CreateWallFootPrint(MCObjectHandle hWall) = 0;
        virtual bool            VCOM_CALLTYPE ExportResource(MCObjectHandle resource, IFileIdentifier* pFileID = nil, bool suppressDialogs = false) = 0;
		virtual long			VCOM_CALLTYPE CallDefaultTool(long action, long message1, long message2, long& toolData) = 0;
		virtual void			VCOM_CALLTYPE EnableDrawingWorksheetPalette(bool enable, MCObjectHandle worksheet = nil) = 0;
		virtual bool			VCOM_CALLTYPE GetWorksheetAutoRecalcState(MCObjectHandle worksheet) = 0;
		virtual void			VCOM_CALLTYPE SetWorksheetAutoRecalcState(MCObjectHandle worksheet, bool state) = 0;

	// VW2010
	public:
		virtual MCObjectHandle	VCOM_CALLTYPE CreateWorkingPlane(const Axis &theAxis, const TXString& name) = 0;
		virtual Axis			VCOM_CALLTYPE SetWPHybridTool(bool bRestore) = 0;
		virtual void			VCOM_CALLTYPE RestoreWPHybridTool(bool bRestore) = 0;
		virtual void			VCOM_CALLTYPE ClearWPHybridTool() = 0;
		virtual void			VCOM_CALLTYPE SetCursorByView() = 0;
		virtual bool			VCOM_CALLTYPE AddUndoDeselectObj(MCObjectHandle hObject) = 0;
		virtual bool			VCOM_CALLTYPE AddUndoSelectObj(MCObjectHandle hObject) = 0;
		virtual TOSWndPtr		VCOM_CALLTYPE GetLayoutDialogOSHandle(long dialogID) = 0;
		virtual TOSWndPtr		VCOM_CALLTYPE GetLayoutControlOSHandle(long dialogID, long itemID) = 0;
		virtual void			VCOM_CALLTYPE SetTextureRef(MCObjectHandle object, InternalIndex textureRef, TexturePartSDK texPartID, long texLayerID) = 0;
		virtual InternalIndex	VCOM_CALLTYPE GetTextureRef(MCObjectHandle object, TexturePartSDK texPartID, long texLayerID, Boolean resolveByClass) = 0;
		virtual void			VCOM_CALLTYPE SetDefaultTextureMapping(MCObjectHandle h, TexturePartSDK texPartID, long texLayerID) = 0;
		virtual TextureMappingInfoSDK VCOM_CALLTYPE GetTextureMappingInfo(MCObjectHandle h, TexturePartSDK texPartID, long texLayerID) = 0;
		virtual void			VCOM_CALLTYPE SetTextureMappingInfo(MCObjectHandle h, TexturePartSDK texPartID, long texLayerID, const TextureMappingInfoSDK& mappingInfo) = 0;
		virtual long			VCOM_CALLTYPE GetNumTextureLayers(MCObjectHandle h, TexturePartSDK texPartID) = 0;
		virtual bool			VCOM_CALLTYPE SetStaticTextStyle(long dialogID, long itemID, int style) = 0;
		virtual bool			VCOM_CALLTYPE SetStaticTextColor(long dialogID, long itemID, int red, int green, int blue) = 0;
		virtual bool			VCOM_CALLTYPE SetItemClickable(long dialogID, long itemID, bool clickable) = 0;
		virtual bool			VCOM_CALLTYPE SetSliderLiveUpdate(long dialogID, long itemID, bool liveUpdate) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE CreatePaintNode(IDrawPad* pDrawPad) = 0;
		virtual bool			VCOM_CALLTYPE DrawSymbolPreview(IDrawPad* pDrawPad, InternalIndex resourceRefNum, const ViewRect& destRect, short viewMode=1, short renderMode=0) = 0;
		virtual void			VCOM_CALLTYPE NotifyClassChange(long liAdditionalData = 0) = 0;
		virtual bool		   	VCOM_CALLTYPE RegisterDialogForTimerEvents(long dialogID, unsigned long numberOfMilliseconds) = 0;
		virtual void		   	VCOM_CALLTYPE DeregisterDialogFromTimerEvents(long dialogID) = 0;
		virtual bool		   	VCOM_CALLTYPE SetImageControlData(long nDialogID, long nComponentID, void *imageData, size_t imageDataByteSize) = 0;
		virtual void			VCOM_CALLTYPE SetListItemEnabled(long dialogID, long componentID, short itemIndex, bool enabled = true) = 0;
		virtual void			VCOM_CALLTYPE SetFullBreakRecord(MCObjectHandle theWall, short index, WorldCoord off, SymbolBreakType* breakData) = 0;
		virtual bool			VCOM_CALLTYPE SetObjectAsCornerBreak(MCObjectHandle objectHandle, MCObjectHandle wallHandle, bool CornerBreak) = 0;
		virtual bool			VCOM_CALLTYPE SetObjectWallOffset(MCObjectHandle objectHandle, MCObjectHandle wallHandle, WorldCoord offset) = 0;
		virtual EWallCapAttributesType VCOM_CALLTYPE GetWallCapAttributesType(MCObjectHandle wall) = 0;
		virtual void			VCOM_CALLTYPE SetWallCapAttributesType(MCObjectHandle wall, EWallCapAttributesType wallCapAttributesType) = 0;
		virtual Sint16			VCOM_CALLTYPE GetCoreWallComponent(MCObjectHandle wall) = 0;
		virtual void			VCOM_CALLTYPE SetCoreWallComponent(MCObjectHandle wall, Sint16 coreWallComponent) = 0;
		virtual EWallHoleTexturePart VCOM_CALLTYPE GetWallHoleTexturePart(MCObjectHandle object) = 0;
		virtual void			VCOM_CALLTYPE SetWallHoleTexturePart(MCObjectHandle object, EWallHoleTexturePart part) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE CreateWallFeature(MCObjectHandle wall, MCObjectHandle profile, EWallFeatureType wallFeatureType) = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE GetActiveLayer() = 0;
		virtual MCObjectHandle	VCOM_CALLTYPE CreateCustomObjectByMatrixEx(const TXString& name, const TransformMatrix& matrix, bool bInsert) = 0;
		virtual void			VCOM_CALLTYPE SetHighlightedHelpString(const TXString& helpMessage) = 0;
		virtual void			VCOM_CALLTYPE GetCurrentLocalization(TXString& outLanguage, TXString& outSubLanguage) = 0;
		virtual void			VCOM_CALLTYPE RGBToColorIndexN(const RGBColor& rgb, ColorRef& colorIndex, Boolean bIgnoreBlackBackground) = 0;
		virtual void			VCOM_CALLTYPE ColorIndexToRGBN(ColorRef colorIndex, RGBColor& rgb, Boolean bIgnoreBlackBackground) = 0;
		virtual void			VCOM_CALLTYPE RefreshRenderingForSelectedObjects() = 0;
		virtual void			VCOM_CALLTYPE RefreshResourceBrowserResourcesList(bool immediate) = 0;
		virtual bool			VCOM_CALLTYPE GetListBrowserItemPatternIndex(long dialogID, long componentID, short itemIndex, short subItemIndex, short& outPatternIndex) = 0;
		virtual bool			VCOM_CALLTYPE SetListBrowserItemPatternIndex(long dialogID, long componentID, short itemIndex, short subItemIndex, short patternIndex) = 0;
		virtual short			VCOM_CALLTYPE GetDashStyleIndex(bool scaleWithThick, short noOfParams, double *theVectors) = 0;
		virtual void			VCOM_CALLTYPE SetDashStyle(const TXString& name, bool scaleWithThick, short noOfParams, double *theVectors) = 0;
	};
}
