ResidualVM logo ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki curved edge

transform_tools.h

Go to the documentation of this file.
00001 /* ScummVM - Graphic Adventure Engine
00002  *
00003  * ScummVM is the legal property of its developers, whose names
00004  * are too numerous to list here. Please refer to the COPYRIGHT
00005  * file distributed with this source distribution.
00006  *
00007  * This program is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU General Public License
00009  * as published by the Free Software Foundation; either version 2
00010  * of the License, or (at your option) any later version.
00011  *
00012  * This program is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00020  *
00021  */
00022 
00023 #ifndef GRAPHICS_TRANSFORM_TOOLS_H
00024 #define GRAPHICS_TRANSFORM_TOOLS_H
00025 
00026 #include "common/rect.h"
00027 #include "graphics/transform_struct.h"
00028 
00029 namespace Graphics {
00030 
00031     static const float kEpsilon = 0.00001f;  // arbitrarily taken number
00032 
00033     struct FloatPoint {
00034         float x;
00035         float y;
00036         FloatPoint() : x(0), y(0) {}
00037         FloatPoint(float x1, float y1) : x(x1), y(y1) {}
00038         FloatPoint(const Common::Point p) : x(p.x), y(p.y) {}
00039         bool operator==(const FloatPoint &p) const { return fabs(x - p.x) < kEpsilon && fabs(y - p.y) < kEpsilon; }
00040         bool operator!=(const FloatPoint  &p) const { return fabs(x - p.x) > kEpsilon || fabs(y - p.y) > kEpsilon; }
00041         FloatPoint operator+(const FloatPoint &delta) const { return FloatPoint (x + delta.x, y + delta.y);     }
00042         FloatPoint operator-(const FloatPoint &delta) const { return FloatPoint (x - delta.x, y - delta.y);     }
00043 
00044         FloatPoint& operator+=(const FloatPoint &delta) {
00045             x += delta.x;
00046             y += delta.y;
00047             return *this;
00048         }
00049         FloatPoint& operator-=(const FloatPoint &delta) {
00050             x -= delta.x;
00051             y -= delta.y;
00052             return *this;
00053         }
00054     };
00055 
00056 class TransformTools {
00057 public:
00066     static FloatPoint transformPoint(FloatPoint point, const float rotate, const Common::Point &zoom, const bool mirrorX = false, const bool mirrorY = false);
00067 
00073     static Common::Rect newRect(const Common::Rect &oldRect, const TransformStruct &transform, Common::Point *newHotspot);
00074 };
00075 
00076 } // End of namespace Wintermute
00077 #endif


Generated on Sat Aug 17 2019 05:00:44 for ResidualVM by doxygen 1.7.1
curved edge   curved edge