Index: skia/animator/SkDrawPath.cpp |
=================================================================== |
--- skia/animator/SkDrawPath.cpp (revision 16859) |
+++ skia/animator/SkDrawPath.cpp (working copy) |
@@ -1,229 +0,0 @@ |
-/* libs/graphics/animator/SkDrawPath.cpp |
-** |
-** Copyright 2006, The Android Open Source Project |
-** |
-** Licensed under the Apache License, Version 2.0 (the "License"); |
-** you may not use this file except in compliance with the License. |
-** You may obtain a copy of the License at |
-** |
-** http://www.apache.org/licenses/LICENSE-2.0 |
-** |
-** Unless required by applicable law or agreed to in writing, software |
-** distributed under the License is distributed on an "AS IS" BASIS, |
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-** See the License for the specific language governing permissions and |
-** limitations under the License. |
-*/ |
- |
-#include "SkDrawPath.h" |
-#include "SkAnimateMaker.h" |
-#include "SkCanvas.h" |
-#include "SkMath.h" |
-#include "SkMatrixParts.h" |
-#include "SkPaint.h" |
-#include "SkPathParts.h" |
- |
-enum SkPath_Properties { |
- SK_PROPERTY(fillType), |
- SK_PROPERTY(length) |
-}; |
- |
-#if SK_USE_CONDENSED_INFO == 0 |
- |
-const SkMemberInfo SkDrawPath::fInfo[] = { |
- SK_MEMBER(d, String), |
- SK_MEMBER_PROPERTY(fillType, FillType), |
- SK_MEMBER_PROPERTY(length, Float) |
-}; |
- |
-#endif |
- |
-DEFINE_GET_MEMBER(SkDrawPath); |
- |
-SkDrawPath::SkDrawPath() |
-{ |
- fParent = NULL; |
- fLength = SK_ScalarNaN; |
- fChildHasID = false; |
- fDirty = false; |
-} |
- |
-SkDrawPath::~SkDrawPath() { |
- for (SkPathPart** part = fParts.begin(); part < fParts.end(); part++) |
- delete *part; |
-} |
- |
-bool SkDrawPath::add(SkAnimateMaker& maker, SkDisplayable* child) { |
- SkASSERT(child && child->isPathPart()); |
- SkPathPart* part = (SkPathPart*) child; |
- *fParts.append() = part; |
- if (part->add()) |
- maker.setErrorCode(SkDisplayXMLParserError::kErrorAddingToPath); |
- fDirty = false; |
- return true; |
-} |
- |
-bool SkDrawPath::childrenNeedDisposing() const { |
- return false; |
-} |
- |
-void SkDrawPath::dirty() { |
- fDirty = true; |
- fLength = SK_ScalarNaN; |
- if (fParent) |
- fParent->dirty(); |
-} |
- |
-bool SkDrawPath::draw(SkAnimateMaker& maker) { |
- SkPath& path = getPath(); |
- SkBoundableAuto boundable(this, maker); |
- maker.fCanvas->drawPath(path, *maker.fPaint); |
- return false; |
-} |
- |
-SkDisplayable* SkDrawPath::getParent() const { |
- return fParent; |
-} |
- |
-#ifdef SK_DUMP_ENABLED |
-void SkDrawPath::dump(SkAnimateMaker* maker) { |
- dumpBase(maker); |
- dumpAttrs(maker); |
- bool closedYet = false; |
- SkDisplayList::fIndent += 4; |
- for(SkPathPart** part = fParts.begin(); part < fParts.end(); part++) { |
- if (closedYet == false) { |
- SkDebugf(">\n"); |
- closedYet = true; |
- } |
- (*part)->dump(maker); |
- } |
- SkDisplayList::fIndent -= 4; |
- if (closedYet) |
- dumpEnd(maker); |
- else |
- SkDebugf("/>\n"); |
-} |
-#endif |
- |
-SkPath& SkDrawPath::getPath() { |
- if (fDirty == false) |
- return fPath; |
- if (d.size() > 0) |
- { |
- parseSVG(); |
- d.reset(); |
- } |
- else |
- { |
- fPath.reset(); |
- for (SkPathPart** part = fParts.begin(); part < fParts.end(); part++) |
- (*part)->add(); |
- } |
- fDirty = false; |
- return fPath; |
-} |
- |
-void SkDrawPath::onEndElement(SkAnimateMaker& ) { |
- if (d.size() > 0) { |
- parseSVG(); |
- d.reset(); |
- fDirty = false; |
- return; |
- } |
- if (fChildHasID == false) { |
- for (SkPathPart** part = fParts.begin(); part < fParts.end(); part++) |
- delete *part; |
- fParts.reset(); |
- fDirty = false; |
- } |
-} |
- |
-bool SkDrawPath::getProperty(int index, SkScriptValue* value) const { |
- switch (index) { |
- case SK_PROPERTY(length): |
- if (SkScalarIsNaN(fLength)) { |
- const SkPath& path = ((SkDrawPath*) this)->getPath(); |
- SkPathMeasure pathMeasure(path, false); |
- fLength = pathMeasure.getLength(); |
- } |
- value->fType = SkType_Float; |
- value->fOperand.fScalar = fLength; |
- break; |
- case SK_PROPERTY(fillType): |
- value->fType = SkType_FillType; |
- value->fOperand.fS32 = (int) fPath.getFillType(); |
- break; |
- default: |
- SkASSERT(0); |
- return false; |
- } |
- return true; |
-} |
- |
-void SkDrawPath::setChildHasID() { |
- fChildHasID = true; |
-} |
- |
-bool SkDrawPath::setParent(SkDisplayable* parent) { |
- fParent = parent; |
- return false; |
-} |
- |
-bool SkDrawPath::setProperty(int index, SkScriptValue& value) |
-{ |
- switch (index) { |
- case SK_PROPERTY(fillType): |
- SkASSERT(value.fType == SkType_FillType); |
- SkASSERT(value.fOperand.fS32 >= SkPath::kWinding_FillType && |
- value.fOperand.fS32 <= SkPath::kEvenOdd_FillType); |
- fPath.setFillType((SkPath::FillType) value.fOperand.fS32); |
- break; |
- default: |
- SkASSERT(0); |
- return false; |
- } |
- return true; |
-} |
- |
-#if SK_USE_CONDENSED_INFO == 0 |
- |
-const SkMemberInfo SkPolyline::fInfo[] = { |
- SK_MEMBER_ARRAY(points, Float) |
-}; |
- |
-#endif |
- |
-DEFINE_GET_MEMBER(SkPolyline); |
- |
-bool SkPolyline::add(SkAnimateMaker& , SkDisplayable*) const { |
- return false; |
-} |
- |
-void SkPolyline::onEndElement(SkAnimateMaker& maker) { |
- INHERITED::onEndElement(maker); |
- if (points.count() <= 0) |
- return; |
- fPath.reset(); |
- fPath.moveTo(points[0], points[1]); |
- int count = points.count(); |
- for (int index = 2; index < count; index += 2) |
- fPath.lineTo(points[index], points[index+1]); |
-} |
- |
- |
-#if SK_USE_CONDENSED_INFO == 0 |
- |
-const SkMemberInfo SkPolygon::fInfo[] = { |
- SK_MEMBER_INHERITED |
-}; |
- |
-#endif |
- |
-DEFINE_GET_MEMBER(SkPolygon); |
- |
-void SkPolygon::onEndElement(SkAnimateMaker& maker) { |
- INHERITED::onEndElement(maker); |
- fPath.close(); |
-} |
- |