From fe29129780090e9cd080a40302727b6a69319f73 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Mon, 3 Mar 2014 00:11:45 +0300
Subject: Merge label classes in one.

---
 src/CMakeLists.txt             |   2 -
 src/Makefile.am                |   2 -
 src/gui/base/widgets/label.cpp | 122 --------------------------------
 src/gui/base/widgets/label.hpp | 156 -----------------------------------------
 src/gui/widgets/label.cpp      |  57 ++++++++++++++-
 src/gui/widgets/label.h        |  97 ++++++++++++++++++++++++-
 6 files changed, 150 insertions(+), 286 deletions(-)
 delete mode 100644 src/gui/base/widgets/label.cpp
 delete mode 100644 src/gui/base/widgets/label.hpp

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 25e784960..006b95742 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -811,7 +811,6 @@ SET(SRCS
     gui/widgets/widget.h
     listeners/widgetlistener.h
     gui/base/widgets/container.hpp
-    gui/base/widgets/label.hpp
     gui/base/widgets/listbox.hpp
     gui/base/widgets/radiobutton.hpp
     gui/base/widgets/scrollarea.hpp
@@ -825,7 +824,6 @@ SET(SRCS
     gui/rect.cpp
     gui/widgets/widget.cpp
     gui/base/widgets/container.cpp
-    gui/base/widgets/label.cpp
     gui/base/widgets/listbox.cpp
     gui/base/widgets/radiobutton.cpp
     gui/base/widgets/scrollarea.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 09d7e2580..33d6634ce 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -174,7 +174,6 @@ manaplus_SOURCES += events/actionevent.h \
 	      gui/widgets/widget.h \
 	      listeners/widgetlistener.h \
 	      gui/base/widgets/container.hpp \
-	      gui/base/widgets/label.hpp \
 	      gui/base/widgets/listbox.hpp \
 	      gui/base/widgets/radiobutton.hpp \
 	      gui/base/widgets/scrollarea.hpp \
@@ -188,7 +187,6 @@ manaplus_SOURCES += events/actionevent.h \
 	      gui/rect.cpp \
 	      gui/widgets/widget.cpp \
 	      gui/base/widgets/container.cpp \
-	      gui/base/widgets/label.cpp \
 	      gui/base/widgets/listbox.cpp \
 	      gui/base/widgets/radiobutton.cpp \
 	      gui/base/widgets/scrollarea.cpp \
diff --git a/src/gui/base/widgets/label.cpp b/src/gui/base/widgets/label.cpp
deleted file mode 100644
index d2293a957..000000000
--- a/src/gui/base/widgets/label.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  The ManaPlus Client
- *  Copyright (C) 2011-2014  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/>.
- */
-
-/*      _______   __   __   __   ______   __   __   _______   __   __
- *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
- *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
- *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
- *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
- * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
- * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
- *
- * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
- *
- *
- * Per Larsson a.k.a finalman
- * Olof Naessén a.k.a jansem/yakslem
- *
- * Visit: http://guichan.sourceforge.net
- *
- * License: (BSD)
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name of Guichan nor the names of its contributors may
- *    be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * For comments regarding functions please see the header file.
- */
-
-#include "gui/base/widgets/label.hpp"
-
-#include "gui/font.h"
-
-#include "render/graphics.h"
-
-#include "debug.h"
-
-namespace gcn
-{
-    Label::Label(const Widget2 *const widget) :
-        Widget(widget),
-        mCaption(),
-        mAlignment(Graphics::LEFT)
-    {
-    }
-
-    Label::Label(const Widget2 *const widget,
-                 const std::string& caption) :
-        Widget(widget),
-        mCaption(caption),
-        mAlignment(Graphics::LEFT)
-    {
-        setWidth(getFont()->getWidth(caption));
-        setHeight(getFont()->getHeight());
-    }
-
-    const std::string &Label::getCaption() const
-    {
-        return mCaption;
-    }
-
-    void Label::setCaption(const std::string& caption)
-    {
-        mCaption = caption;
-    }
-
-    void Label::setAlignment(Graphics::Alignment alignment)
-    {
-        mAlignment = alignment;
-    }
-
-    Graphics::Alignment Label::getAlignment() const
-    {
-        return mAlignment;
-    }
-
-    void Label::draw(Graphics* graphics A_UNUSED)
-    {
-    }
-
-    void Label::adjustSize()
-    {
-    }
-}  // namespace gcn
diff --git a/src/gui/base/widgets/label.hpp b/src/gui/base/widgets/label.hpp
deleted file mode 100644
index fd0d54f8e..000000000
--- a/src/gui/base/widgets/label.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *  The ManaPlus Client
- *  Copyright (C) 2011-2014  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/>.
- */
-
-/*      _______   __   __   __   ______   __   __   _______   __   __
- *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
- *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
- *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
- *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
- * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
- * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
- *
- * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
- *
- *
- * Per Larsson a.k.a finalman
- * Olof Naessén a.k.a jansem/yakslem
- *
- * Visit: http://guichan.sourceforge.net
- *
- * License: (BSD)
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name of Guichan nor the names of its contributors may
- *    be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GCN_LABEL_HPP
-#define GCN_LABEL_HPP
-
-#include <string>
-
-#include "gui/widgets/widget.h"
-
-#include "render/graphics.h"
-
-namespace gcn
-{
-    /**
-     * Implementation of a label capable of displaying a caption.
-     */
-    class Label: public Widget
-    {
-    public:
-        /**
-         * Constructor.
-         */
-        explicit Label(const Widget2 *const widget);
-
-        /**
-         * Constructor. The label will be automatically resized
-         * to fit the caption.
-         *
-         * @param caption The caption of the label.
-         */
-        Label(const Widget2 *const widget,
-              const std::string& caption);
-
-        A_DELETE_COPY(Label)
-
-        /**
-         * Gets the caption of the label.
-         *
-         * @return The caption of the label.
-         * @see setCaption
-         */
-        const std::string &getCaption() const;
-
-        /**
-         * Sets the caption of the label. It's advisable to call
-         * adjustSize after setting of the caption to adjust the
-         * label's size to fit the caption.
-         *
-         * @param caption The caption of the label.
-         * @see getCaption, adjustSize
-         */
-        void setCaption(const std::string& caption);
-
-        /**
-         * Sets the alignment of the caption. The alignment is relative
-         * to the center of the label.
-         *
-         * @param alignemnt The alignment of the caption of the label.
-         * @see getAlignment, Graphics
-         */
-        void setAlignment(Graphics::Alignment alignment);
-
-        /**
-         * Gets the alignment of the caption. The alignment is relative to
-         * the center of the label.
-         *
-         * @return The alignment of caption of the label.
-         * @see setAlignmentm Graphics
-         */
-        Graphics::Alignment getAlignment() const;
-
-        /**
-         * Adjusts the label's size to fit the caption.
-         */
-        void adjustSize();
-
-
-        // Inherited from Widget
-
-        virtual void draw(Graphics* graphics);
-
-    protected:
-        /**
-         * Holds the caption of the label.
-         */
-        std::string mCaption;
-
-        /**
-         * Holds the alignment of the caption.
-         */
-        Graphics::Alignment mAlignment;
-    };
-}  // namespace gcn
-
-#endif  // end GCN_LABEL_HPP
diff --git a/src/gui/widgets/label.cpp b/src/gui/widgets/label.cpp
index 56c949964..64dce1a84 100644
--- a/src/gui/widgets/label.cpp
+++ b/src/gui/widgets/label.cpp
@@ -19,6 +19,49 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/*      _______   __   __   __   ______   __   __   _______   __   __
+ *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
+ *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
+ *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
+ *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
+ * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
+ * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
+ *
+ * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
+ *
+ *
+ * Per Larsson a.k.a finalman
+ * Olof Naessén a.k.a jansem/yakslem
+ *
+ * Visit: http://guichan.sourceforge.net
+ *
+ * License: (BSD)
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name of Guichan nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 #include "gui/widgets/label.h"
 
 #include "gui/font.h"
@@ -30,7 +73,9 @@ Skin *Label::mSkin = nullptr;
 int Label::mInstances = 0;
 
 Label::Label(const Widget2 *const widget) :
-    gcn::Label(widget),
+    Widget(widget),
+    mCaption(),
+    mAlignment(Graphics::LEFT),
     mPadding(0)
 {
     init();
@@ -38,9 +83,17 @@ Label::Label(const Widget2 *const widget) :
 
 Label::Label(const Widget2 *const widget,
              const std::string &caption) :
-    gcn::Label(widget, caption),
+    Widget(widget),
+    mCaption(caption),
+    mAlignment(Graphics::LEFT),
     mPadding(0)
 {
+    Font *const font = getFont();
+    if (font)
+    {
+        setWidth(font->getWidth(caption));
+        setHeight(font->getHeight());
+    }
     init();
 }
 
diff --git a/src/gui/widgets/label.h b/src/gui/widgets/label.h
index 616f6cc79..d205ed77b 100644
--- a/src/gui/widgets/label.h
+++ b/src/gui/widgets/label.h
@@ -19,10 +19,53 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/*      _______   __   __   __   ______   __   __   _______   __   __
+ *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
+ *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
+ *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
+ *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
+ * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
+ * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
+ *
+ * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson
+ *
+ *
+ * Per Larsson a.k.a finalman
+ * Olof Naessén a.k.a jansem/yakslem
+ *
+ * Visit: http://guichan.sourceforge.net
+ *
+ * License: (BSD)
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name of Guichan nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 #ifndef GUI_WIDGETS_LABEL_H
 #define GUI_WIDGETS_LABEL_H
 
-#include "gui/base/widgets/label.hpp"
+#include "gui/widgets/widget.h"
 
 #include "localconsts.h"
 
@@ -34,7 +77,7 @@ class Skin;
  *
  * \ingroup GUI
  */
-class Label final : public gcn::Label
+class Label final : public Widget
 {
     public:
         /**
@@ -69,11 +112,61 @@ class Label final : public gcn::Label
 
         void resizeTo(const int maxSize, const int minSize);
 
+        /**
+         * Gets the caption of the label.
+         *
+         * @return The caption of the label.
+         * @see setCaption
+         */
+        const std::string &getCaption() const
+        { return mCaption; }
+
+        /**
+         * Sets the caption of the label. It's advisable to call
+         * adjustSize after setting of the caption to adjust the
+         * label's size to fit the caption.
+         *
+         * @param caption The caption of the label.
+         * @see getCaption, adjustSize
+         */
+        void setCaption(const std::string& caption)
+        { mCaption = caption; }
+
+        /**
+         * Sets the alignment of the caption. The alignment is relative
+         * to the center of the label.
+         *
+         * @param alignemnt The alignment of the caption of the label.
+         * @see getAlignment, Graphics
+         */
+        void setAlignment(Graphics::Alignment alignment)
+        { mAlignment = alignment; }
+
+        /**
+         * Gets the alignment of the caption. The alignment is relative to
+         * the center of the label.
+         *
+         * @return The alignment of caption of the label.
+         * @see setAlignmentm Graphics
+         */
+        Graphics::Alignment getAlignment() const
+        { return mAlignment; }
+
         static Skin *mSkin;
 
         static int mInstances;
 
     private:
+        /**
+         * Holds the caption of the label.
+         */
+        std::string mCaption;
+
+        /**
+         * Holds the alignment of the caption.
+         */
+        Graphics::Alignment mAlignment;
+
         int mPadding;
 };
 
-- 
cgit v1.2.3-70-g09d2