absorb BufferStatusPane logic into BufferPane
This commit is contained in:
parent
e6501ec4fc
commit
301fbf09f1
@ -14,7 +14,7 @@ void BufferPane::resize(int width, int height)
|
|||||||
{
|
{
|
||||||
Pane::resize(width, height);
|
Pane::resize(width, height);
|
||||||
m_columns = std::max(1, m_width / m_window->font()->get_advance());
|
m_columns = std::max(1, m_width / m_window->font()->get_advance());
|
||||||
m_rows = std::max(1, m_height / m_window->font()->get_line_height());
|
m_rows = std::max(1, (m_height - m_window->font()->get_line_height() - 1) / m_window->font()->get_line_height());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferPane::walk_line(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback)
|
void BufferPane::walk_line(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback)
|
||||||
@ -208,6 +208,7 @@ void BufferPane::draw()
|
|||||||
{
|
{
|
||||||
draw_cursor(col_x(0), row_y(0), m_buffer->insert_mode());
|
draw_cursor(col_x(0), row_y(0), m_buffer->insert_mode());
|
||||||
}
|
}
|
||||||
|
draw_status_bar();
|
||||||
}
|
}
|
||||||
|
|
||||||
int BufferPane::draw_buffer_line(int screen_row, const Buffer::Iterator & start_of_line)
|
int BufferPane::draw_buffer_line(int screen_row, const Buffer::Iterator & start_of_line)
|
||||||
@ -466,3 +467,30 @@ void BufferPane::forward_to_column(int column, bool allow_eol)
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BufferPane::draw_status_bar()
|
||||||
|
{
|
||||||
|
m_window->gl()->draw_rect(win_x(0), win_y(m_window->font()->get_line_height()), m_width, 1, 0.5, 0.5, 0.5, 1.0);
|
||||||
|
m_window->gl()->draw_rect(win_x(0), win_y(0), m_width, m_window->font()->get_line_height(), 0.0, 0.0, 0.0, 1.0);
|
||||||
|
char cursor_position[20];
|
||||||
|
sprintf(cursor_position, "%zu, %zu", display_line(), display_column());
|
||||||
|
int cursor_position_length = strlen(cursor_position);
|
||||||
|
int x = m_width - m_window->font()->get_advance() * cursor_position_length;
|
||||||
|
m_window->gl()->draw_rect(win_x(x - 2), win_y(0), 1, m_window->font()->get_line_height(), 0.5, 0.5, 0.5, 1.0);
|
||||||
|
std::string filename = m_buffer->filename();
|
||||||
|
if (filename == "")
|
||||||
|
{
|
||||||
|
filename = "[No Name]";
|
||||||
|
}
|
||||||
|
int filename_x = std::min(0, x - 3 - (int)filename.size() * m_window->font()->get_advance());
|
||||||
|
for (int i = 0; i < cursor_position_length; i++)
|
||||||
|
{
|
||||||
|
m_window->gl()->draw_character(win_x(x), win_y(0), cursor_position[i], *m_window->font());
|
||||||
|
x += m_window->font()->get_advance();
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < filename.size(); i++)
|
||||||
|
{
|
||||||
|
m_window->gl()->draw_character(win_x(filename_x), win_y(0), filename[i], *m_window->font());
|
||||||
|
filename_x += m_window->font()->get_advance();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -15,9 +15,6 @@ public:
|
|||||||
void resize(int width, int height) override;
|
void resize(int width, int height) override;
|
||||||
void draw();
|
void draw();
|
||||||
void handle_key(uint32_t keyval);
|
void handle_key(uint32_t keyval);
|
||||||
size_t display_line() const { return m_iterator->line() + 1u; }
|
|
||||||
size_t display_column() const;
|
|
||||||
std::shared_ptr<Buffer> buffer() const { return m_buffer; }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum class CursorMovement : uint8_t
|
enum class CursorMovement : uint8_t
|
||||||
@ -55,6 +52,9 @@ protected:
|
|||||||
}
|
}
|
||||||
void cursor_move(CursorMovement which);
|
void cursor_move(CursorMovement which);
|
||||||
void forward_to_column(int column, bool allow_eol);
|
void forward_to_column(int column, bool allow_eol);
|
||||||
|
size_t display_line() const { return m_iterator->line() + 1u; }
|
||||||
|
size_t display_column() const;
|
||||||
|
void draw_status_bar();
|
||||||
|
|
||||||
Window * m_window;
|
Window * m_window;
|
||||||
std::shared_ptr<Buffer> m_buffer;
|
std::shared_ptr<Buffer> m_buffer;
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
#include "BufferStatusPane.h"
|
|
||||||
|
|
||||||
void BufferStatusPane::draw()
|
|
||||||
{
|
|
||||||
m_gl->draw_rect(win_x(0), win_y(m_font->get_line_height()), m_width, 1, 0.5, 0.5, 0.5, 1.0);
|
|
||||||
m_gl->draw_rect(win_x(0), win_y(0), m_width, m_font->get_line_height(), 0.0, 0.0, 0.0, 1.0);
|
|
||||||
char cursor_position[20];
|
|
||||||
sprintf(cursor_position, "%zu, %zu", m_buffer_pane->display_line(), m_buffer_pane->display_column());
|
|
||||||
int cursor_position_length = strlen(cursor_position);
|
|
||||||
int x = m_width - m_font->get_advance() * cursor_position_length;
|
|
||||||
m_gl->draw_rect(win_x(x - 2), win_y(0), 1, m_height, 0.5, 0.5, 0.5, 1.0);
|
|
||||||
std::string filename = m_buffer_pane->buffer()->filename();
|
|
||||||
if (filename == "")
|
|
||||||
{
|
|
||||||
filename = "[No Name]";
|
|
||||||
}
|
|
||||||
int filename_x = std::min(0, x - 3 - (int)filename.size() * m_font->get_advance());
|
|
||||||
for (int i = 0; i < cursor_position_length; i++)
|
|
||||||
{
|
|
||||||
m_gl->draw_character(win_x(x), win_y(0), cursor_position[i], *m_font);
|
|
||||||
x += m_font->get_advance();
|
|
||||||
}
|
|
||||||
for (size_t i = 0; i < filename.size(); i++)
|
|
||||||
{
|
|
||||||
m_gl->draw_character(win_x(filename_x), win_y(0), filename[i], *m_font);
|
|
||||||
filename_x += m_font->get_advance();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
#ifndef BUFFERSTATUSPANE
|
|
||||||
#define BUFFERSTATUSPANE
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "BufferPane.h"
|
|
||||||
|
|
||||||
class BufferStatusPane : public Pane
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
BufferStatusPane(std::shared_ptr<BufferPane> buffer_pane,
|
|
||||||
std::shared_ptr<Font> font,
|
|
||||||
std::shared_ptr<GL> gl)
|
|
||||||
: m_buffer_pane(buffer_pane), m_font(font), m_gl(gl)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void draw();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
std::shared_ptr<BufferPane> m_buffer_pane;
|
|
||||||
std::shared_ptr<Font> m_font;
|
|
||||||
std::shared_ptr<GL> m_gl;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -2,7 +2,6 @@
|
|||||||
#include "Window.h"
|
#include "Window.h"
|
||||||
#include "Runtime.h"
|
#include "Runtime.h"
|
||||||
#include "BufferPane.h"
|
#include "BufferPane.h"
|
||||||
#include "BufferStatusPane.h"
|
|
||||||
|
|
||||||
#define INITIAL_WIDTH 800
|
#define INITIAL_WIDTH 800
|
||||||
#define INITIAL_HEIGHT 800
|
#define INITIAL_HEIGHT 800
|
||||||
@ -122,7 +121,6 @@ bool Window::create(std::shared_ptr<Buffer> buffer)
|
|||||||
glClearColor (0.0, 0.0, 0.0, 0.0);
|
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||||
|
|
||||||
m_buffer_pane = std::make_shared<BufferPane>(this, buffer);
|
m_buffer_pane = std::make_shared<BufferPane>(this, buffer);
|
||||||
m_buffer_status_pane = std::make_shared<BufferStatusPane>(m_buffer_pane, m_font, m_gl);
|
|
||||||
|
|
||||||
resize();
|
resize();
|
||||||
|
|
||||||
@ -243,11 +241,8 @@ void Window::resize()
|
|||||||
SDL_GetWindowSize(m_window, &m_width, &m_height);
|
SDL_GetWindowSize(m_window, &m_width, &m_height);
|
||||||
glViewport(0, 0, m_width, m_height);
|
glViewport(0, 0, m_width, m_height);
|
||||||
m_gl->resize(m_width, m_height);
|
m_gl->resize(m_width, m_height);
|
||||||
int buffer_status_pane_height = m_font->get_line_height() + 1;
|
m_buffer_pane->move(0, 0);
|
||||||
m_buffer_pane->move(0, buffer_status_pane_height);
|
m_buffer_pane->resize(m_width, m_height);
|
||||||
m_buffer_pane->resize(m_width, m_height - buffer_status_pane_height);
|
|
||||||
m_buffer_status_pane->move(0, 0);
|
|
||||||
m_buffer_status_pane->resize(m_width, buffer_status_pane_height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::redraw()
|
void Window::redraw()
|
||||||
@ -255,7 +250,6 @@ void Window::redraw()
|
|||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
m_buffer_pane->draw();
|
m_buffer_pane->draw();
|
||||||
m_buffer_status_pane->draw();
|
|
||||||
|
|
||||||
SDL_GL_SwapWindow(m_window);
|
SDL_GL_SwapWindow(m_window);
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,6 @@ protected:
|
|||||||
std::shared_ptr<GL> m_gl;
|
std::shared_ptr<GL> m_gl;
|
||||||
|
|
||||||
std::shared_ptr<BufferPane> m_buffer_pane;
|
std::shared_ptr<BufferPane> m_buffer_pane;
|
||||||
std::shared_ptr<BufferStatusPane> m_buffer_status_pane;
|
|
||||||
|
|
||||||
Uint16 m_keymod;
|
Uint16 m_keymod;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user