The Pedigree Project 0.1
Scrollable.h
1/*
2 * Copyright (c) 2008-2014, Pedigree Developers
3 *
4 * Please see the CONTRIB file in the root of the source tree for a full
5 * list of contributors.
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20#ifndef SCROLLABLE_H
21#define SCROLLABLE_H
22
23#include "pedigree/kernel/debugger/DebuggerIO.h"
24#include "pedigree/kernel/processor/types.h"
25
30 public:
31 Scrollable();
32
33 void move(size_t x, size_t y);
34 void resize(size_t width, size_t height);
35 void scroll(ssize_t lines);
36 void scrollTo(size_t absolute);
37 void scrollHorizontal(ssize_t columns);
38 void horizontalScrollTo(size_t absolute);
39 void refresh(DebuggerIO* pScreen);
40 void setScrollKeys(char up, char down);
41 ssize_t getLine();
42
43 void centreOn(size_t line);
44
45 size_t height() const;
46 size_t width() const;
47
48 virtual const char* getLine1(size_t index, DebuggerIO::Colour& colour,
49 DebuggerIO::Colour& bgColour) = 0;
50 virtual const char* getLine2(size_t index, size_t& colOffset, DebuggerIO::Colour& colour,
51 DebuggerIO::Colour& bgColour) = 0;
52 virtual size_t getLineCount() = 0;
53 virtual size_t getContentWidth();
54 virtual ~Scrollable();
55
56 protected:
57 size_t m_x;
58 size_t m_y;
59 size_t m_width;
60 size_t m_height;
61 ssize_t m_line;
62 size_t m_column;
63 char m_ScrollUp;
64 char m_ScrollDown;
65};
66
69#endif