configure: require c++14 compatible compiler
[ncmpcpp.git] / src / scrollpad.h
blob8847972b3a414e847604db9f9140a1e66c66e1e4
1 /***************************************************************************
2 * Copyright (C) 2008-2014 by Andrzej Rybczak *
3 * electricityispower@gmail.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
21 #ifndef NCMPCPP_SCROLLPAD_H
22 #define NCMPCPP_SCROLLPAD_H
24 #include "window.h"
25 #include "strbuffer.h"
27 namespace NC {
29 /// Scrollpad is specialized window that holds large portions of text and
30 /// supports scrolling if the amount of it is bigger than the window area.
31 struct Scrollpad: public Window
33 Scrollpad() { }
35 Scrollpad(size_t startx, size_t starty, size_t width, size_t height,
36 const std::string &title, Color color, Border border);
38 // override a few Window functions
39 virtual void refresh() override;
40 virtual void scroll(Scroll where) override;
41 virtual void resize(size_t new_width, size_t new_height) override;
42 virtual void clear() override;
44 const std::string &buffer();
46 void flush();
47 void reset();
49 bool setProperties(Color begin, const std::string &s, Color end, size_t flags, size_t id = -2);
50 bool setProperties(Format begin, const std::string &s, Format end, size_t flags, size_t id = -2);
51 void removeProperties(size_t id = -2);
53 template <typename ItemT>
54 Scrollpad &operator<<(const ItemT &item)
56 m_buffer << item;
57 return *this;
60 private:
61 Buffer m_buffer;
63 size_t m_beginning;
64 size_t m_real_height;
69 #endif // NCMPCPP_SCROLLPAD_H