Files
2024-05-18 23:53:26 +08:00

96 lines
3.0 KiB
C

/**
* @file GoExtTool.x.h
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#ifndef GO_EXT_TOOL_X_H
#define GO_EXT_TOOL_X_H
#include <kApi/Data/kXml.h>
#include <GoSdk/Tools/GoMeasurement.h>
// Define Extensible tool names, ordered alphabetically.
#define GO_EXT_TOOL_NAME_CUSTOM "Custom"
#define GO_EXT_TOOL_NAME_TOOL "Tool"
#define GO_EXT_TOOL_NAME_SURFACE_EDGE "SurfaceEdge"
#define GO_SDK_ANCHOR_X 0
#define GO_SDK_ANCHOR_Y 1
#define GO_SDK_ANCHOR_Z 2
#define GO_SDK_ANGLE_ANCHOR_Z 0
// Ideally, these should be defined in one place that defines all XML
// configuration tag names.
#define GO_XML_TAG_NAME_ATTR_TOOL_ID "id"
#define GO_XML_TAG_NAME_ATTR_TYPE "type"
#define GO_XML_TAG_NAME_ATTR_VERSION "version"
#define GO_XML_TAG_NAME_ATTR_OPTIONS "options"
#define GO_XML_TAG_NAME_ATTR_USED "used"
#define GO_XML_TAG_NAME_ATTR_FORMAT "format"
#define GO_XML_TAG_NAME_SOURCE "Source"
#define GO_XML_TAG_NAME_ANCHOR "Anchor"
#define GO_XML_TAG_NAME_ANCHOR_X "X"
#define GO_XML_TAG_NAME_ANCHOR_Y "Y"
#define GO_XML_TAG_NAME_ANCHOR_Z "Z"
#define GO_XML_TAG_NAME_ANCHOR_ZANGLE "ZAngle"
#define GO_XML_TAG_NAME_PARAMETERS "Parameters"
#define GO_XML_TAG_NAME_STREAM "Stream"
#define GO_XML_TAG_NAME_STREAM_STEP "Step"
#define GO_XML_TAG_NAME_STREAM_ID "Id"
#define GO_XML_TAG_NAME_TOOL_DATA_OUTPUTS "ToolDataOutputs"
typedef struct GoExtToolAnchorCfg
{
kBool used;
kArrayList options;
k32s anchor;
} GoExtToolAnchorCfg;
typedef struct GoExtToolAnchoringCfg
{
GoExtToolAnchorCfg x;
GoExtToolAnchorCfg y;
GoExtToolAnchorCfg z;
GoExtToolAnchorCfg zAngle;
} GoExtToolAnchoringCfg;
typedef struct GoExtToolClass
{
GoToolClass base;
kText32 version;
kText128 toolType;
kArrayList streamOptions;
GoDataStream stream;
kArrayList sourceOptions;
GoDataSource source;
GoExtToolAnchoringCfg anchoring; // 4 for X, Y, Z, and ZAngle
GoExtParams params;
kArrayList toolDataOutputs; // Of GoExtToolDataOutput.
} GoExtToolClass;
kDeclareClassEx(Go, GoExtTool, GoTool)
GoFx(kStatus) GoExtTool_Construct(GoExtTool* tool, kObject sensor, kAlloc allocator);
GoFx(kStatus) GoExtTool_VInit(GoExtTool tool, kType type, kObject sensor, kAlloc alloc);
GoFx(kStatus) GoExtTool_VRelease(GoExtTool tool);
GoFx(kStatus) GoExtTool_VRead(GoExtTool tool, kXml xml, kXmlItem item);
GoFx(kStatus) GoExtTool_VWrite(GoExtTool tool, kXml xml, kXmlItem item);
GoFx(kStatus) GoExtTool_Init(GoTool tool, kType type, GoToolType typeId, kObject sensor, kAlloc alloc);
GoFx(kStatus) GoExtTool_ParseAnchor(kXml xml, kXmlItem anchorItem, GoExtToolAnchoringCfg* anchoring);
GoFx(kStatus) GoExtTool_ReadToolDataOutputs(GoExtTool tool, kXml xml, kXmlItem item);
GoFx(kStatus) GoExtTool_WriteToolDataOutputs(GoExtTool tool, kXml xml, kXmlItem item);
#endif