/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "DgTextProperties.h" #include "CmColor.h" #include "DgFontTableRecord.h" //----------------------------------------------------------------------------------------------------------------------- // OdDgText2d //----------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------- // property: Text //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getText(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setText(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: FirstLineIndentationOverride //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dFirstLineIndentationOverrideProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getFirstLineIndentationOverride(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dFirstLineIndentationOverrideProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setFirstLineIndentationOverride(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: ParagraphIndentationOverride //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dParagraphIndentationOverrideProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getParagraphIndentationOverride(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dParagraphIndentationOverrideProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setParagraphIndentationOverride(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextIndentationOverrideFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextIndentationOverrideFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextIndentationOverrideFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextIndentationOverrideFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextIndentationOverrideFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: EndOfLineFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dEndOfLineFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getEndOfLineFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dEndOfLineFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setEndOfLineFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Font //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dFontProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgFontTablePtr pFontTable = pDb->getFontTable(); value = pFontTable->getAt(pObj->getFontEntryId()); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dFontProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgElementId idFont = *rxvalue_cast(&value); if (idFont.isNull()) { pObj->setFontEntryId(0); } else { OdDgElementPtr pFontElm = idFont.openObject(OdDg::kForRead); if( !pFontElm.isNull() && pFontElm->isKindOf(OdDgFontTableRecord::desc()) ) { OdDgFontTableRecordPtr pFont = pFontElm; pObj->setFontEntryId(pFont->getNumber()); } } return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Justification //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dJustificationProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getJustification(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dJustificationProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setJustification(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Length //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLengthProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLength(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLengthProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLength(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Height //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dHeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getHeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dHeightProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setHeight(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LengthMultiplier //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLengthMultiplierProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLengthMultiplier(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLengthMultiplierProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLengthMultiplier(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: HeightMultiplier //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dHeightMultiplierProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getHeightMultiplier(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dHeightMultiplierProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setHeightMultiplier(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Rotation //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dRotationProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getRotation(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dRotationProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setRotation(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Origin //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOriginProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOrigin(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOriginProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setOrigin(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: AnnotationScaleFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dAnnotationScaleFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getAnnotationScaleFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dAnnotationScaleFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setAnnotationScaleFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: AnnotationScale //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dAnnotationScaleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getAnnotationScale(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dAnnotationScaleProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setAnnotationScale(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: GeomExtents //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dGeomExtentsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdGeExtents3d geomExtents; pObj->getGeomExtents(geomExtents); value = geomExtents; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextEditFields //----------------------------------------------------------------------------------------------------------------------- ODDG_DEFINE_RX_VALUE_ARRAY_ITERATOR(OdDgTextEditField); OdRxValueIteratorPtr OdDgText2dTextEditFieldsProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; const OdInt16 objCount = pObj->getTextEditFieldCount(); for (OdInt16 i = 0; i < objCount; i++) { OdDgTextEditField textEditField = pObj->getTextEditFieldAt(i); arrObjects.push_back(textEditField); } ((OdRxOdDgTextEditFieldValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextEditFieldsProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getTextEditFieldCount(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextEditFieldsProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextEditFieldAt((OdInt16)index); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextEditFieldsProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextEditFieldAt((OdInt16)index, *rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextEditFieldsProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->addTextEditField(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextEditFieldsProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->removeTextEditFieldAt((OdInt16)index); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TabStopArrayOverride //----------------------------------------------------------------------------------------------------------------------- ODDG_DEFINE_RX_VALUE_ARRAY_ITERATOR(OdDouble); OdRxValueIteratorPtr OdDgText2dTabStopArrayOverrideProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); const unsigned int objCount = doubleArray.size(); for (unsigned int i = 0; i < objCount; i++) { OdDouble tabStop = doubleArray.getAt(i); arrObjects.push_back(tabStop); } ((OdRxOdDoubleValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTabStopArrayOverrideProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getTabStopArrayOverride().size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTabStopArrayOverrideProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); OdDouble arrayValue = OdDouble(); if (!doubleArray.isEmpty()) arrayValue = doubleArray.getAt(index); value = arrayValue; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTabStopArrayOverrideProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.setAt(index, *rxvalue_cast(&value)); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTabStopArrayOverrideProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.insertAt(index, *rxvalue_cast(&value)); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTabStopArrayOverrideProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.removeAt(index); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: SpecialSymbolsAfterText //----------------------------------------------------------------------------------------------------------------------- OdRxValueIteratorPtr OdDgText2dSpecialSymbolsAfterTextProperty::subNewValueIterator(const OdRxObject* pO) const { struct OdRxOdDgSpecialSymbolValueIterator : OdRxValueIterator { OdArray m_arrData; OdUInt32 m_uCurIndex; OdRxOdDgSpecialSymbolValueIterator() { m_uCurIndex = 0; } virtual void init(const OdArray& arrData, OdUInt32 uStartIndex) { m_arrData = arrData; m_uCurIndex = uStartIndex; } virtual bool done() { if (m_arrData.isEmpty()) return true; return m_uCurIndex == m_arrData.size(); } virtual bool next() { if (m_uCurIndex < m_arrData.size()) m_uCurIndex++; return !done(); } virtual OdRxValue current() const { if (m_uCurIndex >= m_arrData.size()) throw OdError(eInvalidIndex); return m_arrData[m_uCurIndex]; } }; OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects = pObj->getSpecialSymbolsAfterText(); ((OdRxOdDgSpecialSymbolValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSpecialSymbolsAfterTextProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getSpecialSymbolsAfterText().size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSpecialSymbolsAfterTextProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray symbolsArray = pObj->getSpecialSymbolsAfterText(); OdDgTextExtendedProperties::OdDgSpecialSymbol arrayValue = OdDgTextExtendedProperties::kTab; if (!symbolsArray.isEmpty()) arrayValue = symbolsArray.getAt(index); value = arrayValue; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSpecialSymbolsAfterTextProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.setAt(index, *rxvalue_cast(&value)); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSpecialSymbolsAfterTextProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.insertAt(index, *rxvalue_cast(&value)); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSpecialSymbolsAfterTextProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.removeAt(index); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BoundingPoints //----------------------------------------------------------------------------------------------------------------------- ODDG_DEFINE_RX_VALUE_ARRAY_ITERATOR(OdGePoint2d); OdRxValueIteratorPtr OdDgText2dBoundingPointsProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; OdGePoint2dArray pointsArray; pObj->getBoundingPoints(pointsArray); const unsigned int objCount = pointsArray.size(); for (unsigned int i = 0; i < objCount; i++) { OdGePoint2d point = pointsArray.getAt(i); arrObjects.push_back(point); } ((OdRxOdGePoint2dValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBoundingPointsProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdGePoint2dArray pointsArray; pObj->getBoundingPoints(pointsArray); count = pointsArray.size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UpsideDownFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUpsideDownFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUpsideDownFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUpsideDownFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setUpsideDownFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackwardsFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackwardsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackwardsFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackwardsProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setBackwardsFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LineSpacingType //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLineSpacingTypeProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLineSpacingType(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLineSpacingTypeProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLineSpacingType(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionAlign //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionAlignProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionAlign(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionAlignProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionAlign(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionSection //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionSectionProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionSection(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionSectionProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionSection(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionType //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionTypeProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionType(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dStackedFractionTypeProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionType(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Slant //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSlantProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getSlant(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dSlantProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setSlant(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineSpacing //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUnderlineSpacingProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUnderlineSpacing(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUnderlineSpacingProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setUnderlineSpacing(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LineOffset //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLineOffsetProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLineOffset(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dLineOffsetProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLineOffset(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: CodePage //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dCodePageProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getCodePage(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dCodePageProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setCodePage(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: ShxBigFont //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dShxBigFontProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgFontTablePtr pFontTable = pDb->getFontTable(OdDg::kForRead); OdUInt32 fontId = pObj->getShxBigFontEntryId(); value = pFontTable->getAt(fontId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackgroundLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getBackgroundLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackgroundLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackgroundLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackgroundColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getBackgroundColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getBackgroundColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundFillColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackgroundFillColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getBackgroundFillColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getBackgroundFillColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundBorder //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dBackgroundBorderProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackgroundBorder(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineSpacing //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOverlineSpacingProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOverlineSpacing(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOverlineSpacingProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setOverlineSpacing(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgTextStyleTablePtr pTextStyleTable = pDb->getTextStyleTable(OdDg::kForRead); OdUInt32 textStyleId = pObj->getTextStyleEntryId(); value = pTextStyleTable->getAt(textStyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUnderlineColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getUnderlineColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getUnderlineColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUnderlineLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getUnderlineLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dUnderlineLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUnderlineLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOverlineColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getOverlineColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getOverlineColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOverlineLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getOverlineLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dOverlineLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOverlineLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextnodeWordWrapLength //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextnodeWordWrapLengthProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextnodeWordWrapLength(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dTextnodeWordWrapLengthProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextnodeWordWrapLength(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: CrCount //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dCrCountProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getCrCount(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dCrCountProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setCrCount(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Color //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dColorProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; const OdCmEntityColor* pColor = rxvalue_cast(&value); switch (pColor->colorMethod()) { case OdCmEntityColor::kByLayer: pObj->setColorIndex(OdDg::kColorByLevel); break; case OdCmEntityColor::kByBlock: pObj->setColorIndex(OdDg::kColorByCell); break; case OdCmEntityColor::kByACI: pObj->setColorIndex(pColor->colorIndex()); break; //??? case OdCmEntityColor::kByDgnIndex: pObj->setColorIndex(pColor->colorIndex()); break; case OdCmEntityColor::kByPen: pObj->setColorIndex(pColor->colorIndex()); break; //??? case OdCmEntityColor::kByColor: { ODCOLORREF curColor = ODRGB(pColor->red(), pColor->green(), pColor->blue()); pObj->setColor(curColor); } } return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Position //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dPositionProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getPosition(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dPositionProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setPosition(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Italics //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dItalicsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getItalics(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText2dItalicsProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText2dPtr pObj = OdDgText2d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setItalics(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // OdDgText3d //----------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------- // property: Text //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getText(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setText(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: FirstLineIndentationOverride //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dFirstLineIndentationOverrideProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getFirstLineIndentationOverride(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dFirstLineIndentationOverrideProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setFirstLineIndentationOverride(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: ParagraphIndentationOverride //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dParagraphIndentationOverrideProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getParagraphIndentationOverride(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dParagraphIndentationOverrideProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setParagraphIndentationOverride(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextIndentationOverrideFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextIndentationOverrideFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextIndentationOverrideFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextIndentationOverrideFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextIndentationOverrideFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: EndOfLineFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dEndOfLineFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getEndOfLineFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dEndOfLineFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setEndOfLineFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Font //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dFontProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgFontTablePtr pFontTable = pDb->getFontTable(); value = pFontTable->getAt(pObj->getFontEntryId()); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dFontProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgElementId idFont = *rxvalue_cast(&value); if (idFont.isNull()) { pObj->setFontEntryId(0); } else { OdDgElementPtr pFontElm = idFont.openObject(OdDg::kForRead); if (!pFontElm.isNull() && pFontElm->isKindOf(OdDgFontTableRecord::desc())) { OdDgFontTableRecordPtr pFont = pFontElm; pObj->setFontEntryId(pFont->getNumber()); } } return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Justification //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dJustificationProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getJustification(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dJustificationProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setJustification(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Length //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLengthProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLength(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLengthProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLength(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Height //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dHeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getHeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dHeightProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setHeight(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LengthMultiplier //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLengthMultiplierProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLengthMultiplier(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLengthMultiplierProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLengthMultiplier(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: HeightMultiplier //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dHeightMultiplierProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getHeightMultiplier(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dHeightMultiplierProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setHeightMultiplier(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Rotation //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dRotationProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getRotation(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dRotationProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setRotation(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Origin //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOriginProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOrigin(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOriginProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setOrigin(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: AnnotationScaleFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dAnnotationScaleFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getAnnotationScaleFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dAnnotationScaleFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setAnnotationScaleFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: AnnotationScale //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dAnnotationScaleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getAnnotationScale(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dAnnotationScaleProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setAnnotationScale(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: GeomExtents //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dGeomExtentsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdGeExtents3d geomExtents; pObj->getGeomExtents(geomExtents); value = geomExtents; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextEditFields //----------------------------------------------------------------------------------------------------------------------- OdRxValueIteratorPtr OdDgText3dTextEditFieldsProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; const OdInt16 objCount = pObj->getTextEditFieldCount(); for (OdInt16 i = 0; i < objCount; i++) { OdDgTextEditField textEditField = pObj->getTextEditFieldAt(i); arrObjects.push_back(textEditField); } ((OdRxOdDgTextEditFieldValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextEditFieldsProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getTextEditFieldCount(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextEditFieldsProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextEditFieldAt((OdInt16)index); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextEditFieldsProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextEditFieldAt((OdInt16)index, *rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextEditFieldsProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->addTextEditField(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextEditFieldsProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->removeTextEditFieldAt((OdInt16)index); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TabStopArrayOverride //----------------------------------------------------------------------------------------------------------------------- OdRxValueIteratorPtr OdDgText3dTabStopArrayOverrideProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); const unsigned int objCount = doubleArray.size(); for (unsigned int i = 0; i < objCount; i++) { OdDouble tabStop = doubleArray.getAt(i); arrObjects.push_back(tabStop); } ((OdRxOdDoubleValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTabStopArrayOverrideProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getTabStopArrayOverride().size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTabStopArrayOverrideProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); OdDouble arrayValue = OdDouble(); if (!doubleArray.isEmpty()) arrayValue = doubleArray.getAt(index); value = arrayValue; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTabStopArrayOverrideProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.setAt(index, *rxvalue_cast(&value)); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTabStopArrayOverrideProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.insertAt(index, *rxvalue_cast(&value)); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTabStopArrayOverrideProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDoubleArray doubleArray = pObj->getTabStopArrayOverride(); doubleArray.removeAt(index); pObj->setTabStopArrayOverride(doubleArray); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: SpecialSymbolsAfterText //----------------------------------------------------------------------------------------------------------------------- OdRxValueIteratorPtr OdDgText3dSpecialSymbolsAfterTextProperty::subNewValueIterator(const OdRxObject* pO) const { struct OdRxOdDgSpecialSymbolValueIterator : OdRxValueIterator { OdArray m_arrData; OdUInt32 m_uCurIndex; OdRxOdDgSpecialSymbolValueIterator() { m_uCurIndex = 0; } virtual void init(const OdArray& arrData, OdUInt32 uStartIndex) { m_arrData = arrData; m_uCurIndex = uStartIndex; } virtual bool done() { if (m_arrData.isEmpty()) return true; return m_uCurIndex == m_arrData.size(); } virtual bool next() { if (m_uCurIndex < m_arrData.size()) m_uCurIndex++; return !done(); } virtual OdRxValue current() const { if (m_uCurIndex >= m_arrData.size()) throw OdError(eInvalidIndex); return m_arrData[m_uCurIndex]; } }; OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects = pObj->getSpecialSymbolsAfterText(); ((OdRxOdDgSpecialSymbolValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSpecialSymbolsAfterTextProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; count = pObj->getSpecialSymbolsAfterText().size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSpecialSymbolsAfterTextProperty::subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray symbolsArray = pObj->getSpecialSymbolsAfterText(); OdDgTextExtendedProperties::OdDgSpecialSymbol arrayValue = OdDgTextExtendedProperties::kTab; if (!symbolsArray.isEmpty()) arrayValue = symbolsArray.getAt(index); value = arrayValue; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSpecialSymbolsAfterTextProperty::subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.setAt(index, *rxvalue_cast(&value)); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSpecialSymbolsAfterTextProperty::subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.insertAt(index, *rxvalue_cast(&value)); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSpecialSymbolsAfterTextProperty::subRemoveValue(OdRxObject* pO, int index) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdArray arr = pObj->getSpecialSymbolsAfterText(); arr.removeAt(index); pObj->setSpecialSymbolsAfterText(arr); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BoundingPoints //----------------------------------------------------------------------------------------------------------------------- ODDG_DEFINE_RX_VALUE_ARRAY_ITERATOR(OdGePoint3d); OdRxValueIteratorPtr OdDgText3dBoundingPointsProperty::subNewValueIterator(const OdRxObject* pO) const { OdRxValueIteratorPtr res; res = OdRxObjectImpl::createObject(); OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (!pObj.isNull()) { OdArray arrObjects; OdGePoint3dArray pointsArray; pObj->getBoundingPoints(pointsArray); const unsigned int objCount = pointsArray.size(); for (unsigned int i = 0; i < objCount; i++) { OdGePoint3d point = pointsArray.getAt(i); arrObjects.push_back(point); } ((OdRxOdGePoint3dValueIterator*)res.get())->init(arrObjects, 0); } return res; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBoundingPointsProperty::subTryGetCount(const OdRxObject* pO, int& count) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdGePoint3dArray pointsArray; pObj->getBoundingPoints(pointsArray); count = pointsArray.size(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UpsideDownFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUpsideDownFlagProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUpsideDownFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUpsideDownFlagProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setUpsideDownFlag(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LineSpacingType //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLineSpacingTypeProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLineSpacingType(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLineSpacingTypeProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLineSpacingType(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionAlign //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionAlignProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionAlign(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionAlignProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionAlign(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionSection //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionSectionProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionSection(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionSectionProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionSection(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: StackedFractionType //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionTypeProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getStackedFractionType(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dStackedFractionTypeProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setStackedFractionType(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Slant //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSlantProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getSlant(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dSlantProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setSlant(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineSpacing //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUnderlineSpacingProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUnderlineSpacing(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUnderlineSpacingProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setUnderlineSpacing(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: LineOffset //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLineOffsetProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getLineOffset(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dLineOffsetProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setLineOffset(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: CodePage //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dCodePageProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getCodePage(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dCodePageProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setCodePage(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: ShxBigFont //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dShxBigFontProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgFontTablePtr pFontTable = pDb->getFontTable(OdDg::kForRead); OdUInt32 fontId = pObj->getShxBigFontEntryId(); value = pFontTable->getAt(fontId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackgroundLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getBackgroundLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackgroundLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackgroundLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackgroundColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getBackgroundColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getBackgroundColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundFillColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackgroundFillColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getBackgroundFillColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getBackgroundFillColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackgroundBorder //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackgroundBorderProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackgroundBorder(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineSpacing //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOverlineSpacingProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOverlineSpacing(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOverlineSpacingProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setOverlineSpacing(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgTextStyleTablePtr pTextStyleTable = pDb->getTextStyleTable(OdDg::kForRead); OdUInt32 textStyleId = pObj->getTextStyleEntryId(); value = pTextStyleTable->getAt(textStyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUnderlineColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getUnderlineColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getUnderlineColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUnderlineLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getUnderlineLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: UnderlineLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dUnderlineLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getUnderlineLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineColor //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOverlineColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getOverlineColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getOverlineColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineLineStyle //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOverlineLineStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgDatabasePtr pDb = pObj->database(); OdDgLineStyleTablePtr pLineStyleTable = pDb->getLineStyleTable(OdDg::kForRead); OdUInt32 linestyleId = pObj->getOverlineLineStyleEntryId(); value = pLineStyleTable->getAt(linestyleId); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: OverlineLineWeight //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dOverlineLineWeightProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getOverlineLineWeight(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: TextnodeWordWrapLength //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextnodeWordWrapLengthProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getTextnodeWordWrapLength(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dTextnodeWordWrapLengthProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setTextnodeWordWrapLength(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: CrCount //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dCrCountProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getCrCount(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dCrCountProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setCrCount(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Color //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dColorProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmEntityColor cmColor; OdUInt32 uIndex = pObj->getColorIndex(); if (uIndex == OdDg::kColorByLevel) cmColor.setColorMethod(OdCmEntityColor::kByLayer); else if (uIndex == OdDg::kColorByCell) cmColor.setColorMethod(OdCmEntityColor::kByBlock); else if (uIndex < 256) { OdCmEntityColor::setDgnColorIndex(&uIndex, (OdInt16)uIndex); cmColor.setColor(uIndex); } else { ODCOLORREF rgbColor = pObj->getColorIndex(); cmColor.setColorMethod(OdCmEntityColor::kByColor); cmColor.setRed(ODGETRED(rgbColor)); cmColor.setGreen(ODGETGREEN(rgbColor)); cmColor.setBlue(ODGETBLUE(rgbColor)); } value = cmColor; return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dColorProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; const OdCmEntityColor* pColor = rxvalue_cast(&value); switch (pColor->colorMethod()) { case OdCmEntityColor::kByLayer: pObj->setColorIndex(OdDg::kColorByLevel); break; case OdCmEntityColor::kByBlock: pObj->setColorIndex(OdDg::kColorByCell); break; case OdCmEntityColor::kByACI: pObj->setColorIndex(pColor->colorIndex()); break; //??? case OdCmEntityColor::kByDgnIndex: pObj->setColorIndex(pColor->colorIndex()); break; case OdCmEntityColor::kByPen: pObj->setColorIndex(pColor->colorIndex()); break; //??? case OdCmEntityColor::kByColor: { ODCOLORREF curColor = ODRGB(pColor->red(), pColor->green(), pColor->blue()); pObj->setColor(curColor); } } return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Position //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dPositionProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getPosition(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dPositionProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setPosition(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: Italics //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dItalicsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getItalics(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dItalicsProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setItalics(*rxvalue_cast(&value)); return eOk; } //----------------------------------------------------------------------------------------------------------------------- // property: BackwardsFlag //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackwardsProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; value = pObj->getBackwardsFlag(); return eOk; } //----------------------------------------------------------------------------------------------------------------------- OdResult OdDgText3dBackwardsProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgText3dPtr pObj = OdDgText3d::cast(pO); if (pObj.isNull()) return eNotApplicable; pObj->setBackwardsFlag(*rxvalue_cast(&value)); return eOk; } //-----------------------------------------------------------------------------------------------------------------------