diff --git a/src/App/ColorModel.cpp b/src/App/ColorModel.cpp index b06a9360e9..99c39308e8 100644 --- a/src/App/ColorModel.cpp +++ b/src/App/ColorModel.cpp @@ -298,15 +298,18 @@ void ColorGradient::setColorModel () ColorLegend::ColorLegend () : outsideGrayed(false) { - // default green, red + // default blue, green, red + colorFields.emplace_back(0, 0, 1); colorFields.emplace_back(0, 1, 0); colorFields.emplace_back(1, 0, 0); names.push_back("Min"); + names.push_back("Mid"); names.push_back("Max"); values.push_back(-1.0f); - values.push_back(0.0f); + values.push_back(-0.333f); + values.push_back(0.333f); values.push_back(1.0f); } diff --git a/src/Gui/SoFCColorLegend.cpp b/src/Gui/SoFCColorLegend.cpp index fe8a7c428d..14b728ef14 100644 --- a/src/Gui/SoFCColorLegend.cpp +++ b/src/Gui/SoFCColorLegend.cpp @@ -25,6 +25,7 @@ #ifndef _PreComp_ # include +# include # include # include # include @@ -45,18 +46,19 @@ SO_NODE_SOURCE(SoFCColorLegend) /*! Constructor. */ -SoFCColorLegend::SoFCColorLegend() : _fPosX(4.0f), _fPosY(4.0f) +SoFCColorLegend::SoFCColorLegend() : _bbox(4.0f, -4.0f, 4.5f, 4.0f) { - SO_NODE_CONSTRUCTOR(SoFCColorLegend); - _cColRamp.setStyle(App::ColorGradient::FLOW); + SO_NODE_CONSTRUCTOR(SoFCColorLegend); + coords = new SoCoordinate3; + coords->ref(); + labelGroup = new SoSeparator; + labelGroup->ref(); - coords = new SoCoordinate3; - coords->ref(); - labels = new SoSeparator; - labels->ref(); + valueGroup = new SoSeparator; + valueGroup->ref(); - setColorModel(0); - setRange(-0.5f,0.5f,1); + setColorLegend(_currentLegend); + setLegendLabels(_currentLegend, 3); } /*! @@ -64,181 +66,297 @@ SoFCColorLegend::SoFCColorLegend() : _fPosX(4.0f), _fPosY(4.0f) */ SoFCColorLegend::~SoFCColorLegend() { - //delete THIS; - coords->unref(); - labels->unref(); + //delete THIS; + coords->unref(); + labelGroup->unref(); + valueGroup->unref(); } // doc from parent void SoFCColorLegend::initClass(void) { - SO_NODE_INIT_CLASS(SoFCColorLegend,SoFCColorBarBase,"Separator"); + SO_NODE_INIT_CLASS(SoFCColorLegend,SoFCColorBarBase,"Separator"); } void SoFCColorLegend::finish() { - atexit_cleanup(); + atexit_cleanup(); } -void SoFCColorLegend::setMarkerLabel( const SoMFString& label ) +namespace { +std::vector getLabelPositions(int num, const SbBox2f& bbox) { - coinRemoveAllChildren(labels); + std::vector pos; + float fMinY = bbox.getMin()[1]; + float fMaxX = bbox.getMax()[0]; + float fMaxY = bbox.getMax()[1] - 0.5f; - int num = label.getNum(); - if ( num > 1 ) - { - float fStep = 8.0f / ((float)num-1); - SoTransform* trans = new SoTransform; - trans->translation.setValue(_fPosX+0.1f,_fPosY-0.05f+fStep,0.0f); - labels->addChild(trans); - - for ( int i=0; itranslation.setValue(0,-fStep,0); - color->rgb.setValue(0,0,0); - text2->string.setValue( label[i] ); - labels->addChild(trans); - labels->addChild(color); - labels->addChild(text2); - } - } -} - -void SoFCColorLegend::setViewportSize( const SbVec2s& size ) -{ - float fRatio = ((float)size[0])/((float)size[1]); - float fMinX= 4.0f, fMaxX=4.5f; - float fMinY= -4.0f, fMaxY=4.0f; - - if ( fRatio > 1.0f ) - { - fMinX = 4.0f * fRatio; - fMaxX = fMinX+0.5f; - } - else if ( fRatio < 1.0f ) - { - fMinY = -4.0f / fRatio; - fMaxY = 4.0f / fRatio; - } - - _fPosX = fMaxX; - _fPosY = fMaxY; - - // search for the labels - int num=0; - for ( int i=0; igetNumChildren(); i++ ) - { - if ( labels->getChild(i)->getTypeId() == SoTransform::getClassTypeId() ) - num++; - } - - if ( num > 2 ) - { - bool first=true; - float fStep = (fMaxY-fMinY) / ((float)num-2); - - for ( int j=0; jgetNumChildren(); j++ ) - { - if ( labels->getChild(j)->getTypeId() == SoTransform::getClassTypeId() ) - { - if ( first ) - { - first = false; - static_cast(labels->getChild(j))->translation.setValue(fMaxX+0.1f,fMaxY-0.05f+fStep,0.0f); + if (num > 1) { + float fStep = (fMaxY-fMinY) / static_cast(num - 1); + pos.emplace_back(fMaxX + 0.1f, fMaxY + 0.20f + fStep, 0.0f); + for (int i=0; i(labels->getChild(j))->translation.setValue(0,-fStep,0.0f); - } - } } - } - // set the vertices spanning the faces for the color gradient - int ct = coords->point.getNum()/2; - for ( int j=0; jpoint.set1Value(2*j, fMinX, fPosY, 0.0f); - coords->point.set1Value(2*j+1, fMaxX, fPosY, 0.0f); - } + return pos; } -void SoFCColorLegend::setRange( float fMin, float fMax, int prec ) +std::vector getValuePositions(int num, const SbBox2f& bbox) { - SoMFString label; - for (int j=0; j<9; j++) - { - std::stringstream s; - s.precision(prec); - s.setf(std::ios::fixed | std::ios::showpoint | std::ios::showpos); - float fValue = (1.0f-0.125f*(float)j)*fMax + (0.125f*(float)j)*fMin; - s << fValue; - label.set1Value(j, s.str().c_str()); - } + std::vector pos; + float fMinY = bbox.getMin()[1]; + float fMaxX = bbox.getMax()[0]; + float fMaxY = bbox.getMax()[1] - 0.5f; - setMarkerLabel( label ); - _cColRamp.setRange(fMin, fMax); + if (num > 2) { + float fStep = (fMaxY-fMinY) / static_cast(num - 2); + float eps = fStep / 4.0f; + + pos.emplace_back(fMaxX + 0.1f, fMaxY + 0.25f + 1.5f * fStep, 0.0f); + for (int i=0; ipoint.setNum(2*uCtColors); - for ( int i=0; ipoint.set1Value(2*i, fMinX, fPosY, 0.0f); - coords->point.set1Value(2*i+1, fMaxX, fPosY, 0.0f); - } + int num = label.getNum(); + if (num > 1) { + std::vector pos = getLabelPositions(num, _bbox); - // for uCtColors colors we need 2*(uCtColors-1) facets and therefore an array with - // 8*(uCtColors-1) face indices - SoIndexedFaceSet * faceset = new SoIndexedFaceSet; - faceset->coordIndex.setNum(8*(uCtColors-1)); - for ( int j=0; jcoordIndex.set1Value(8*j, 2*j); - faceset->coordIndex.set1Value(8*j+1, 2*j+3); - faceset->coordIndex.set1Value(8*j+2, 2*j+1); - faceset->coordIndex.set1Value(8*j+3, SO_END_FACE_INDEX); - faceset->coordIndex.set1Value(8*j+4, 2*j); - faceset->coordIndex.set1Value(8*j+5, 2*j+2); - faceset->coordIndex.set1Value(8*j+6, 2*j+3); - faceset->coordIndex.set1Value(8*j+7, SO_END_FACE_INDEX); - } + SoTransform* trans = new SoTransform; + trans->translation.setValue(pos[0]); + labelGroup->addChild(trans); - SoMaterial* mat = new SoMaterial; - //mat->transparency = 0.3f; - mat->diffuseColor.setNum(2*uCtColors); - for ( int k=0; kdiffuseColor.set1Value(2*k, col.r, col.g, col.b); - mat->diffuseColor.set1Value(2*k+1, col.r, col.g, col.b); - } + for (int i=0; ivalue = SoMaterialBinding::PER_VERTEX_INDEXED; - - // first clear the children - if ( getNumChildren() > 0 ) - coinRemoveAllChildren(this); - addChild(labels); - addChild(coords); - addChild(mat); - addChild(matBinding); - addChild(faceset); + trans->translation.setValue(pos[i+1]); + color->rgb.setValue(0, 0, 0); + text2->string.setValue(label[i]); + labelGroup->addChild(trans); + labelGroup->addChild(color); + labelGroup->addChild(text2); + } + } +} + +void SoFCColorLegend::setMarkerValue(const SoMFString& value) +{ + coinRemoveAllChildren(valueGroup); + + int num = value.getNum(); + if (num > 1) { + std::vector pos = getValuePositions(num, _bbox); + + SoTransform* trans = new SoTransform; + trans->translation.setValue(pos[0]); + valueGroup->addChild(trans); + + for (int i=0; itranslation.setValue(pos[i+1]); + color->rgb.setValue(0, 0, 0); + text2->string.setValue(value[i]); + valueGroup->addChild(trans); + valueGroup->addChild(color); + valueGroup->addChild(text2); + } + } +} + +void SoFCColorLegend::setViewportSize(const SbVec2s& size) +{ + // don't know why the parameter range isn't between [-1,+1] + float fRatio = static_cast(size[0]) / static_cast(size[1]); + float fMinX = 4.0f, fMaxX = 4.5f; + float fMinY = -4.0f, fMaxY = 4.0f; + + if (fRatio > 1.0f) { + fMinX = 4.0f * fRatio; + fMaxX = fMinX + 0.5f; + } + else if (fRatio < 1.0f) { + fMinY = -4.0f / fRatio; + fMaxY = 4.0f / fRatio; + } + + _bbox.setBounds(fMinX, fMinY, fMaxX, fMaxY); + + arrangeLabels(_bbox); + arrangeValues(_bbox); + modifyPoints(_bbox); +} + +void SoFCColorLegend::setRange(float fMin, float fMax, int prec) +{ + std::size_t numFields = _currentLegend.hasNumberOfFields(); + for (std::size_t i = 0; i <= numFields; i++) { + float factor = static_cast(i) / numFields; + float value = (1 - factor) * fMin + factor * fMax; + _currentLegend.setValue(i, value); + } + + setColorLegend(_currentLegend); + setLegendLabels(_currentLegend, prec); +} + +void SoFCColorLegend::setLegendLabels(const App::ColorLegend& legend, int prec) +{ + float fMin = legend.getMinValue(); + float fMax = legend.getMaxValue(); + + std::size_t numFields = legend.hasNumberOfFields(); + + SoMFString labels, values; + + float eps = std::pow(10.0f, static_cast(-prec)); + float value = std::min(fabs(fMin), fabs(fMax)); + std::ios::fmtflags flags = value < eps ? (std::ios::scientific | std::ios::showpoint | std::ios::showpos) + : (std::ios::fixed | std::ios::showpoint | std::ios::showpos); + + for (std::size_t i=0; i < numFields; i++) { + std::stringstream s; + s << legend.getText(numFields - 1 - i); + labels.set1Value(i, s.str().c_str()); + } + + for (std::size_t i=0; i <= numFields; i++) { + std::stringstream s; + s.precision(prec); + s.setf(flags); + float fValue = legend.getValue(numFields - i); + s << fValue; + values.set1Value(i, s.str().c_str()); + } + + setMarkerLabel(labels); + setMarkerValue(values); +} + +void SoFCColorLegend::modifyPoints(const SbBox2f& box) +{ + float fMinX = box.getMin()[0]; + float fMinY = box.getMin()[1]; + float fMaxX = box.getMax()[0]; + float fMaxY = box.getMax()[1] - 0.5f; + + // set the vertices spanning the faces for the color legend + int intFields = coords->point.getNum() / 4; + for (int i = 0; i < intFields; i++) { + float w = static_cast(i) / (intFields - 1); + float fPosY1 = w * fMaxY + (1.0f - w) * fMinY; + float fPosY2 = fPosY1 + 0.5f; + coords->point.set1Value(4 * i, fMinX, fPosY1, 0.0f); + coords->point.set1Value(4 * i + 1, fMaxX, fPosY1, 0.0f); + coords->point.set1Value(4 * i + 2, fMaxX, fPosY2, 0.0f); + coords->point.set1Value(4 * i + 3, fMinX, fPosY2, 0.0f); + } +} + +void SoFCColorLegend::arrangeLabels(const SbBox2f& box) +{ + // search for the labels + int num=0; + for (int i=0; igetNumChildren(); i++) { + if (labelGroup->getChild(i)->getTypeId() == SoTransform::getClassTypeId()) + num++; + } + + if (num > 2) { + std::vector pos = getLabelPositions(num-1, box); + + int index = 0; + for (int j=0; jgetNumChildren(); j++) { + if (labelGroup->getChild(j)->getTypeId() == SoTransform::getClassTypeId()) { + static_cast(labelGroup->getChild(j))->translation.setValue(pos[index++]); + } + } + } +} + +void SoFCColorLegend::arrangeValues(const SbBox2f& box) +{ + // search for the labels + int num=0; + for (int i=0; igetNumChildren(); i++) { + if (valueGroup->getChild(i)->getTypeId() == SoTransform::getClassTypeId()) + num++; + } + + if (num > 3) { + std::vector pos = getValuePositions(num-1, box); + + int index = 0; + for (int j=0; jgetNumChildren(); j++) { + if (valueGroup->getChild(j)->getTypeId() == SoTransform::getClassTypeId()) { + static_cast(valueGroup->getChild(j))->translation.setValue(pos[index++]); + } + } + } +} + +void SoFCColorLegend::setColorLegend(const App::ColorLegend& legend) +{ + // create top value field + std::size_t numFields = legend.hasNumberOfFields(); + int intFields = static_cast(numFields); + coords->point.setNum(4 * intFields); + modifyPoints(_bbox); + + // for numFields colors we need numFields quads + SoIndexedFaceSet * faceset = new SoIndexedFaceSet; + faceset->coordIndex.setNum(5 * intFields); + for (int j = 0; j < intFields; j++) { + faceset->coordIndex.set1Value(5*j, 4*j); + faceset->coordIndex.set1Value(5*j+1, 4*j+1); + faceset->coordIndex.set1Value(5*j+2, 4*j+2); + faceset->coordIndex.set1Value(5*j+3, 4*j+3); + faceset->coordIndex.set1Value(5*j+4, SO_END_FACE_INDEX); + } + + SoMaterial* mat = new SoMaterial; + mat->diffuseColor.setNum(intFields); + for (std::size_t k = 0; k < numFields; k++) { + App::Color col = legend.getColor(k); + mat->diffuseColor.set1Value(k, col.r, col.g, col.b); + } + + SoMaterialBinding* matBinding = new SoMaterialBinding; + matBinding->value = SoMaterialBinding::PER_FACE; + + // first clear the children + if (getNumChildren() > 0) + coinRemoveAllChildren(this); + addChild(labelGroup); + addChild(valueGroup); + addChild(coords); + addChild(mat); + addChild(matBinding); + addChild(faceset); } diff --git a/src/Gui/SoFCColorLegend.h b/src/Gui/SoFCColorLegend.h index 40aacbdfcd..4d1034a890 100644 --- a/src/Gui/SoFCColorLegend.h +++ b/src/Gui/SoFCColorLegend.h @@ -25,6 +25,7 @@ #define GUI_SOFCCOLORLEGEND_H #include +#include #include "SoFCColorBar.h" #include @@ -44,7 +45,7 @@ public: static void finish(void); SoFCColorLegend(void); - void setMarkerLabel( const SoMFString& label ); + void setLegendLabels(const App::ColorLegend& legend, int prec=3); /** * Sets the range of the colorbar from the maximum \a fMax to the minimum \a fMin. @@ -52,17 +53,17 @@ public: */ void setRange( float fMin, float fMax, int prec=3 ); /** - * Sets the color model of the underlying color ramp to \a index. + * Updates the node with the given color legend. */ - void setColorModel (std::size_t index); + void setColorLegend (const App::ColorLegend& legend); - unsigned short getColorIndex (float fVal) const { return _cColRamp.getColorIndex(fVal); } - App::Color getColor (float fVal) const { return _cColRamp.getColor(fVal); } - void setOutsideGrayed (bool bVal) { _cColRamp.setOutsideGrayed(bVal); } + unsigned short getColorIndex (float fVal) const { return _currentLegend.getColorIndex(fVal); } + App::Color getColor (float fVal) const { return _currentLegend.getColor(fVal); } + void setOutsideGrayed (bool bVal) { _currentLegend.setOutsideGrayed(bVal); } bool isVisible (float) const { return false; } - float getMinValue (void) const { return _cColRamp.getMinValue(); } - float getMaxValue (void) const { return _cColRamp.getMaxValue(); } - unsigned long countColors (void) const { return _cColRamp.getCountColors(); } + float getMinValue (void) const { return _currentLegend.getMinValue(); } + float getMaxValue (void) const { return _currentLegend.getMaxValue(); } + std::size_t countColors (void) const { return _currentLegend.hasNumberOfFields(); } bool customize() { return false; } const char* getColorBarName() const { return "Color Legend"; } @@ -75,13 +76,19 @@ protected: void setViewportSize( const SbVec2s& size ); virtual ~SoFCColorLegend(); // virtual void redrawHighlighted(SoAction * act, SbBool flag); - - SoCoordinate3* coords; - SoSeparator* labels; +private: + void setMarkerLabel(const SoMFString& label); + void setMarkerValue(const SoMFString& value); + void modifyPoints(const SbBox2f&); + void arrangeLabels(const SbBox2f&); + void arrangeValues(const SbBox2f&); private: - float _fPosX, _fPosY; - App::ColorGradient _cColRamp; + SoCoordinate3* coords; + SoSeparator* labelGroup; + SoSeparator* valueGroup; + SbBox2f _bbox; + App::ColorLegend _currentLegend; }; } // namespace Gui diff --git a/src/Mod/TechDraw/Symbols/misc/1st_Angle_Projection.svg b/src/Mod/TechDraw/Symbols/misc/1st_Angle_Projection.svg new file mode 100644 index 0000000000..38729b69e4 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/1st_Angle_Projection.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/3rd_Angle_Projection.svg b/src/Mod/TechDraw/Symbols/misc/3rd_Angle_Projection.svg new file mode 100644 index 0000000000..32dc680c8b --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/3rd_Angle_Projection.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Filled.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Filled.svg new file mode 100644 index 0000000000..a06d46dcaa --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Open.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Open.svg new file mode 100644 index 0000000000..0ee98d0839 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Long_Open.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Filled.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Filled.svg new file mode 100644 index 0000000000..ac6fb48f18 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Open.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Open.svg new file mode 100644 index 0000000000..91f58c3706 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Medium_Open.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Filled.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Filled.svg new file mode 100644 index 0000000000..d6fb109ffd --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Open.svg b/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Open.svg new file mode 100644 index 0000000000..cefdf76f10 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Arrow_Short_Open.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Balloon_Editable_Text.svg b/src/Mod/TechDraw/Symbols/misc/Balloon_Editable_Text.svg new file mode 100644 index 0000000000..08441a8c70 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Balloon_Editable_Text.svg @@ -0,0 +1,77 @@ + + + + + + + + image/svg+xml + + + + + + + + + 1 + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Balloon_Long.svg b/src/Mod/TechDraw/Symbols/misc/Balloon_Long.svg new file mode 100644 index 0000000000..8ad7d81900 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Balloon_Long.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Balloon_Medium.svg b/src/Mod/TechDraw/Symbols/misc/Balloon_Medium.svg new file mode 100644 index 0000000000..05a4448b08 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Balloon_Medium.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Balloon_Short.svg b/src/Mod/TechDraw/Symbols/misc/Balloon_Short.svg new file mode 100644 index 0000000000..87a13f6afa --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Balloon_Short.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/CallOut.svg b/src/Mod/TechDraw/Symbols/misc/CallOut.svg new file mode 100644 index 0000000000..0740d05a61 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/CallOut.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/CallOut_Left.svg b/src/Mod/TechDraw/Symbols/misc/CallOut_Left.svg new file mode 100644 index 0000000000..01f51bc5f4 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/CallOut_Left.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/CallOut_Right.svg b/src/Mod/TechDraw/Symbols/misc/CallOut_Right.svg new file mode 100644 index 0000000000..341dcd6bbe --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/CallOut_Right.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Centre_Justified_Text_10_Lines.svg b/src/Mod/TechDraw/Symbols/misc/Centre_Justified_Text_10_Lines.svg new file mode 100644 index 0000000000..430d09f317 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Centre_Justified_Text_10_Lines.svg @@ -0,0 +1,154 @@ + + + + + + + + image/svg+xml + + + + + + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cloud.svg b/src/Mod/TechDraw/Symbols/misc/Cloud.svg new file mode 100644 index 0000000000..602fc7bd0f --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cloud.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Long.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Long.svg new file mode 100644 index 0000000000..b82560ac94 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Long.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Medium.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Medium.svg new file mode 100644 index 0000000000..0ae2f65b40 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Medium.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Small.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Small.svg new file mode 100644 index 0000000000..3f1a3e6eff --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Small.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End.svg new file mode 100644 index 0000000000..9b5c2e24b5 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End_Large.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End_Large.svg new file mode 100644 index 0000000000..a8f5848ab0 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End_Large.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle.svg new file mode 100644 index 0000000000..998c3faca8 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle_Large.svg b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle_Large.svg new file mode 100644 index 0000000000..bf6674f171 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle_Large.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Left.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Left.svg new file mode 100644 index 0000000000..a8522c0f4a --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Left.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Point.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Point.svg new file mode 100644 index 0000000000..df2c1b02e7 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Point.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Right.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Right.svg new file mode 100644 index 0000000000..041cf3b21a --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Right.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Target_Left.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Left.svg new file mode 100644 index 0000000000..9c86ddf19c --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Left.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Target_Plain.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Plain.svg new file mode 100644 index 0000000000..b17f82823c --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Plain.svg @@ -0,0 +1,91 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + ?? + + + A1 + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Target_Right.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Right.svg new file mode 100644 index 0000000000..41ba634ed1 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Right.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Target_Up.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Up.svg new file mode 100644 index 0000000000..5f1ecfcdff --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Target_Up.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Datum_Up.svg b/src/Mod/TechDraw/Symbols/misc/Datum_Up.svg new file mode 100644 index 0000000000..4c5fa8add7 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Datum_Up.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Feature_Left.svg b/src/Mod/TechDraw/Symbols/misc/Feature_Left.svg new file mode 100644 index 0000000000..9156fbf2f7 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Feature_Left.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Feature_Right.svg b/src/Mod/TechDraw/Symbols/misc/Feature_Right.svg new file mode 100644 index 0000000000..f187725551 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Feature_Right.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Feature_Up.svg b/src/Mod/TechDraw/Symbols/misc/Feature_Up.svg new file mode 100644 index 0000000000..2593c15862 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Feature_Up.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Left_Justified_Text_10_Lines.svg b/src/Mod/TechDraw/Symbols/misc/Left_Justified_Text_10_Lines.svg new file mode 100644 index 0000000000..baf82207e2 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Left_Justified_Text_10_Lines.svg @@ -0,0 +1,154 @@ + + + + + + + + image/svg+xml + + + + + + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + diff --git a/src/Mod/TechDraw/Symbols/misc/North.svg b/src/Mod/TechDraw/Symbols/misc/North.svg new file mode 100644 index 0000000000..c9a081a3c7 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/North.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Revision_Triangle.svg b/src/Mod/TechDraw/Symbols/misc/Revision_Triangle.svg new file mode 100644 index 0000000000..cd0c58e12e --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Revision_Triangle.svg @@ -0,0 +1,83 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + B + + diff --git a/src/Mod/TechDraw/Symbols/misc/Right_Justified_Text_10_Lines.svg b/src/Mod/TechDraw/Symbols/misc/Right_Justified_Text_10_Lines.svg new file mode 100644 index 0000000000..b8d4e7678f --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Right_Justified_Text_10_Lines.svg @@ -0,0 +1,168 @@ + + + + + + + + image/svg+xml + + + + + + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + + ?? + + diff --git a/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Long.svg b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Long.svg new file mode 100644 index 0000000000..abf2b6d8a0 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Long.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Medium.svg b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Medium.svg new file mode 100644 index 0000000000..7a07ed7e46 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Medium.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Short.svg b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Short.svg new file mode 100644 index 0000000000..fde4258060 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Short.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/Mod/TechDraw/Symbols/misc/Whiteout_Square.svg b/src/Mod/TechDraw/Symbols/misc/Whiteout_Square.svg new file mode 100644 index 0000000000..58901b06b5 --- /dev/null +++ b/src/Mod/TechDraw/Symbols/misc/Whiteout_Square.svg @@ -0,0 +1,8 @@ + + + + + + + +