[Scummvm-cvs-logs] SF.net SVN: scummvm:[38905] scummvm/trunk/engines/sci/gfx
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Thu Feb 26 17:16:22 CET 2009
Revision: 38905
http://scummvm.svn.sourceforge.net/scummvm/?rev=38905&view=rev
Author: fingolfin
Date: 2009-02-26 16:16:22 +0000 (Thu, 26 Feb 2009)
Log Message:
-----------
SCI: Moved gfx_line.cpp to line.h and turned _gfx_draw_line_buffer into a template
Modified Paths:
--------------
scummvm/trunk/engines/sci/gfx/gfx_support.cpp
Added Paths:
-----------
scummvm/trunk/engines/sci/gfx/line.h
Removed Paths:
-------------
scummvm/trunk/engines/sci/gfx/gfx_line.cpp
Deleted: scummvm/trunk/engines/sci/gfx/gfx_line.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_line.cpp 2009-02-26 16:16:13 UTC (rev 38904)
+++ scummvm/trunk/engines/sci/gfx/gfx_line.cpp 2009-02-26 16:16:22 UTC (rev 38905)
@@ -1,68 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-namespace Sci {
-
-#define LINEMACRO(startx, starty, deltalinear, deltanonlinear, linearvar, nonlinearvar, \
- linearend, nonlinearstart, linearmod, nonlinearmod) \
- incrNE = ((deltalinear) > 0) ? (deltalinear) : -(deltalinear); \
- incrNE <<= 1; \
- deltanonlinear <<= 1; \
- incrE = ((deltanonlinear) > 0) ? -(deltanonlinear) : (deltanonlinear); \
- d = nonlinearstart - 1; \
- while (linearvar != (linearend)) { \
- memcpy(buffer + linewidth * (starty) + (startx), &color, PIXELWIDTH); \
- linearvar += linearmod; \
- if ((d += incrE) < 0) { \
- d += incrNE; \
- nonlinearvar += nonlinearmod; \
- }; \
- }; \
- memcpy(buffer + linewidth * (starty) + (startx), &color, PIXELWIDTH);
-
-
-static inline void DRAWLINE_FUNC(byte *buffer, int linewidth, Common::Point start, Common::Point end, unsigned int color) {
- int incrE, incrNE, d;
- int dx = ABS(end.x - start.x);
- int dy = ABS(end.y - start.y);
-#ifdef SCUMM_BIG_ENDIAN
- color = SWAP_BYTES_32(color);
-#endif
-
- if (dx > dy) {
- int sign1 = (end.x < start.x) ? -1 : 1;
- int sign2 = (end.y < start.y) ? -1 : 1;
- LINEMACRO(start.x, start.y, dx, dy, start.x, start.y, end.x, dx, sign1 * PIXELWIDTH, sign2);
- } else { // dx <= dy
- int sign1 = (end.y < start.y) ? -1 : 1;
- int sign2 = (end.x < start.x) ? -1 : 1;
- LINEMACRO(start.x, start.y, dy, dx, start.y, start.x, end.y, dy, sign1, sign2 * PIXELWIDTH);
- }
-}
-
-
-#undef LINEMACRO
-
-} // End of namespace Sci
Modified: scummvm/trunk/engines/sci/gfx/gfx_support.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_support.cpp 2009-02-26 16:16:13 UTC (rev 38904)
+++ scummvm/trunk/engines/sci/gfx/gfx_support.cpp 2009-02-26 16:16:22 UTC (rev 38905)
@@ -29,31 +29,8 @@
#include "sci/gfx/gfx_system.h"
#include "sci/gfx/gfx_tools.h"
+#include "sci/gfx/line.h"
-#define DRAWLINE_FUNC _gfx_draw_line_buffer_1
-#define PIXELWIDTH 1
-#include "gfx_line.cpp"
-#undef PIXELWIDTH
-#undef DRAWLINE_FUNC
-
-#define DRAWLINE_FUNC _gfx_draw_line_buffer_2
-#define PIXELWIDTH 2
-#include "gfx_line.cpp"
-#undef PIXELWIDTH
-#undef DRAWLINE_FUNC
-
-#define DRAWLINE_FUNC _gfx_draw_line_buffer_3
-#define PIXELWIDTH 3
-#include "gfx_line.cpp"
-#undef PIXELWIDTH
-#undef DRAWLINE_FUNC
-
-#define DRAWLINE_FUNC _gfx_draw_line_buffer_4
-#define PIXELWIDTH 4
-#include "gfx_line.cpp"
-#undef PIXELWIDTH
-#undef DRAWLINE_FUNC
-
namespace Sci {
int gfx_crossblit_alpha_threshold = 128;
@@ -62,19 +39,19 @@
switch (pixelwidth) {
case 1:
- _gfx_draw_line_buffer_1(buffer, linewidth, start, end, color);
+ _gfx_draw_line_buffer<1>(buffer, linewidth, start, end, color);
return;
case 2:
- _gfx_draw_line_buffer_2(buffer, linewidth, start, end, color);
+ _gfx_draw_line_buffer<2>(buffer, linewidth, start, end, color);
return;
case 3:
- _gfx_draw_line_buffer_3(buffer, linewidth, start, end, color);
+ _gfx_draw_line_buffer<3>(buffer, linewidth, start, end, color);
return;
case 4:
- _gfx_draw_line_buffer_4(buffer, linewidth, start, end, color);
+ _gfx_draw_line_buffer<4>(buffer, linewidth, start, end, color);
return;
default:
Copied: scummvm/trunk/engines/sci/gfx/line.h (from rev 38904, scummvm/trunk/engines/sci/gfx/gfx_line.cpp)
===================================================================
--- scummvm/trunk/engines/sci/gfx/line.h (rev 0)
+++ scummvm/trunk/engines/sci/gfx/line.h 2009-02-26 16:16:22 UTC (rev 38905)
@@ -0,0 +1,69 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+namespace Sci {
+
+#define LINEMACRO(startx, starty, deltalinear, deltanonlinear, linearvar, nonlinearvar, \
+ linearend, nonlinearstart, linearmod, nonlinearmod) \
+ incrNE = ((deltalinear) > 0) ? (deltalinear) : -(deltalinear); \
+ incrNE <<= 1; \
+ deltanonlinear <<= 1; \
+ incrE = ((deltanonlinear) > 0) ? -(deltanonlinear) : (deltanonlinear); \
+ d = nonlinearstart - 1; \
+ while (linearvar != (linearend)) { \
+ memcpy(buffer + linewidth * (starty) + (startx), &color, PIXELWIDTH); \
+ linearvar += linearmod; \
+ if ((d += incrE) < 0) { \
+ d += incrNE; \
+ nonlinearvar += nonlinearmod; \
+ }; \
+ }; \
+ memcpy(buffer + linewidth * (starty) + (startx), &color, PIXELWIDTH);
+
+
+template <int PIXELWIDTH>
+void _gfx_draw_line_buffer(byte *buffer, int linewidth, Common::Point start, Common::Point end, unsigned int color) {
+ int incrE, incrNE, d;
+ int dx = ABS(end.x - start.x);
+ int dy = ABS(end.y - start.y);
+#ifdef SCUMM_BIG_ENDIAN
+ color = SWAP_BYTES_32(color);
+#endif
+
+ if (dx > dy) {
+ int sign1 = (end.x < start.x) ? -1 : 1;
+ int sign2 = (end.y < start.y) ? -1 : 1;
+ LINEMACRO(start.x, start.y, dx, dy, start.x, start.y, end.x, dx, sign1 * PIXELWIDTH, sign2);
+ } else { // dx <= dy
+ int sign1 = (end.y < start.y) ? -1 : 1;
+ int sign2 = (end.x < start.x) ? -1 : 1;
+ LINEMACRO(start.x, start.y, dy, dx, start.y, start.x, end.y, dy, sign1, sign2 * PIXELWIDTH);
+ }
+}
+
+
+#undef LINEMACRO
+
+} // End of namespace Sci
Property changes on: scummvm/trunk/engines/sci/gfx/line.h
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Date Rev Author URL Id
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list