summaryrefslogtreecommitdiff
path: root/src/player/FilledVectorNode.cpp
diff options
context:
space:
mode:
authorDimitri John Ledkov <dimitri.ledkov@canonical.com>2014-02-20 16:10:52 +0000
committerDimitri John Ledkov <dimitri.ledkov@canonical.com>2014-02-20 19:15:57 +0000
commitd20f4a64eba38690337ac914a04a113de7caf125 (patch)
tree6828990e93ca5d8847b8cde2f2febb6566b0d53f /src/player/FilledVectorNode.cpp
parent28161e9209f21be1a600f637565ecede94855a36 (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.cpp75
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);
}