From 17f34f00d37432dae207be3d55ec531a738eb065 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Tue, 26 Apr 2016 16:43:56 +0300
Subject: Split graphicsvetexes into multiply files.

---
 src/CMakeLists.txt                             |  16 +-
 src/Makefile.am                                |   8 +-
 src/gui/widgets/avatarlistbox.cpp              |   2 +-
 src/gui/widgets/button.cpp                     |   2 +-
 src/gui/widgets/emotepage.cpp                  |   2 +-
 src/gui/widgets/itemcontainer.cpp              |   2 +-
 src/gui/widgets/popup.cpp                      |   2 +-
 src/gui/widgets/progressbar.cpp                |   2 +-
 src/gui/widgets/scrollarea.cpp                 |   2 +-
 src/gui/widgets/shortcutcontainer.cpp          |   2 +-
 src/gui/widgets/slider.cpp                     |   2 +-
 src/gui/widgets/tabs/tab.cpp                   |   2 +-
 src/gui/widgets/window.cpp                     |   2 +-
 src/gui/windows/equipmentwindow.cpp            |   2 +-
 src/input/touch/touchmanager.cpp               |   2 +-
 src/render/mobileopengl2graphics.cpp           |   2 +-
 src/render/mobileopenglgraphics.cpp            |   2 +-
 src/render/modernopenglgraphics.cpp            |   2 +-
 src/render/normalopenglgraphics.cpp            |   2 +-
 src/render/nullopenglgraphics.cpp              |   2 +-
 src/render/sdl2graphics.cpp                    |   2 +-
 src/render/sdl2softwaregraphics.cpp            |   2 +-
 src/render/sdlgraphics.cpp                     |   2 +-
 src/render/vertexes/graphicsvertexes.cpp       | 271 -------------------------
 src/render/vertexes/graphicsvertexes.h         | 160 ---------------
 src/render/vertexes/imagecollection.cpp        |  56 +++++
 src/render/vertexes/imagecollection.h          |  55 +++++
 src/render/vertexes/imagevertexes.cpp          |  41 ++++
 src/render/vertexes/imagevertexes.h            |  56 +++++
 src/render/vertexes/openglgraphicsvertexes.cpp | 227 +++++++++++++++++++++
 src/render/vertexes/openglgraphicsvertexes.h   | 113 +++++++++++
 src/resources/map/maprowvertexes.h             |   2 +-
 src/test/testlauncher.cpp                      |   2 +-
 33 files changed, 589 insertions(+), 460 deletions(-)
 delete mode 100644 src/render/vertexes/graphicsvertexes.cpp
 delete mode 100644 src/render/vertexes/graphicsvertexes.h
 create mode 100644 src/render/vertexes/imagecollection.cpp
 create mode 100644 src/render/vertexes/imagecollection.h
 create mode 100644 src/render/vertexes/imagevertexes.cpp
 create mode 100644 src/render/vertexes/imagevertexes.h
 create mode 100644 src/render/vertexes/openglgraphicsvertexes.cpp
 create mode 100644 src/render/vertexes/openglgraphicsvertexes.h

(limited to 'src')

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2d7791adf..b43e52a45 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -957,8 +957,12 @@ SET(SRCS
     render/graphics.h
     graphicsmanager.cpp
     graphicsmanager.h
-    render/vertexes/graphicsvertexes.cpp
-    render/vertexes/graphicsvertexes.h
+    render/vertexes/imagecollection.cpp
+    render/vertexes/imagecollection.h
+    render/vertexes/imagevertexes.cpp
+    render/vertexes/imagevertexes.h
+    render/vertexes/openglgraphicsvertexes.cpp
+    render/vertexes/openglgraphicsvertexes.h
     guild.cpp
     guild.h
     enums/commandtarget.h
@@ -1349,8 +1353,12 @@ SET(DYE_CMD_SRCS
     configuration.h
     graphicsmanager.cpp
     graphicsmanager.h
-    render/vertexes/graphicsvertexes.cpp
-    render/vertexes/graphicsvertexes.h
+    render/vertexes/imagecollection.cpp
+    render/vertexes/imagecollection.h
+    render/vertexes/imagevertexes.cpp
+    render/vertexes/imagevertexes.h
+    render/vertexes/openglgraphicsvertexes.cpp
+    render/vertexes/openglgraphicsvertexes.h
     logger.cpp
     logger.h
     navigationmanager.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 15eeb379e..2fcea1281 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -523,8 +523,12 @@ SRC += events/actionevent.h \
 	      render/graphics.h \
 	      graphicsmanager.cpp \
 	      graphicsmanager.h \
-	      render/vertexes/graphicsvertexes.cpp \
-	      render/vertexes/graphicsvertexes.h \
+	      render/vertexes/imagecollection.cpp \
+	      render/vertexes/imagecollection.h \
+	      render/vertexes/imagevertexes.cpp \
+	      render/vertexes/imagevertexes.h \
+	      render/vertexes/openglgraphicsvertexes.cpp \
+	      render/vertexes/openglgraphicsvertexes.h \
 	      events/inputevent.h \
 	      input/inputactiondata.h \
 	      input/inputactionoperators.cpp \
diff --git a/src/gui/widgets/avatarlistbox.cpp b/src/gui/widgets/avatarlistbox.cpp
index 18e8c8a49..bd71e1ff9 100644
--- a/src/gui/widgets/avatarlistbox.cpp
+++ b/src/gui/widgets/avatarlistbox.cpp
@@ -41,7 +41,7 @@
 
 #include "gui/windows/chatwindow.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 
diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp
index 563d6aa0c..3fe272a2e 100644
--- a/src/gui/widgets/button.cpp
+++ b/src/gui/widgets/button.cpp
@@ -78,7 +78,7 @@
 
 #include "render/renderers.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "utils/delete2.h"
 
diff --git a/src/gui/widgets/emotepage.cpp b/src/gui/widgets/emotepage.cpp
index e1f25a19c..0791c37fc 100644
--- a/src/gui/widgets/emotepage.cpp
+++ b/src/gui/widgets/emotepage.cpp
@@ -22,7 +22,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/imageset.h"
 #include "resources/resourcemanager.h"
diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp
index fbe213964..d49b16c18 100644
--- a/src/gui/widgets/itemcontainer.cpp
+++ b/src/gui/widgets/itemcontainer.cpp
@@ -59,7 +59,7 @@
 #include "utils/gettext.h"
 #include "utils/stringutils.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/iteminfo.h"
 
diff --git a/src/gui/widgets/popup.cpp b/src/gui/widgets/popup.cpp
index d48921056..ba3d4739e 100644
--- a/src/gui/widgets/popup.cpp
+++ b/src/gui/widgets/popup.cpp
@@ -32,7 +32,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "debug.h"
 
diff --git a/src/gui/widgets/progressbar.cpp b/src/gui/widgets/progressbar.cpp
index 9456b835a..9b1ba0e05 100644
--- a/src/gui/widgets/progressbar.cpp
+++ b/src/gui/widgets/progressbar.cpp
@@ -33,7 +33,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "debug.h"
 
diff --git a/src/gui/widgets/scrollarea.cpp b/src/gui/widgets/scrollarea.cpp
index 8d003e9f3..db3de4874 100644
--- a/src/gui/widgets/scrollarea.cpp
+++ b/src/gui/widgets/scrollarea.cpp
@@ -75,7 +75,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/gui/widgets/shortcutcontainer.cpp b/src/gui/widgets/shortcutcontainer.cpp
index 392895f65..c39cec66e 100644
--- a/src/gui/widgets/shortcutcontainer.cpp
+++ b/src/gui/widgets/shortcutcontainer.cpp
@@ -32,7 +32,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "debug.h"
 
diff --git a/src/gui/widgets/slider.cpp b/src/gui/widgets/slider.cpp
index e7d14ac59..9b21c0bab 100644
--- a/src/gui/widgets/slider.cpp
+++ b/src/gui/widgets/slider.cpp
@@ -76,7 +76,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "debug.h"
 
diff --git a/src/gui/widgets/tabs/tab.cpp b/src/gui/widgets/tabs/tab.cpp
index 707e0dffe..a7568a4ca 100644
--- a/src/gui/widgets/tabs/tab.cpp
+++ b/src/gui/widgets/tabs/tab.cpp
@@ -73,7 +73,7 @@
 #include "gui/widgets/label.h"
 #include "gui/widgets/tabbedarea.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp
index c8535b197..a1f4c4661 100644
--- a/src/gui/widgets/window.cpp
+++ b/src/gui/widgets/window.cpp
@@ -93,7 +93,7 @@
 
 #include "render/renderers.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "utils/delete2.h"
 
diff --git a/src/gui/windows/equipmentwindow.cpp b/src/gui/windows/equipmentwindow.cpp
index 79095b301..3aa4ca241 100644
--- a/src/gui/windows/equipmentwindow.cpp
+++ b/src/gui/windows/equipmentwindow.cpp
@@ -41,7 +41,7 @@
 #include "gui/widgets/playerbox.h"
 #include "gui/widgets/tabstrip.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/equipmentslots.h"
 #include "resources/imageset.h"
diff --git a/src/input/touch/touchmanager.cpp b/src/input/touch/touchmanager.cpp
index 4b363e09d..904fd4ba2 100644
--- a/src/input/touch/touchmanager.cpp
+++ b/src/input/touch/touchmanager.cpp
@@ -37,7 +37,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/mobileopengl2graphics.cpp b/src/render/mobileopengl2graphics.cpp
index 7e40f4139..5feaa0d2e 100644
--- a/src/render/mobileopengl2graphics.cpp
+++ b/src/render/mobileopengl2graphics.cpp
@@ -35,7 +35,7 @@
 #include "render/shaders/shaderprogram.h"
 #include "render/shaders/shadersmanager.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/mobileopenglgraphics.cpp b/src/render/mobileopenglgraphics.cpp
index b3aca8ed8..c8d4a93d4 100644
--- a/src/render/mobileopenglgraphics.cpp
+++ b/src/render/mobileopenglgraphics.cpp
@@ -31,7 +31,7 @@
 #include "render/opengl/naclglfunctions.h"
 #endif
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/modernopenglgraphics.cpp b/src/render/modernopenglgraphics.cpp
index 1cfb07690..afebaf1c5 100644
--- a/src/render/modernopenglgraphics.cpp
+++ b/src/render/modernopenglgraphics.cpp
@@ -35,7 +35,7 @@
 #include "render/shaders/shaderprogram.h"
 #include "render/shaders/shadersmanager.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp
index bd6aa2b38..751877bfe 100644
--- a/src/render/normalopenglgraphics.cpp
+++ b/src/render/normalopenglgraphics.cpp
@@ -28,7 +28,7 @@
 
 #include "render/opengl/mgl.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/nullopenglgraphics.cpp b/src/render/nullopenglgraphics.cpp
index 7203468a6..d4e878479 100644
--- a/src/render/nullopenglgraphics.cpp
+++ b/src/render/nullopenglgraphics.cpp
@@ -30,7 +30,7 @@
 #include "logger.h"
 #endif
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/sdl2graphics.cpp b/src/render/sdl2graphics.cpp
index 6b798eaec..babeeb6fd 100644
--- a/src/render/sdl2graphics.cpp
+++ b/src/render/sdl2graphics.cpp
@@ -73,7 +73,7 @@
 #include "graphicsmanager.h"
 #include "logger.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagehelper.h"
diff --git a/src/render/sdl2softwaregraphics.cpp b/src/render/sdl2softwaregraphics.cpp
index a8f307124..8ba667faa 100644
--- a/src/render/sdl2softwaregraphics.cpp
+++ b/src/render/sdl2softwaregraphics.cpp
@@ -30,7 +30,7 @@
 #include "graphicsmanager.h"
 #include "logger.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagehelper.h"
diff --git a/src/render/sdlgraphics.cpp b/src/render/sdlgraphics.cpp
index 421b2508b..6972b03da 100644
--- a/src/render/sdlgraphics.cpp
+++ b/src/render/sdlgraphics.cpp
@@ -32,7 +32,7 @@
 
 #include "utils/sdlpixel.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagerect.h"
diff --git a/src/render/vertexes/graphicsvertexes.cpp b/src/render/vertexes/graphicsvertexes.cpp
deleted file mode 100644
index d2cd830af..000000000
--- a/src/render/vertexes/graphicsvertexes.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- *  The ManaPlus Client
- *  Copyright (C) 2011-2016  The ManaPlus Developers
- *
- *  This file is part of The ManaPlus Client.
- *
- *  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
- *  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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "render/vertexes/graphicsvertexes.h"
-
-#ifdef USE_OPENGL
-#include "render/graphics.h"
-#endif
-
-#include "utils/dtor.h"
-
-#include "debug.h"
-
-#ifdef USE_OPENGL
-unsigned int vertexBufSize = 500;
-
-OpenGLGraphicsVertexes::OpenGLGraphicsVertexes() :
-    ptr(0),
-    mFloatTexArray(nullptr),
-    mIntTexArray(nullptr),
-    mIntVertArray(nullptr),
-    mShortVertArray(nullptr),
-    mVp(),
-    mFloatTexPool(),
-    mIntVertPool(),
-    mShortVertPool(),
-    mIntTexPool(),
-    mVbo()
-{
-    mFloatTexPool.reserve(30);
-    mIntVertPool.reserve(30);
-    mShortVertPool.reserve(30);
-    mIntTexPool.reserve(30);
-    mVp.reserve(30);
-    mVbo.reserve(30);
-}
-
-OpenGLGraphicsVertexes::~OpenGLGraphicsVertexes()
-{
-    clear();
-}
-
-void OpenGLGraphicsVertexes::clear() restrict2
-{
-    for (std::vector<GLfloat*>::iterator it = mFloatTexPool.begin();
-        it != mFloatTexPool.end(); ++ it)
-    {
-        delete [] (*it);
-    }
-    mFloatTexPool.clear();
-
-    for (std::vector<GLint*>::iterator it = mIntVertPool.begin();
-        it != mIntVertPool.end(); ++ it)
-    {
-        delete [] (*it);
-    }
-    mIntVertPool.clear();
-
-    for (std::vector<GLshort*>::iterator it = mShortVertPool.begin();
-        it != mShortVertPool.end(); ++ it)
-    {
-        delete [] (*it);
-    }
-    mShortVertPool.clear();
-
-    for (std::vector<GLint*>::iterator it = mIntTexPool.begin();
-        it != mIntTexPool.end(); ++ it)
-    {
-        delete [] (*it);
-    }
-    mIntTexPool.clear();
-
-    const int sz = CAST_S32(mVbo.size());
-    if (sz > 0)
-    {
-        mainGraphics->removeArray(sz, &mVbo[0]);
-        mVbo.clear();
-    }
-
-    mVp.clear();
-    if (ptr)
-    {
-        ptr = 0;
-        delete []mFloatTexArray;
-        mFloatTexArray = nullptr;
-        delete []mIntTexArray;
-        mIntTexArray = nullptr;
-        delete []mIntVertArray;
-        mIntVertArray = nullptr;
-        delete []mShortVertArray;
-        mShortVertArray = nullptr;
-    }
-}
-
-void OpenGLGraphicsVertexes::init() restrict2
-{
-    clear();
-}
-
-GLfloat *OpenGLGraphicsVertexes::switchFloatTexArray() restrict2
-{
-    mFloatTexArray = new GLfloat[CAST_SIZE(vertexBufSize * 4 + 30)];
-    mFloatTexPool.push_back(mFloatTexArray);
-    return mFloatTexArray;
-}
-
-GLint *OpenGLGraphicsVertexes::switchIntVertArray() restrict2
-{
-    mIntVertArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
-    mIntVertPool.push_back(mIntVertArray);
-    return mIntVertArray;
-}
-
-GLshort *OpenGLGraphicsVertexes::switchShortVertArray() restrict2
-{
-    mShortVertArray = new GLshort[CAST_SIZE(vertexBufSize * 4 + 30)];
-    mShortVertPool.push_back(mShortVertArray);
-    return mShortVertArray;
-}
-
-GLint *OpenGLGraphicsVertexes::switchIntTexArray() restrict2
-{
-    mIntTexArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
-    mIntTexPool.push_back(mIntTexArray);
-    return mIntTexArray;
-}
-
-void OpenGLGraphicsVertexes::switchVp(const int n) restrict2
-{
-    mVp.push_back(n);
-}
-
-int OpenGLGraphicsVertexes::continueVp() restrict2
-{
-    if (mVp.empty())
-    {
-        return 0;
-    }
-    else
-    {
-        const int val = mVp.back();
-        mVp.pop_back();
-        return val;
-    }
-}
-
-void OpenGLGraphicsVertexes::updateVp(const int n) restrict2
-{
-    if (!mVp.empty())
-        mVp.pop_back();
-    mVp.push_back(n);
-}
-
-GLfloat *OpenGLGraphicsVertexes::continueFloatTexArray() restrict2
-{
-    if (mFloatTexPool.empty())
-    {
-        mFloatTexArray = new GLfloat[CAST_SIZE(
-            vertexBufSize * 4 + 30)];
-        mFloatTexPool.push_back(mFloatTexArray);
-    }
-    else
-    {
-        mFloatTexArray = mFloatTexPool.back();
-    }
-    return mFloatTexArray;
-}
-
-GLint *OpenGLGraphicsVertexes::continueIntVertArray() restrict2
-{
-    if (mIntVertPool.empty())
-    {
-        mIntVertArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
-        mIntVertPool.push_back(mIntVertArray);
-    }
-    else
-    {
-        mIntVertArray = mIntVertPool.back();
-    }
-    return mIntVertArray;
-}
-
-GLshort *OpenGLGraphicsVertexes::continueShortVertArray() restrict2
-{
-    if (mShortVertPool.empty())
-    {
-        mShortVertArray = new GLshort[CAST_SIZE(
-            vertexBufSize * 4 + 30)];
-        mShortVertPool.push_back(mShortVertArray);
-    }
-    else
-    {
-        mShortVertArray = mShortVertPool.back();
-    }
-    return mShortVertArray;
-}
-
-GLint *OpenGLGraphicsVertexes::continueIntTexArray() restrict2
-{
-    if (mIntTexPool.empty())
-    {
-        mIntTexArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
-        mIntTexPool.push_back(mIntTexArray);
-    }
-    else
-    {
-        mIntTexArray = mIntTexPool.back();
-    }
-    return mIntTexArray;
-}
-#endif
-
-ImageVertexes::ImageVertexes() :
-    image(nullptr),
-#ifdef USE_OPENGL
-    ogl(),
-#endif
-    sdl()
-{
-    sdl.reserve(30);
-}
-
-ImageVertexes::~ImageVertexes()
-{
-    delete_all(sdl);
-    sdl.clear();
-}
-
-ImageCollection::ImageCollection() :
-#ifdef USE_OPENGL
-    currentGLImage(0),
-#endif
-    currentImage(nullptr),
-    currentVert(nullptr),
-    draws()
-{
-}
-
-ImageCollection::~ImageCollection()
-{
-    clear();
-}
-
-void ImageCollection::clear() restrict2
-{
-#ifdef USE_OPENGL
-    currentGLImage = 0;
-#endif
-    currentImage = nullptr;
-    currentVert = nullptr;
-
-    delete_all(draws);
-    draws.clear();
-}
diff --git a/src/render/vertexes/graphicsvertexes.h b/src/render/vertexes/graphicsvertexes.h
deleted file mode 100644
index d9e7e1694..000000000
--- a/src/render/vertexes/graphicsvertexes.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- *  The ManaPlus Client
- *  Copyright (C) 2011-2016  The ManaPlus Developers
- *
- *  This file is part of The ManaPlus Client.
- *
- *  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
- *  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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GRAPHICSVERTEXES_H
-#define GRAPHICSVERTEXES_H
-
-#include "main.h"
-
-#include "resources/rect/doublerect.h"
-
-#ifdef USE_OPENGL
-
-#ifdef ANDROID
-#include <GLES/gl.h>
-#else
-#ifndef USE_SDL2
-#define GL_GLEXT_PROTOTYPES 1
-#endif
-#include <SDL_opengl.h>
-#endif
-
-#endif
-
-#include <vector>
-
-#include "localconsts.h"
-
-class Image;
-
-#ifdef USE_OPENGL
-class OpenGLGraphicsVertexes final
-{
-    public:
-        OpenGLGraphicsVertexes();
-
-        A_DELETE_COPY(OpenGLGraphicsVertexes)
-
-        ~OpenGLGraphicsVertexes();
-
-        GLfloat *switchFloatTexArray() restrict2;
-
-        GLint *switchIntVertArray() restrict2;
-
-        GLint *switchIntTexArray() restrict2;
-
-        GLshort *switchShortVertArray() restrict2;
-
-        std::vector<GLfloat*> *getFloatTexPool() restrict2 A_WARN_UNUSED
-        { return &mFloatTexPool; }
-
-        std::vector<GLint*> *getIntVertPool() restrict2 A_WARN_UNUSED
-        { return &mIntVertPool; }
-
-        std::vector<GLshort*> *getShortVertPool() restrict2 A_WARN_UNUSED
-        { return &mShortVertPool; }
-
-        std::vector<GLint*> *getIntTexPool() restrict2 A_WARN_UNUSED
-        { return &mIntTexPool; }
-
-        void switchVp(const int n) restrict2;
-
-        GLfloat *continueFloatTexArray() restrict2 RETURNS_NONNULL;
-
-        GLint *continueIntVertArray() restrict2 RETURNS_NONNULL;
-
-        GLshort *continueShortVertArray() restrict2 RETURNS_NONNULL;
-
-        GLint *continueIntTexArray() restrict2 RETURNS_NONNULL;
-
-        int continueVp() restrict2;
-
-        void updateVp(const int n) restrict2;
-
-        std::vector<int> *getVp() restrict2 A_WARN_UNUSED
-        { return &mVp; }
-
-        void init() restrict2;
-
-        void clear() restrict2;
-
-        int ptr;
-
-        GLfloat *mFloatTexArray;
-        GLint *mIntTexArray;
-        GLint *mIntVertArray;
-        GLshort *mShortVertArray;
-        std::vector<int> mVp;
-        std::vector<GLfloat*> mFloatTexPool;
-        std::vector<GLint*> mIntVertPool;
-        std::vector<GLshort*> mShortVertPool;
-        std::vector<GLint*> mIntTexPool;
-        std::vector<GLuint> mVbo;
-};
-#endif
-
-typedef std::vector<DoubleRect*> DoubleRects;
-
-class ImageVertexes final
-{
-    public:
-        ImageVertexes();
-
-        A_DELETE_COPY(ImageVertexes)
-
-        ~ImageVertexes();
-
-        const Image *restrict image;
-#ifdef USE_OPENGL
-        OpenGLGraphicsVertexes ogl;
-#endif
-        DoubleRects sdl;
-};
-
-typedef std::vector<ImageVertexes*> ImageVertexesVector;
-typedef ImageVertexesVector::iterator ImageCollectionIter;
-typedef ImageVertexesVector::const_iterator ImageCollectionCIter;
-
-class ImageCollection final
-{
-    public:
-        ImageCollection();
-
-        A_DELETE_COPY(ImageCollection)
-
-        ~ImageCollection();
-
-        void clear() restrict2;
-
-#ifdef USE_OPENGL
-        GLuint currentGLImage;
-#endif
-        const Image *restrict currentImage;
-
-        ImageVertexes *restrict currentVert;
-
-        ImageVertexesVector draws;
-};
-
-#ifdef USE_OPENGL
-extern unsigned int vertexBufSize;
-#endif
-
-#endif  // GRAPHICSVERTEXES_H
diff --git a/src/render/vertexes/imagecollection.cpp b/src/render/vertexes/imagecollection.cpp
new file mode 100644
index 000000000..787fe3426
--- /dev/null
+++ b/src/render/vertexes/imagecollection.cpp
@@ -0,0 +1,56 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "render/vertexes/imagecollection.h"
+
+#ifdef USE_OPENGL
+#include "render/graphics.h"
+#endif
+
+#include "utils/dtor.h"
+
+#include "debug.h"
+
+ImageCollection::ImageCollection() :
+#ifdef USE_OPENGL
+    currentGLImage(0),
+#endif
+    currentImage(nullptr),
+    currentVert(nullptr),
+    draws()
+{
+}
+
+ImageCollection::~ImageCollection()
+{
+    clear();
+}
+
+void ImageCollection::clear() restrict2
+{
+#ifdef USE_OPENGL
+    currentGLImage = 0;
+#endif
+    currentImage = nullptr;
+    currentVert = nullptr;
+
+    delete_all(draws);
+    draws.clear();
+}
diff --git a/src/render/vertexes/imagecollection.h b/src/render/vertexes/imagecollection.h
new file mode 100644
index 000000000..e4567d85f
--- /dev/null
+++ b/src/render/vertexes/imagecollection.h
@@ -0,0 +1,55 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RENDER_VERTEXES_IMAGECOLLECTION_H
+#define RENDER_VERTEXES_IMAGECOLLECTION_H
+
+#include "main.h"
+
+#include "resources/rect/doublerect.h"
+
+#include "render/vertexes/imagevertexes.h"
+
+#include "localconsts.h"
+
+class Image;
+
+class ImageCollection final
+{
+    public:
+        ImageCollection();
+
+        A_DELETE_COPY(ImageCollection)
+
+        ~ImageCollection();
+
+        void clear() restrict2;
+
+#ifdef USE_OPENGL
+        GLuint currentGLImage;
+#endif
+        const Image *restrict currentImage;
+
+        ImageVertexes *restrict currentVert;
+
+        ImageVertexesVector draws;
+};
+
+#endif  // RENDER_VERTEXES_IMAGECOLLECTION_H
diff --git a/src/render/vertexes/imagevertexes.cpp b/src/render/vertexes/imagevertexes.cpp
new file mode 100644
index 000000000..675078faf
--- /dev/null
+++ b/src/render/vertexes/imagevertexes.cpp
@@ -0,0 +1,41 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "render/vertexes/imagevertexes.h"
+
+#include "utils/dtor.h"
+
+#include "debug.h"
+
+ImageVertexes::ImageVertexes() :
+    image(nullptr),
+#ifdef USE_OPENGL
+    ogl(),
+#endif
+    sdl()
+{
+    sdl.reserve(30);
+}
+
+ImageVertexes::~ImageVertexes()
+{
+    delete_all(sdl);
+    sdl.clear();
+}
diff --git a/src/render/vertexes/imagevertexes.h b/src/render/vertexes/imagevertexes.h
new file mode 100644
index 000000000..eb6205d98
--- /dev/null
+++ b/src/render/vertexes/imagevertexes.h
@@ -0,0 +1,56 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RENDER_VERTEXES_IMAGEVERTEXES_H
+#define RENDER_VERTEXES_IMAGEVERTEXES_H
+
+#include "resources/rect/doublerect.h"
+
+#include "render/vertexes/openglgraphicsvertexes.h"
+
+#include <vector>
+
+#include "localconsts.h"
+
+class Image;
+
+typedef std::vector<DoubleRect*> DoubleRects;
+
+class ImageVertexes final
+{
+    public:
+        ImageVertexes();
+
+        A_DELETE_COPY(ImageVertexes)
+
+        ~ImageVertexes();
+
+        const Image *restrict image;
+#ifdef USE_OPENGL
+        OpenGLGraphicsVertexes ogl;
+#endif
+        DoubleRects sdl;
+};
+
+typedef std::vector<ImageVertexes*> ImageVertexesVector;
+typedef ImageVertexesVector::iterator ImageCollectionIter;
+typedef ImageVertexesVector::const_iterator ImageCollectionCIter;
+
+#endif  // RENDER_VERTEXES_IMAGEVERTEXES_H
diff --git a/src/render/vertexes/openglgraphicsvertexes.cpp b/src/render/vertexes/openglgraphicsvertexes.cpp
new file mode 100644
index 000000000..d111860d1
--- /dev/null
+++ b/src/render/vertexes/openglgraphicsvertexes.cpp
@@ -0,0 +1,227 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef USE_OPENGL
+
+#include "render/vertexes/imagecollection.h"
+
+#include "render/graphics.h"
+
+#include "utils/dtor.h"
+
+#include "debug.h"
+
+unsigned int vertexBufSize = 500;
+
+OpenGLGraphicsVertexes::OpenGLGraphicsVertexes() :
+    ptr(0),
+    mFloatTexArray(nullptr),
+    mIntTexArray(nullptr),
+    mIntVertArray(nullptr),
+    mShortVertArray(nullptr),
+    mVp(),
+    mFloatTexPool(),
+    mIntVertPool(),
+    mShortVertPool(),
+    mIntTexPool(),
+    mVbo()
+{
+    mFloatTexPool.reserve(30);
+    mIntVertPool.reserve(30);
+    mShortVertPool.reserve(30);
+    mIntTexPool.reserve(30);
+    mVp.reserve(30);
+    mVbo.reserve(30);
+}
+
+OpenGLGraphicsVertexes::~OpenGLGraphicsVertexes()
+{
+    clear();
+}
+
+void OpenGLGraphicsVertexes::clear() restrict2
+{
+    for (std::vector<GLfloat*>::iterator it = mFloatTexPool.begin();
+        it != mFloatTexPool.end(); ++ it)
+    {
+        delete [] (*it);
+    }
+    mFloatTexPool.clear();
+
+    for (std::vector<GLint*>::iterator it = mIntVertPool.begin();
+        it != mIntVertPool.end(); ++ it)
+    {
+        delete [] (*it);
+    }
+    mIntVertPool.clear();
+
+    for (std::vector<GLshort*>::iterator it = mShortVertPool.begin();
+        it != mShortVertPool.end(); ++ it)
+    {
+        delete [] (*it);
+    }
+    mShortVertPool.clear();
+
+    for (std::vector<GLint*>::iterator it = mIntTexPool.begin();
+        it != mIntTexPool.end(); ++ it)
+    {
+        delete [] (*it);
+    }
+    mIntTexPool.clear();
+
+    const int sz = CAST_S32(mVbo.size());
+    if (sz > 0)
+    {
+        mainGraphics->removeArray(sz, &mVbo[0]);
+        mVbo.clear();
+    }
+
+    mVp.clear();
+    if (ptr)
+    {
+        ptr = 0;
+        delete []mFloatTexArray;
+        mFloatTexArray = nullptr;
+        delete []mIntTexArray;
+        mIntTexArray = nullptr;
+        delete []mIntVertArray;
+        mIntVertArray = nullptr;
+        delete []mShortVertArray;
+        mShortVertArray = nullptr;
+    }
+}
+
+void OpenGLGraphicsVertexes::init() restrict2
+{
+    clear();
+}
+
+GLfloat *OpenGLGraphicsVertexes::switchFloatTexArray() restrict2
+{
+    mFloatTexArray = new GLfloat[CAST_SIZE(vertexBufSize * 4 + 30)];
+    mFloatTexPool.push_back(mFloatTexArray);
+    return mFloatTexArray;
+}
+
+GLint *OpenGLGraphicsVertexes::switchIntVertArray() restrict2
+{
+    mIntVertArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
+    mIntVertPool.push_back(mIntVertArray);
+    return mIntVertArray;
+}
+
+GLshort *OpenGLGraphicsVertexes::switchShortVertArray() restrict2
+{
+    mShortVertArray = new GLshort[CAST_SIZE(vertexBufSize * 4 + 30)];
+    mShortVertPool.push_back(mShortVertArray);
+    return mShortVertArray;
+}
+
+GLint *OpenGLGraphicsVertexes::switchIntTexArray() restrict2
+{
+    mIntTexArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
+    mIntTexPool.push_back(mIntTexArray);
+    return mIntTexArray;
+}
+
+void OpenGLGraphicsVertexes::switchVp(const int n) restrict2
+{
+    mVp.push_back(n);
+}
+
+int OpenGLGraphicsVertexes::continueVp() restrict2
+{
+    if (mVp.empty())
+    {
+        return 0;
+    }
+    else
+    {
+        const int val = mVp.back();
+        mVp.pop_back();
+        return val;
+    }
+}
+
+void OpenGLGraphicsVertexes::updateVp(const int n) restrict2
+{
+    if (!mVp.empty())
+        mVp.pop_back();
+    mVp.push_back(n);
+}
+
+GLfloat *OpenGLGraphicsVertexes::continueFloatTexArray() restrict2
+{
+    if (mFloatTexPool.empty())
+    {
+        mFloatTexArray = new GLfloat[CAST_SIZE(
+            vertexBufSize * 4 + 30)];
+        mFloatTexPool.push_back(mFloatTexArray);
+    }
+    else
+    {
+        mFloatTexArray = mFloatTexPool.back();
+    }
+    return mFloatTexArray;
+}
+
+GLint *OpenGLGraphicsVertexes::continueIntVertArray() restrict2
+{
+    if (mIntVertPool.empty())
+    {
+        mIntVertArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
+        mIntVertPool.push_back(mIntVertArray);
+    }
+    else
+    {
+        mIntVertArray = mIntVertPool.back();
+    }
+    return mIntVertArray;
+}
+
+GLshort *OpenGLGraphicsVertexes::continueShortVertArray() restrict2
+{
+    if (mShortVertPool.empty())
+    {
+        mShortVertArray = new GLshort[CAST_SIZE(
+            vertexBufSize * 4 + 30)];
+        mShortVertPool.push_back(mShortVertArray);
+    }
+    else
+    {
+        mShortVertArray = mShortVertPool.back();
+    }
+    return mShortVertArray;
+}
+
+GLint *OpenGLGraphicsVertexes::continueIntTexArray() restrict2
+{
+    if (mIntTexPool.empty())
+    {
+        mIntTexArray = new GLint[CAST_SIZE(vertexBufSize * 4 + 30)];
+        mIntTexPool.push_back(mIntTexArray);
+    }
+    else
+    {
+        mIntTexArray = mIntTexPool.back();
+    }
+    return mIntTexArray;
+}
+#endif
diff --git a/src/render/vertexes/openglgraphicsvertexes.h b/src/render/vertexes/openglgraphicsvertexes.h
new file mode 100644
index 000000000..b27ccb095
--- /dev/null
+++ b/src/render/vertexes/openglgraphicsvertexes.h
@@ -0,0 +1,113 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2011-2016  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  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
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RENDER_VERTEXES_OPENGLGRAPHICSVERTEXES_H
+#define RENDER_VERTEXES_OPENGLGRAPHICSVERTEXES_H
+
+#ifdef USE_OPENGL
+
+#include "main.h"
+
+#ifdef ANDROID
+#include <GLES/gl.h>
+#else
+#ifndef USE_SDL2
+#define GL_GLEXT_PROTOTYPES 1
+#endif
+#include <SDL_opengl.h>
+#endif
+
+#endif
+
+#include <vector>
+
+#include "localconsts.h"
+
+class Image;
+
+#ifdef USE_OPENGL
+class OpenGLGraphicsVertexes final
+{
+    public:
+        OpenGLGraphicsVertexes();
+
+        A_DELETE_COPY(OpenGLGraphicsVertexes)
+
+        ~OpenGLGraphicsVertexes();
+
+        GLfloat *switchFloatTexArray() restrict2;
+
+        GLint *switchIntVertArray() restrict2;
+
+        GLint *switchIntTexArray() restrict2;
+
+        GLshort *switchShortVertArray() restrict2;
+
+        std::vector<GLfloat*> *getFloatTexPool() restrict2 A_WARN_UNUSED
+        { return &mFloatTexPool; }
+
+        std::vector<GLint*> *getIntVertPool() restrict2 A_WARN_UNUSED
+        { return &mIntVertPool; }
+
+        std::vector<GLshort*> *getShortVertPool() restrict2 A_WARN_UNUSED
+        { return &mShortVertPool; }
+
+        std::vector<GLint*> *getIntTexPool() restrict2 A_WARN_UNUSED
+        { return &mIntTexPool; }
+
+        void switchVp(const int n) restrict2;
+
+        GLfloat *continueFloatTexArray() restrict2 RETURNS_NONNULL;
+
+        GLint *continueIntVertArray() restrict2 RETURNS_NONNULL;
+
+        GLshort *continueShortVertArray() restrict2 RETURNS_NONNULL;
+
+        GLint *continueIntTexArray() restrict2 RETURNS_NONNULL;
+
+        int continueVp() restrict2;
+
+        void updateVp(const int n) restrict2;
+
+        std::vector<int> *getVp() restrict2 A_WARN_UNUSED
+        { return &mVp; }
+
+        void init() restrict2;
+
+        void clear() restrict2;
+
+        int ptr;
+
+        GLfloat *mFloatTexArray;
+        GLint *mIntTexArray;
+        GLint *mIntVertArray;
+        GLshort *mShortVertArray;
+        std::vector<int> mVp;
+        std::vector<GLfloat*> mFloatTexPool;
+        std::vector<GLint*> mIntVertPool;
+        std::vector<GLshort*> mShortVertPool;
+        std::vector<GLint*> mIntTexPool;
+        std::vector<GLuint> mVbo;
+};
+
+extern unsigned int vertexBufSize;
+#endif  // USE_OPENGL
+
+#endif  // RENDER_VERTEXES_OPENGLGRAPHICSVERTEXES_H
diff --git a/src/resources/map/maprowvertexes.h b/src/resources/map/maprowvertexes.h
index 38823ed5f..8d13d35c3 100644
--- a/src/resources/map/maprowvertexes.h
+++ b/src/resources/map/maprowvertexes.h
@@ -23,7 +23,7 @@
 
 #include "utils/dtor.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagevertexes.h"
 
 #include "localconsts.h"
 
diff --git a/src/test/testlauncher.cpp b/src/test/testlauncher.cpp
index 25efabb43..2210e3c33 100644
--- a/src/test/testlauncher.cpp
+++ b/src/test/testlauncher.cpp
@@ -38,7 +38,7 @@
 
 #include "render/graphics.h"
 
-#include "render/vertexes/graphicsvertexes.h"
+#include "render/vertexes/imagecollection.h"
 
 #include "resources/image.h"
 #include "resources/imagewriter.h"
-- 
cgit v1.2.3-70-g09d2