bunch of optimizations

master
Eduardo Bart 12 years ago
parent 3cd31bcd1e
commit b4261a8c7b

@ -136,6 +136,7 @@ SET(framework_SOURCES ${framework_SOURCES}
# framework util
${CMAKE_CURRENT_LIST_DIR}/util/utf8.cpp
${CMAKE_CURRENT_LIST_DIR}/math/color.cpp
# framework core
${CMAKE_CURRENT_LIST_DIR}/core/logger.cpp

@ -30,30 +30,7 @@
namespace Fw
{
constexpr double pi = 3.14159265;
// NOTE: AABBGGRR order
enum GlobalColor : uint32 {
alpha = 0x00000000,
white = 0xffffffff,
black = 0xff000000,
red = 0xff0000ff,
darkRed = 0xff000080,
green = 0xff00ff00,
darkGreen = 0xff008000,
blue = 0xffff0000,
darkBlue = 0xff800000,
pink = 0xffff00ff,
darkPink = 0xff800080,
yellow = 0xff00ffff,
darkYellow = 0xff008080,
teal = 0xffffff00,
darkTeal = 0xff808000,
gray = 0xffa0a0a0,
darkGray = 0xff808080,
lightGray = 0xffc0c0c0,
orange = 0xffff8c00
};
constexpr float pi = 3.14159265;
enum Key : uint8 {
KeyUnknown = 0,

@ -37,6 +37,7 @@ ticks_t Clock::updateTicks()
{
auto timeNow = std::chrono::high_resolution_clock::now();
m_currentTicks = std::chrono::duration_cast<std::chrono::milliseconds>(timeNow - m_startupTime).count();
m_currentTime = m_currentTicks/1000.0f;
return m_currentTicks;
}

@ -34,15 +34,16 @@ public:
void sleep(int ms);
ticks_t ticks() { return m_currentTicks; }
ticks_t ticksElapsed(long prevTicks) { return ticks() - prevTicks; }
ticks_t ticksFor(int delay) { return ticks() + delay; }
ticks_t ticksElapsed(long prevTicks) { return m_currentTicks - prevTicks; }
ticks_t ticksFor(int delay) { return m_currentTicks + delay; }
double time() { return m_currentTicks/1000.0; }
double timeElapsed(double prevTime) { return time() - prevTime; }
double timeFor(double delay) { return time() + delay; }
float time() { return m_currentTime; }
float timeElapsed(float prevTime) { return m_currentTime - prevTime; }
float timeFor(float delay) { return m_currentTime + delay; }
private:
ticks_t m_currentTicks;
float m_currentTime;
std::chrono::system_clock::time_point m_startupTime;
};

@ -35,7 +35,7 @@ public:
ticks_t startTicks() { return m_startTicks; }
ticks_t ticksElapsed();
double timeElapsed() { return ticksElapsed()/1000.0; }
float timeElapsed() { return ticksElapsed()/1000.0f; }
bool running() { return !m_stopped; }

@ -100,7 +100,7 @@ void CoordsBuffer::cacheVertexArrays()
m_vertices.clear();
m_textureCoords.clear();
for(int i=0;i<numDestRects;++i) {
for(register int i=0;i<numDestRects;++i) {
m_vertices.addRect(m_destRects[i]);
if(numSrcRects == numDestRects)
m_textureCoords.addRect(m_srcRects[i]);

@ -38,13 +38,13 @@ public:
/// Simple text render starting at startPos
void renderText(const std::string& text,
const Point& startPos,
const Color& color = Fw::white);
const Color& color = Color::white);
/// Advanced text render delimited by a screen region and alignment
void renderText(const std::string& text,
const Rect& screenCoords,
Fw::AlignmentFlag align = Fw::AlignTopLeft,
const Color& color = Fw::white);
const Color& color = Color::white);
/// Calculate glyphs positions to use on render, also calculates textBoxSize if wanted
const std::vector<Point>& calculateGlyphsPositions(const std::string& text,

@ -28,7 +28,7 @@ uint FrameBuffer::boundFbo = 0;
FrameBuffer::FrameBuffer()
{
m_clearColor = Fw::alpha;
m_clearColor = Color::alpha;
glGenFramebuffers(1, &m_fbo);
if(!m_fbo)
@ -37,7 +37,7 @@ FrameBuffer::FrameBuffer()
FrameBuffer::FrameBuffer(const Size& size)
{
m_clearColor = Fw::alpha;
m_clearColor = Color::alpha;
glGenFramebuffers(1, &m_fbo);
if(!m_fbo)

@ -32,7 +32,7 @@ Painter g_painter;
void Painter::init()
{
setColor(Fw::white);
setColor(Color::white);
setOpacity(1.0f);
setCompositionMode(CompositionMode_Normal);
@ -67,16 +67,11 @@ void Painter::drawProgram(const PainterShaderProgramPtr& program, CoordsBuffer&
void Painter::drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture)
{
PainterShaderProgramPtr program = m_customProgram ? m_customProgram : m_drawTexturedProgram;
PainterShaderProgramPtr& program = m_customProgram ? m_customProgram : m_drawTexturedProgram;
program->setTexture(texture);
drawProgram(program, coordsBuffer);
}
void Painter::drawTexturedRect(const Rect& dest, const TexturePtr& texture)
{
drawTexturedRect(dest, texture, Rect(Point(0,0), texture->getSize()));
}
void Painter::drawTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src)
{
if(dest.isEmpty() || src.isEmpty() || !texture->getId())
@ -153,7 +148,7 @@ void Painter::saveAndResetState()
m_oldCompostionMode = m_compostionMode;
releaseCustomProgram();
setColor(Fw::white);
setColor(Color::white);
setOpacity(1);
setCompositionMode(CompositionMode_Normal);
}
@ -166,7 +161,7 @@ void Painter::restoreSavedState()
setCompositionMode(m_oldCompostionMode);
m_oldCustomProgram = nullptr;
m_oldColor = Fw::white;
m_oldColor = Color::white;
m_oldOpacity = 1;
m_oldCompostionMode = CompositionMode_Normal;
}

@ -27,6 +27,7 @@
#include <framework/util/databuffer.h>
#include "coordsbuffer.h"
#include "paintershaderprogram.h"
#include "texture.h"
class Painter
{
@ -44,8 +45,8 @@ public:
void drawProgram(const PainterShaderProgramPtr& program, CoordsBuffer& coordsBuffer, PainterShaderProgram::DrawMode drawMode = PainterShaderProgram::Triangles);
void drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture);
void drawTexturedRect(const Rect& dest, const TexturePtr& texture);
void drawTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);
void drawTexturedRect(const Rect& dest, const TexturePtr& texture) { drawTexturedRect(dest, texture, Rect(Point(0,0), texture->getSize())); }
void drawRepeatedTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);
void drawFilledRect(const Rect& dest);
void drawBoundingRect(const Rect& dest, int innerLineWidth = 1);

@ -29,6 +29,7 @@
PainterShaderProgram::PainterShaderProgram()
{
m_textures.fill(std::make_tuple(-1, 0));
m_startTime = g_clock.time();
}
bool PainterShaderProgram::link()
@ -44,7 +45,7 @@ bool PainterShaderProgram::link()
bindUniformLocation(TIME_UNIFORM, "time");
return true;
}
m_startTimer.restart();
m_startTime = g_clock.time();
return false;
}
@ -94,7 +95,7 @@ void PainterShaderProgram::draw(const CoordsBuffer& coordsBuffer, DrawMode drawM
{
bind();
setUniformValue(TIME_UNIFORM, (float)m_startTimer.timeElapsed());
setUniformValue(TIME_UNIFORM, g_clock.timeElapsed(m_startTime));
int numVertices = coordsBuffer.getVertexCount();
if(numVertices == 0)

@ -58,7 +58,7 @@ public:
private:
DrawMode m_drawMode;
Timer m_startTimer;
float m_startTime;
std::array<std::tuple<int, int>, 4> m_textures;
};

@ -56,7 +56,7 @@ void Particle::render()
}
}
void Particle::update(double elapsedTime)
void Particle::update(float elapsedTime)
{
// check if finished
if(m_duration >= 0 && m_elapsedTime >= m_duration) {
@ -71,7 +71,7 @@ void Particle::update(double elapsedTime)
m_elapsedTime += elapsedTime;
}
void Particle::updatePosition(double elapsedTime)
void Particle::updatePosition(float elapsedTime)
{
if(m_ignorePhysicsAfter < 0 || m_elapsedTime < m_ignorePhysicsAfter ) {
// update position

@ -32,7 +32,7 @@ public:
Particle(const Point& pos, const Size& startSize, const Size& finalSize, const PointF& velocity, const PointF& acceleration, float duration, float ignorePhysicsAfter, const std::vector<Color>& colors, const std::vector<float>& colorsStops, Painter::CompositionMode compositionMode = Painter::CompositionMode_Normal, TexturePtr texture = nullptr);
void render();
void update(double elapsedTime);
void update(float elapsedTime);
bool hasFinished() { return m_finished; }
@ -44,7 +44,7 @@ public:
private:
void updateColor();
void updatePosition(double elapsedTime);
void updatePosition(float elapsedTime);
void updateSize();
Color m_color;
@ -58,7 +58,7 @@ private:
Rect m_rect;
Painter::CompositionMode m_compositionMode;
float m_duration, m_ignorePhysicsAfter;
double m_elapsedTime;
float m_elapsedTime;
bool m_finished;
};

@ -33,7 +33,7 @@ ParticleAffector::ParticleAffector()
m_elapsedTime = 0;
}
void ParticleAffector::update(double elapsedTime)
void ParticleAffector::update(float elapsedTime)
{
if(m_duration >= 0 && m_elapsedTime >= m_duration + m_delay) {
m_finished = true;
@ -94,7 +94,7 @@ bool GravityAffector::load(const OTMLNodePtr& node)
return true;
}
void GravityAffector::updateParticle(const ParticlePtr& particle, double elapsedTime)
void GravityAffector::updateParticle(const ParticlePtr& particle, float elapsedTime)
{
if(!m_active)
return;
@ -126,7 +126,7 @@ bool AttractionAffector::load(const OTMLNodePtr& node)
return true;
}
void AttractionAffector::updateParticle(const ParticlePtr& particle, double elapsedTime)
void AttractionAffector::updateParticle(const ParticlePtr& particle, float elapsedTime)
{
if(!m_active)
return;

@ -30,22 +30,22 @@ class ParticleAffector {
public:
ParticleAffector();
void update(double elapsedTime);
void update(float elapsedTime);
virtual bool load(const OTMLNodePtr& node);
virtual void updateParticle(const ParticlePtr&, double) {}
virtual void updateParticle(const ParticlePtr&, float) {}
bool hasFinished() { return m_finished; }
protected:
bool m_finished, m_active;
float m_delay, m_duration;
double m_elapsedTime;
float m_elapsedTime;
};
class GravityAffector : public ParticleAffector {
public:
bool load(const OTMLNodePtr& node);
void updateParticle(const ParticlePtr& particle, double elapsedTime);
void updateParticle(const ParticlePtr& particle, float elapsedTime);
private:
float m_angle, m_gravity;
@ -54,7 +54,7 @@ private:
class AttractionAffector : public ParticleAffector {
public:
bool load(const OTMLNodePtr& node);
void updateParticle(const ParticlePtr& particle, double elapsedTime);
void updateParticle(const ParticlePtr& particle, float elapsedTime);
private:
Point m_position;

@ -180,7 +180,7 @@ bool ParticleEmitter::load(const OTMLNodePtr& node)
return true;
}
void ParticleEmitter::update(double elapsedTime)
void ParticleEmitter::update(float elapsedTime)
{
// check if finished
if(m_duration >= 0 && m_elapsedTime >= m_duration + m_delay) {

@ -36,7 +36,7 @@ public:
bool load(const OTMLNodePtr& node);
void update(double elapsedTime);
void update(float elapsedTime);
bool hasFinished() { return m_finished; }
@ -46,7 +46,7 @@ private:
// self related
Point m_position;
float m_duration, m_delay;
double m_elapsedTime;
float m_elapsedTime;
bool m_finished, m_active;
float m_burstRate;
int m_currentBurst, m_burstCount;

@ -70,7 +70,7 @@ void ParticleSystem::render()
void ParticleSystem::update()
{
static const double delay = 0.0166; // 60 updates/s
static const float delay = 0.0166; // 60 updates/s
// check if finished
if(m_particles.empty() && m_emitters.empty()) {
@ -79,7 +79,7 @@ void ParticleSystem::update()
}
// check time
double elapsedTime = g_clock.timeElapsed(m_lastUpdateTime);
float elapsedTime = g_clock.timeElapsed(m_lastUpdateTime);
if(elapsedTime < delay)
return;
m_lastUpdateTime = g_clock.time() - std::fmod(elapsedTime, delay);

@ -42,7 +42,7 @@ public:
private:
bool m_finished;
double m_lastUpdateTime;
float m_lastUpdateTime;
std::list<ParticlePtr> m_particles;
std::list<ParticleEmitterPtr> m_emitters;
std::list<ParticleAffectorPtr> m_affectors;

@ -116,7 +116,7 @@ bool luavalue_cast(int index, Color& color)
} else if(g_lua.isString()) {
return Fw::cast(g_lua.toString(index), color);
} else if(g_lua.isNil()) {
color = Fw::white;
color = Color::white;
return true;
}
return false;

@ -0,0 +1,44 @@
/*
* Copyright (c) 2010-2012 OTClient <https://github.com/edubart/otclient>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "color.h"
// NOTE: AABBGGRR order
const Color Color::alpha = 0x00000000;
const Color Color::white = 0xffffffff;
const Color Color::black = 0xff000000;
const Color Color::red = 0xff0000ff;
const Color Color::darkRed = 0xff000080;
const Color Color::green = 0xff00ff00;
const Color Color::darkGreen = 0xff008000;
const Color Color::blue = 0xffff0000;
const Color Color::darkBlue = 0xff800000;
const Color Color::pink = 0xffff00ff;
const Color Color::darkPink = 0xff800080;
const Color Color::yellow = 0xff00ffff;
const Color Color::darkYellow = 0xff008080;
const Color Color::teal = 0xffffff00;
const Color Color::darkTeal = 0xff808000;
const Color Color::gray = 0xffa0a0a0;
const Color Color::darkGray = 0xff808080;
const Color Color::lightGray = 0xffc0c0c0;
const Color Color::orange = 0xffff8c00;

@ -76,6 +76,26 @@ public:
return Color(r, g, b);
}
static const Color alpha;
static const Color white;
static const Color black;
static const Color red;
static const Color darkRed;
static const Color green;
static const Color darkGreen;
static const Color blue;
static const Color darkBlue;
static const Color pink;
static const Color darkPink;
static const Color yellow;
static const Color darkYellow;
static const Color teal;
static const Color darkTeal;
static const Color gray;
static const Color darkGray;
static const Color lightGray;
static const Color orange;
private:
float m_r;
float m_g;
@ -118,43 +138,43 @@ inline std::istream& operator>>(std::istream& in, Color& color)
in >> tmp;
if(tmp == "alpha") {
color = Fw::alpha;
color = Color::alpha;
} else if(tmp == "black") {
color = Fw::black;
color = Color::black;
} else if(tmp == "white") {
color = Fw::white;
color = Color::white;
} else if(tmp == "red") {
color = Fw::red;
color = Color::red;
} else if(tmp == "darkRed") {
color = Fw::darkRed;
color = Color::darkRed;
} else if(tmp == "green") {
color = Fw::green;
color = Color::green;
} else if(tmp == "darkGreen") {
color = Fw::darkGreen;
color = Color::darkGreen;
} else if(tmp == "blue") {
color = Fw::blue;
color = Color::blue;
} else if(tmp == "darkBlue") {
color = Fw::darkBlue;
color = Color::darkBlue;
} else if(tmp == "pink") {
color = Fw::pink;
color = Color::pink;
} else if(tmp == "darkPink") {
color = Fw::darkPink;
color = Color::darkPink;
} else if(tmp == "yellow") {
color = Fw::yellow;
color = Color::yellow;
} else if(tmp == "darkYellow") {
color = Fw::darkYellow;
color = Color::darkYellow;
} else if(tmp == "teal") {
color = Fw::teal;
color = Color::teal;
} else if(tmp == "darkTeal") {
color = Fw::darkTeal;
color = Color::darkTeal;
} else if(tmp == "gray") {
color = Fw::gray;
color = Color::gray;
} else if(tmp == "darkGray") {
color = Fw::darkGray;
color = Color::darkGray;
} else if(tmp == "lightGray") {
color = Fw::lightGray;
color = Color::lightGray;
} else if(tmp == "orange") {
color = Fw::orange;
color = Color::orange;
} else {
in.seekg(-tmp.length(), ios_base::cur);
}

@ -646,9 +646,9 @@ void WIN32Window::setMouseCursor(const std::string& file, const Point& hotSpot)
uchar b = apng.pdata[i*4+2];
uchar a = apng.pdata[i*4+3];
Color color(r,g,b,a);
if(color == Fw::white) { //white
if(color == Color::white) { //white
HSB_BIT_SET(xorMask, i);
} else if(color == Fw::alpha) { //alpha
} else if(color == Color::alpha) { //alpha
HSB_BIT_SET(andMask, i);
} //otherwise black
}

@ -864,9 +864,9 @@ void X11Window::setMouseCursor(const std::string& file, const Point& hotSpot)
uchar b = apng.pdata[i*4+2];
uchar a = apng.pdata[i*4+3];
Color color(r,g,b,a);
if(color == Fw::white) { //background
if(color == Color::white) { //background
LSB_BIT_SET(maskBits, i);
} else if(color == Fw::black) { //foreground
} else if(color == Color::black) { //foreground
LSB_BIT_SET(mapBits, i);
LSB_BIT_SET(maskBits, i);
} //otherwise alpha

@ -47,7 +47,7 @@ void UIFrameCounter::draw()
}
m_frameCount++;
m_font->renderText(m_fpsText, m_rect, m_align, Fw::white);
m_font->renderText(m_fpsText, m_rect, m_align, Color::white);
}
void UIFrameCounter::onStyleApply(const std::string& styleName, const OTMLNodePtr& styleNode)

@ -60,7 +60,7 @@ void UIWidget::draw()
void UIWidget::drawSelf()
{
// draw style components in order
if(m_backgroundColor.a() > 0) {
if(m_backgroundColor.aF() != 0.0f) {
Rect backgroundDestRect = m_rect;
backgroundDestRect.expand(-m_borderWidth.top, -m_borderWidth.right, -m_borderWidth.bottom, -m_borderWidth.left);
drawBackground(m_rect);
@ -92,10 +92,10 @@ void UIWidget::drawChildren()
// debug draw box
if(g_ui.isDrawingDebugBoxes()) {
g_painter.setColor(Fw::green);
g_painter.setColor(Color::green);
g_painter.drawBoundingRect(child->getRect());
}
//g_fonts.getDefaultFont()->renderText(child->getId(), child->getPosition() + Point(2, 0), Fw::red);
//g_fonts.getDefaultFont()->renderText(child->getId(), child->getPosition() + Point(2, 0), Color::red);
g_painter.setOpacity(oldOpacity);
}

@ -33,10 +33,10 @@
void UIWidget::initBaseStyle()
{
m_backgroundColor = Fw::alpha;
m_borderColor.set(Fw::black);
m_iconColor = Fw::white;
m_color = Fw::white;
m_backgroundColor = Color::alpha;
m_borderColor.set(Color::black);
m_iconColor = Color::white;
m_color = Color::white;
m_opacity = 1.0f;
// generate an unique id, this is need because anchored layouts find widgets by id
@ -312,7 +312,7 @@ void UIWidget::parseBaseStyle(const OTMLNodePtr& styleNode)
void UIWidget::drawBackground(const Rect& screenCoords)
{
if(m_backgroundColor.a() > 0) {
if(m_backgroundColor.aF() != 0.0f) {
Rect drawRect = screenCoords;
drawRect.translate(m_backgroundRect.topLeft());
if(m_backgroundRect.isValid())
@ -325,28 +325,28 @@ void UIWidget::drawBackground(const Rect& screenCoords)
void UIWidget::drawBorder(const Rect& screenCoords)
{
// top
if(m_borderWidth.top > 0 && m_borderColor.top.a() > 0) {
if(m_borderWidth.top > 0 && m_borderColor.top.aF() != 0.0f) {
g_painter.setColor(m_borderColor.top);
Rect borderRect(screenCoords.topLeft(), screenCoords.width(), m_borderWidth.top);
g_painter.drawFilledRect(borderRect);
}
// right
if(m_borderWidth.right > 0 && m_borderColor.right.a() > 0) {
if(m_borderWidth.right > 0 && m_borderColor.right.aF() != 0.0f) {
g_painter.setColor(m_borderColor.right);
Rect borderRect(screenCoords.topRight() - Point(m_borderWidth.right - 1, 0), m_borderWidth.right, screenCoords.height());
g_painter.drawFilledRect(borderRect);
}
// bottom
if(m_borderWidth.bottom > 0 && m_borderColor.bottom.a() > 0) {
if(m_borderWidth.bottom > 0 && m_borderColor.bottom.aF() != 0.0f) {
g_painter.setColor(m_borderColor.bottom);
Rect borderRect(screenCoords.bottomLeft() - Point(0, m_borderWidth.bottom - 1), screenCoords.width(), m_borderWidth.bottom);
g_painter.drawFilledRect(borderRect);
}
// left
if(m_borderWidth.left > 0 && m_borderColor.left.a() > 0) {
if(m_borderWidth.left > 0 && m_borderColor.left.aF() != 0.0f) {
g_painter.setColor(m_borderColor.left);
Rect borderRect(screenCoords.topLeft(), m_borderWidth.left, screenCoords.height());
@ -356,7 +356,7 @@ void UIWidget::drawBorder(const Rect& screenCoords)
void UIWidget::drawIcon(const Rect& screenCoords)
{
if(m_icon && m_iconColor.a() > 0) {
if(m_icon && m_iconColor.aF() != 0.0f) {
Rect drawRect;
if(m_iconRect.isValid()) {
drawRect = screenCoords;

@ -70,7 +70,7 @@ void UIWidget::parseImageStyle(const OTMLNodePtr& styleNode)
void UIWidget::drawImage(const Rect& screenCoords)
{
if(!m_imageTexture || m_imageColor.a() == 0 || !screenCoords.isValid())
if(!m_imageTexture || m_imageColor.aF() == 0.0f || !screenCoords.isValid())
return;
// cache vertex buffers

@ -48,7 +48,7 @@ void UIWidget::parseTextStyle(const OTMLNodePtr& styleNode)
void UIWidget::drawText(const Rect& screenCoords)
{
if(m_text.length() == 0 || m_color.a() == 0)
if(m_text.length() == 0 || m_color.aF() == 0.0f)
return;
#if 0
@ -66,7 +66,7 @@ void UIWidget::drawText(const Rect& screenCoords)
virtualTextRect.translate(m_textOffset);
g_painter.saveAndResetState();
g_painter.setCompositionMode(Painter::CompositionMode_DestBlending);
m_font->renderText(m_text, virtualTextRect, m_textAlign, Fw::white);
m_font->renderText(m_text, virtualTextRect, m_textAlign, Color::white);
g_painter.restoreSavedState();
m_textFramebuffer->release();

@ -86,7 +86,7 @@ void Creature::draw(const Point& dest, float scaleFactor, bool animate)
void Creature::internalDrawOutfit(const Point& dest, float scaleFactor, bool animateWalk, bool animateIdle, Otc::Direction direction)
{
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
if(!outfitProgram) {
outfitProgram = PainterShaderProgramPtr(new PainterShaderProgram);
outfitProgram->addShaderFromSourceCode(Shader::Vertex, glslMainWithTexCoordsVertexShader + glslPositionOnlyVertexShader);
@ -225,7 +225,7 @@ void Creature::drawInformation(const Point& point, bool useGray, const Rect& par
healthRect.setWidth((m_healthPercent / 100.0) * 25);
// draw
g_painter.setColor(Fw::black);
g_painter.setColor(Color::black);
g_painter.drawFilledRect(backgroundRect);
g_painter.setColor(fillColor);
@ -235,15 +235,15 @@ void Creature::drawInformation(const Point& point, bool useGray, const Rect& par
m_informationFont->renderText(m_name, textRect, Fw::AlignTopCenter, fillColor);
if(m_skull != Otc::SkullNone && m_skullTexture) {
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
g_painter.drawTexturedRect(Rect(point.x + 12, point.y + 5, m_skullTexture->getSize()), m_skullTexture);
}
if(m_shield != Otc::ShieldNone && m_shieldTexture && m_showShieldTexture) {
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
g_painter.drawTexturedRect(Rect(point.x, point.y + 5, m_shieldTexture->getSize()), m_shieldTexture);
}
if(m_emblem != Otc::EmblemNone && m_emblemTexture) {
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
g_painter.drawTexturedRect(Rect(point.x + 12, point.y + 16, m_emblemTexture->getSize()), m_emblemTexture);
}
}
@ -431,7 +431,7 @@ void Creature::setName(const std::string& name)
void Creature::setHealthPercent(uint8 healthPercent)
{
m_informationColor = Fw::black;
m_informationColor = Color::black;
if(healthPercent > 92) {
m_informationColor.setGreen(188);

@ -887,7 +887,7 @@ void Game::setAttackingCreature(const CreaturePtr& creature)
}
if(creature) {
creature->showStaticSquare(Fw::red);
creature->showStaticSquare(Color::red);
m_attackingCreature = creature;
}
@ -902,7 +902,7 @@ void Game::setFollowingCreature(const CreaturePtr& creature)
}
if(creature) {
creature->showStaticSquare(Fw::green);
creature->showStaticSquare(Color::green);
m_followingCreature = creature;
}

@ -46,7 +46,7 @@ MapView::MapView()
std::min(g_graphics.getMaxTextureSize(), (int)DEFAULT_FRAMBUFFER_HEIGHT));
m_framebuffer = FrameBufferPtr(new FrameBuffer(frameBufferSize));
m_framebuffer->setClearColor(Fw::black);
m_framebuffer->setClearColor(Color::black);
setVisibleDimension(Size(15, 11));
m_shaderProgram = PainterShaderProgramPtr(new PainterShaderProgram);
@ -106,7 +106,7 @@ void MapView::draw(const Rect& rect)
}
g_painter.setCustomProgram(m_shaderProgram);
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
Point drawOffset = ((m_drawDimension - m_visibleDimension - Size(1,1)).toPoint()/2) * m_tileSize;
if(m_followingCreature)
@ -175,7 +175,7 @@ void MapView::draw(const Rect& rect)
Rect hRect(0, 0, 10, 2);
vRect.moveCenter(rect.center());
hRect.moveCenter(rect.center());
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
g_painter.drawFilledRect(vRect);
g_painter.drawFilledRect(hRect);
}

@ -80,7 +80,7 @@ void Thing::internalDraw(const Point& dest, float scaleFactor, int w, int h, int
int spriteId = getSpriteId(w, h, layer, xPattern, yPattern, zPattern, animationPhase);
if(spriteId) {
Rect drawRect(dest - getDisplacement()*scaleFactor, Size(scaledSize, scaledSize));
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
g_painter.drawTexturedRect(drawRect, g_sprites.getSpriteTexture(spriteId));
}
}

@ -29,7 +29,7 @@ void UICreature::draw()
drawSelf();
if(m_creature) {
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
Rect drawRect = getChildrenRect();
m_creature->drawOutfit(drawRect, !m_fixedCreatureSize);
}

@ -37,7 +37,7 @@ void UIItem::draw()
if(m_item) {
Point topLeft = m_rect.bottomRight() - Point(32, 32) + Point(m_padding.left, m_padding.top);
g_painter.setColor(Fw::white);
g_painter.setColor(Color::white);
m_item->draw(topLeft, 1, true);
if(m_font && m_item->isStackable() && m_item->getCount() > 1) {

@ -45,7 +45,7 @@ void UIMap::draw()
drawSelf();
// draw map border
g_painter.setColor(Fw::black);
g_painter.setColor(Color::black);
g_painter.drawBoundingRect(m_mapRect.expanded(1));
m_mapView->draw(m_mapRect);

Loading…
Cancel
Save