diff options
author | Dimitri John Ledkov <dimitri.ledkov@canonical.com> | 2014-02-20 16:10:52 +0000 |
---|---|---|
committer | Dimitri John Ledkov <dimitri.ledkov@canonical.com> | 2014-02-20 19:15:57 +0000 |
commit | d20f4a64eba38690337ac914a04a113de7caf125 (patch) | |
tree | 6828990e93ca5d8847b8cde2f2febb6566b0d53f /src/player/FilledVectorNode.cpp | |
parent | 28161e9209f21be1a600f637565ecede94855a36 (diff) |
New upstream release. Closes: #721047debian/1.8.0-1
Drop all patches, none are needed with this new upstream release.
Port to dh.
Specify foreign in configure.ac.
Diffstat (limited to 'src/player/FilledVectorNode.cpp')
-rw-r--r-- | src/player/FilledVectorNode.cpp | 75 |
1 files changed, 38 insertions, 37 deletions
diff --git a/src/player/FilledVectorNode.cpp b/src/player/FilledVectorNode.cpp index 69d833b..a804958 100644 --- a/src/player/FilledVectorNode.cpp +++ b/src/player/FilledVectorNode.cpp @@ -1,6 +1,6 @@ // // libavg - Media Playback Engine. -// Copyright (C) 2003-2011 Ulrich von Zadow +// Copyright (C) 2003-2014 Ulrich von Zadow // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ #include "FilledVectorNode.h" -#include "NodeDefinition.h" +#include "TypeDefinition.h" #include "Image.h" #include "DivNode.h" @@ -34,21 +34,21 @@ using namespace boost; namespace avg { -NodeDefinition FilledVectorNode::createDefinition() +void FilledVectorNode::registerType() { - return NodeDefinition("filledvector") - .extendDefinition(VectorNode::createDefinition()) + TypeDefinition def = TypeDefinition("filledvectornode", "vectornode") .addArg(Arg<UTF8String>("filltexhref", "", false, offsetof(FilledVectorNode, m_FillTexHRef))) - .addArg(Arg<double>("fillopacity", 0, false, + .addArg(Arg<float>("fillopacity", 0, false, offsetof(FilledVectorNode, m_FillOpacity))) - .addArg(Arg<string>("fillcolor", "FFFFFF", false, + .addArg(Arg<UTF8String>("fillcolor", "FFFFFF", false, offsetof(FilledVectorNode, m_sFillColorName))) - .addArg(Arg<DPoint>("filltexcoord1", DPoint(0,0), false, + .addArg(Arg<glm::vec2>("filltexcoord1", glm::vec2(0,0), false, offsetof(FilledVectorNode, m_FillTexCoord1))) - .addArg(Arg<DPoint>("filltexcoord2", DPoint(1,1), false, + .addArg(Arg<glm::vec2>("filltexcoord2", glm::vec2(1,1), false, offsetof(FilledVectorNode, m_FillTexCoord2))) ; + TypeRegistry::get()->registerType(def); } FilledVectorNode::FilledVectorNode(const ArgList& args) @@ -57,7 +57,7 @@ FilledVectorNode::FilledVectorNode(const ArgList& args) { m_FillTexHRef = args.getArgVal<UTF8String>("filltexhref"); setFillTexHRef(m_FillTexHRef); - m_sFillColorName = args.getArgVal<string>("fillcolor"); + m_sFillColorName = args.getArgVal<UTF8String>("fillcolor"); m_FillColor = colorStringToColor(m_sFillColorName); } @@ -112,70 +112,71 @@ void FilledVectorNode::setFillBitmap(BitmapPtr pBmp) setDrawNeeded(); } -const DPoint& FilledVectorNode::getFillTexCoord1() const +const glm::vec2& FilledVectorNode::getFillTexCoord1() const { return m_FillTexCoord1; } -void FilledVectorNode::setFillTexCoord1(const DPoint& pt) +void FilledVectorNode::setFillTexCoord1(const glm::vec2& pt) { m_FillTexCoord1 = pt; setDrawNeeded(); } -const DPoint& FilledVectorNode::getFillTexCoord2() const +const glm::vec2& FilledVectorNode::getFillTexCoord2() const { return m_FillTexCoord2; } -void FilledVectorNode::setFillTexCoord2(const DPoint& pt) +void FilledVectorNode::setFillTexCoord2(const glm::vec2& pt) { m_FillTexCoord2 = pt; setDrawNeeded(); } -double FilledVectorNode::getFillOpacity() const +float FilledVectorNode::getFillOpacity() const { return m_FillOpacity; } -void FilledVectorNode::setFillOpacity(double opacity) +void FilledVectorNode::setFillOpacity(float opacity) { m_FillOpacity = opacity; setDrawNeeded(); } -void FilledVectorNode::preRender() +void FilledVectorNode::preRender(const VertexArrayPtr& pVA, bool bIsParentActive, + float parentEffectiveOpacity) { - Node::preRender(); - double curOpacity = getParent()->getEffectiveOpacity()*m_FillOpacity; - VertexArrayPtr pFillVA; - pFillVA = m_pFillShape->getVertexArray(); + Node::preRender(pVA, bIsParentActive, parentEffectiveOpacity); + float curOpacity = parentEffectiveOpacity*m_FillOpacity; + + VertexDataPtr pShapeVD = m_pFillShape->getVertexData(); if (isDrawNeeded() || curOpacity != m_OldOpacity) { - pFillVA->reset(); + pShapeVD->reset(); Pixel32 color = getFillColorVal(); - color.setA((unsigned char)(curOpacity*255)); - calcFillVertexes(pFillVA, color); - pFillVA->update(); + calcFillVertexes(pShapeVD, color); m_OldOpacity = curOpacity; } - VectorNode::preRender(); + if (isVisible()) { + m_pFillShape->setVertexArray(pVA); + } + VectorNode::preRender(pVA, bIsParentActive, parentEffectiveOpacity); } static ProfilingZoneID RenderProfilingZone("FilledVectorNode::render"); -void FilledVectorNode::render(const DRect& rect) +void FilledVectorNode::render() { ScopeTimer Timer(RenderProfilingZone); - double curOpacity = getParent()->getEffectiveOpacity()*m_FillOpacity; + float curOpacity = getParent()->getEffectiveOpacity()*m_FillOpacity; if (curOpacity > 0.01) { - glColor4d(1.0, 1.0, 1.0, curOpacity); - m_pFillShape->draw(); + m_pFillShape->draw(getTransform(), curOpacity); } - VectorNode::render(rect); + VectorNode::render(); } -void FilledVectorNode::setFillColor(const string& sColor) +void FilledVectorNode::setFillColor(const UTF8String& sColor) { if (m_sFillColorName != sColor) { m_sFillColorName = sColor; @@ -184,7 +185,7 @@ void FilledVectorNode::setFillColor(const string& sColor) } } -const string& FilledVectorNode::getFillColor() const +const UTF8String& FilledVectorNode::getFillColor() const { return m_sFillColorName; } @@ -194,10 +195,10 @@ Pixel32 FilledVectorNode::getFillColorVal() const return m_FillColor; } -DPoint FilledVectorNode::calcFillTexCoord(const DPoint& pt, const DPoint& minPt, - const DPoint& maxPt) +glm::vec2 FilledVectorNode::calcFillTexCoord(const glm::vec2& pt, const glm::vec2& minPt, + const glm::vec2& maxPt) { - DPoint texPt; + glm::vec2 texPt; texPt.x = (m_FillTexCoord2.x-m_FillTexCoord1.x)*(pt.x-minPt.x)/(maxPt.x-minPt.x) +m_FillTexCoord1.x; texPt.y = (m_FillTexCoord2.y-m_FillTexCoord1.y)*(pt.y-minPt.y)/(maxPt.y-minPt.y) @@ -207,7 +208,7 @@ DPoint FilledVectorNode::calcFillTexCoord(const DPoint& pt, const DPoint& minPt, bool FilledVectorNode::isVisible() const { - return getActive() && (getEffectiveOpacity() > 0.01 || + return getEffectiveActive() && (getEffectiveOpacity() > 0.01 || getParent()->getEffectiveOpacity()*m_FillOpacity > 0.01); } |