Running on Linux again and small clean up.

This commit is contained in:
jmsgrogan 2021-03-06 16:02:13 -05:00
parent 683ba5447f
commit 2bde5567be
24 changed files with 113 additions and 60 deletions

View file

@ -1,8 +1,8 @@
#include "GuiApplication.h" #include "GuiApplication.h"
#include "Widget.h" #include "Widget.h"
//#include "XcbInterface.h" #include "XcbInterface.h"
//#include "XcbKeyboard.h" #include "XcbKeyboard.h"
#include "Window.h" #include "Window.h"
#include "TextElement.h" #include "TextElement.h"
#include "WindowManager.h" #include "WindowManager.h"
@ -75,18 +75,18 @@ void GuiApplication::Run()
auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow(); auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow();
SetUpWidget(); SetUpWidget();
//mDesktopManager->SetKeyboard(XcbKeyboard::Create()); mDesktopManager->SetKeyboard(XcbKeyboard::Create());
//bool useOpenGl = false; bool useOpenGl = false;
//XcbInterface window_interface; XcbInterface window_interface;
//window_interface.SetUseOpenGl(useOpenGl); window_interface.SetUseOpenGl(useOpenGl);
//window_interface.Initialize(); window_interface.Initialize();
//window_interface.AddWindow(mainWindow); window_interface.AddWindow(mainWindow);
//window_interface.ShowWindow(mainWindow); window_interface.ShowWindow(mainWindow);
//if(useOpenGl) if(useOpenGl)
//{ {
// window_interface.CreateOpenGlDrawable(mainWindow); window_interface.CreateOpenGlDrawable(mainWindow);
//} }
//window_interface.Loop(mDesktopManager.get()); window_interface.Loop(mDesktopManager.get());
//window_interface.ShutDown(); window_interface.ShutDown();
} }

View file

@ -1,5 +1,7 @@
#include "StatusBar.h" #include "StatusBar.h"
#include "Color.h"
StatusBar::StatusBar() StatusBar::StatusBar()
{ {
SetBackgroundColor(Color::Create(200, 200, 200)); SetBackgroundColor(Color::Create(200, 200, 200));

View file

@ -1,5 +1,7 @@
#include "TopBar.h" #include "TopBar.h"
#include "Color.h"
TopBar::TopBar() TopBar::TopBar()
{ {
SetBackgroundColor(Color::Create(50, 50, 50)); SetBackgroundColor(Color::Create(50, 50, 50));

View file

@ -1,5 +1,7 @@
#include "AudioEditorView.h" #include "AudioEditorView.h"
#include "Label.h" #include "Label.h"
#include "Color.h"
AudioEditorView::AudioEditorView() AudioEditorView::AudioEditorView()
{ {

View file

@ -1,5 +1,7 @@
#include "ImageEditorView.h" #include "ImageEditorView.h"
#include "Label.h" #include "Label.h"
#include "Color.h"
ImageEditorView::ImageEditorView() ImageEditorView::ImageEditorView()
{ {

View file

@ -1,5 +1,7 @@
#include "WebClientView.h" #include "WebClientView.h"
#include "Label.h" #include "Label.h"
#include "Color.h"
WebClientView::WebClientView() WebClientView::WebClientView()
{ {

View file

@ -41,7 +41,7 @@ void FileLogger::LogLine(const std::string& logType, const std::string& line, co
#ifdef WIN32 #ifdef WIN32
gmtime_s(&time_buf, &t); gmtime_s(&time_buf, &t);
#else #else
std::gmtime_s(&t, &time_buf); gmtime_r(&t, &time_buf);
#endif #endif
mFileStream << logType << "|" << std::put_time(&time_buf, "%T") << "|" << cleanedFileName << "::" << functionName << "::" << lineNumber << "|" << line << std::endl; mFileStream << logType << "|" << std::put_time(&time_buf, "%T") << "|" << cleanedFileName << "::" << functionName << "::" << lineNumber << "|" << line << std::endl;
} }

View file

@ -1,8 +1,7 @@
list(APPEND database_LIB_INCLUDES list(APPEND database_LIB_INCLUDES
Database.cpp Database.cpp
DatabaseManager.cpp DatabaseManager.cpp
database_interfaces/SqliteInterface.cpp database_interfaces/SqliteInterface.cpp)
${SQLite3_INCLUDE_DIR}/sqlite3.c)
add_library(database SHARED ${database_LIB_INCLUDES}) add_library(database SHARED ${database_LIB_INCLUDES})
@ -13,3 +12,5 @@ target_include_directories(database PUBLIC
) )
set_property(TARGET database PROPERTY FOLDER src) set_property(TARGET database PROPERTY FOLDER src)
set_target_properties( database PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON ) set_target_properties( database PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
target_link_libraries(database PUBLIC ${SQLite3_LIBRARIES})

View file

@ -1,4 +1,10 @@
#include "Button.h" #include "Button.h"
#include "TextElement.h"
#include "GeometryElement.h"
#include "VisualLayer.h"
#include "MouseEvent.h"
#include <iostream> #include <iostream>
Button::Button() Button::Button()

View file

@ -1,7 +1,13 @@
#pragma once #pragma once
#include "Widget.h" #include "Widget.h"
#include "Color.h"
#include <functional> #include <functional>
#include <string>
class PaintEvent;
class MouseEvent;
class Button : public Widget class Button : public Widget
{ {

View file

@ -1,5 +1,8 @@
#include "Label.h" #include "Label.h"
#include "TextElement.h" #include "TextElement.h"
#include "GeometryElement.h"
#include "VisualLayer.h"
Label::Label() Label::Label()
: Widget(), : Widget(),

View file

@ -2,6 +2,8 @@
#include "Widget.h" #include "Widget.h"
#include <string>
class Label : public Widget class Label : public Widget
{ {
private: private:

View file

@ -1,6 +1,10 @@
#include "TextBox.h" #include "TextBox.h"
#include "TextElement.h" #include "TextElement.h"
#include <string> #include "VisualLayer.h"
#include "GeometryElement.h"
#include "KeyboardEvent.h"
#include <sstream> #include <sstream>
TextBox::TextBox() TextBox::TextBox()

View file

@ -2,6 +2,8 @@
#include "Widget.h" #include "Widget.h"
#include <string>
class TextBox : public Widget class TextBox : public Widget
{ {
private: private:

View file

@ -1,6 +1,13 @@
#include "RectangleElement.h"
#include "Widget.h" #include "Widget.h"
#include "RectangleElement.h"
#include "MouseEvent.h"
#include "KeyboardEvent.h"
#include "PaintEvent.h"
#include "VisualLayer.h"
#include "TextElement.h"
#include "Color.h"
#include <algorithm> #include <algorithm>
Widget::Widget() Widget::Widget()

View file

@ -1,14 +1,16 @@
#pragma once #pragma once
#include "DiscretePoint.h"
#include <memory> #include <memory>
#include <vector> #include <vector>
#include "DiscretePoint.h" class MouseEvent;
#include "VisualLayer.h" class KeyboardEvent;
#include "PaintEvent.h" class PaintEvent;
#include "Color.h"
#include "MouseEvent.h" class VisualLayer;
#include "KeyboardEvent.h" class Color;
class Widget class Widget
{ {
@ -34,12 +36,12 @@ protected:
BoundedSize mSize; BoundedSize mSize;
BoundaryOffset mPadding; BoundaryOffset mPadding;
BoundaryOffset mMargin; BoundaryOffset mMargin;
std::vector<VisualLayerUPtr> mMyLayers; std::vector<std::unique_ptr<VisualLayer> > mMyLayers;
std::vector<VisualLayer*> mLayers; std::vector<VisualLayer*> mLayers;
std::vector<std::unique_ptr<Widget> > mChildren; std::vector<std::unique_ptr<Widget> > mChildren;
unsigned mBorderThickness; unsigned mBorderThickness;
ColorUPtr mBackgroundColor; std::unique_ptr<Color> mBackgroundColor;
ColorUPtr mBorderColor; std::unique_ptr<Color> mBorderColor;
bool mVisible; bool mVisible;
public: public:
@ -66,7 +68,7 @@ public:
bool Contains(const DiscretePoint& loc) const; bool Contains(const DiscretePoint& loc) const;
void SetBackgroundColor(ColorUPtr color); void SetBackgroundColor(std::unique_ptr<Color> color);
void SetBounds(unsigned width, unsigned height); void SetBounds(unsigned width, unsigned height);

View file

@ -1,9 +1,11 @@
#include "TextElement.h" #include "TextElement.h"
#include "Color.h"
TextElement::TextElement(const std::string& content, const DiscretePoint& loc) TextElement::TextElement(const std::string& content, const DiscretePoint& loc)
: mContent(content), : mContent(content),
mLocation(loc), mLocation(loc),
mFontLabel("7x14"), mFontLabel("fixed"),
mFillColor(Color::Create(255, 255, 255)), mFillColor(Color::Create(255, 255, 255)),
mStrokeColor(Color::Create(0, 0, 0)) mStrokeColor(Color::Create(0, 0, 0))
{ {

View file

@ -1,18 +1,19 @@
#pragma once #pragma once
#include "DiscretePoint.h"
#include <memory> #include <memory>
#include <string> #include <string>
#include "DiscretePoint.h" class Color;
#include "Color.h"
class TextElement class TextElement
{ {
std::string mContent; std::string mContent;
DiscretePoint mLocation; DiscretePoint mLocation;
std::string mFontLabel; std::string mFontLabel;
ColorUPtr mFillColor; std::unique_ptr<Color> mFillColor;
ColorUPtr mStrokeColor; std::unique_ptr<Color> mStrokeColor;
public: public:
@ -29,8 +30,8 @@ public:
std::string GetContent() const; std::string GetContent() const;
std::string GetFontLabel() const; std::string GetFontLabel() const;
void SetContent(const std::string& content); void SetContent(const std::string& content);
void SetFillColor(ColorUPtr color); void SetFillColor(std::unique_ptr<Color> color);
void SetStrokeColor(ColorUPtr color); void SetStrokeColor(std::unique_ptr<Color> color);
}; };
using TextElementUPtr = std::unique_ptr<TextElement>; using TextElementUPtr = std::unique_ptr<TextElement>;

View file

@ -1,5 +1,8 @@
#include "VisualLayer.h" #include "VisualLayer.h"
#include "GeometryElement.h"
#include "TextElement.h"
VisualLayer::VisualLayer() VisualLayer::VisualLayer()
: mShape(), : mShape(),
mText() mText()

View file

@ -1,13 +1,13 @@
#pragma once #pragma once
#include <memory> #include <memory>
#include "GeometryElement.h" class GeometryElement;
#include "TextElement.h" class TextElement;
class VisualLayer class VisualLayer
{ {
GeometryElementUPtr mShape; std::unique_ptr<GeometryElement> mShape;
TextElementUPtr mText; std::unique_ptr<TextElement> mText;
public: public:
@ -19,7 +19,7 @@ public:
TextElement* GetText() const; TextElement* GetText() const;
bool HasShape() const; bool HasShape() const;
bool HasText() const; bool HasText() const;
void SetShape(GeometryElementUPtr shape); void SetShape(std::unique_ptr<GeometryElement> shape);
void SetText(TextElementUPtr text); void SetText(std::unique_ptr<TextElement> text);
}; };
using VisualLayerUPtr = std::unique_ptr<VisualLayer>; using VisualLayerUPtr = std::unique_ptr<VisualLayer>;

View file

@ -11,22 +11,19 @@ list(APPEND windows_LIB_INCLUDES
managers/EventManager.cpp) managers/EventManager.cpp)
# add the library # add the library
add_library(windows SHARED ${windows_LIB_INCLUDES}) add_library(windows SHARED ${windows_LIB_INCLUDES} ${linux_INCLUDES})
target_include_directories(windows PUBLIC target_include_directories(windows PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/managers" "${CMAKE_CURRENT_SOURCE_DIR}/managers"
"${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces/x11" "${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces/x11"
"${PROJECT_SOURCE_DIR}/src/geometry" "${PROJECT_SOURCE_DIR}/src/geometry"
"${PROJECT_SOURCE_DIR}/src/graphics"
"${PROJECT_SOURCE_DIR}/src/ui_elements" "${PROJECT_SOURCE_DIR}/src/ui_elements"
"${PROJECT_SOURCE_DIR}/src/ui_elements/widgets" "${PROJECT_SOURCE_DIR}/src/ui_elements/widgets"
) )
list(APPEND linux_LIBS target_link_libraries(windows PUBLIC X11 X11-xcb xcb core geometry graphics ui_elements)
managers/WindowManager.cpp
managers/DesktopManager.cpp
managers/EventManager.cpp)
target_link_libraries(windows PUBLIC core geometry ui_elements)
set_property(TARGET windows PROPERTY FOLDER src) set_property(TARGET windows PROPERTY FOLDER src)
set_target_properties( windows PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON ) set_target_properties( windows PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )

View file

@ -1,6 +1,9 @@
#include "XcbLayerInterface.h" #include "XcbLayerInterface.h"
#include "XcbTextInterface.h" #include "XcbTextInterface.h"
#include "RectangleElement.h" #include "RectangleElement.h"
#include "VisualLayer.h"
#include <memory> #include <memory>
uint32_t XcbLayerInterface::GetColor(const Color* color) uint32_t XcbLayerInterface::GetColor(const Color* color)
@ -36,10 +39,10 @@ void XcbLayerInterface::AddLayer(xcb_connection_t* connection,
auto shape = layer->GetShape(); auto shape = layer->GetShape();
if(shape->GetType() == GeometryElement::Type::Rectangle) if(shape->GetType() == GeometryElement::Type::Rectangle)
{ {
auto rectangle = dynamic_cast<RectangleElement*>(shape); const auto rectangle = dynamic_cast<RectangleElement*>(shape);
Pixel loc = rectangle->GetLocation(); const auto loc = rectangle->GetLocation();
auto width = static_cast<uint16_t>(rectangle->GetWidth()); const auto width = static_cast<uint16_t>(rectangle->GetWidth());
auto height = static_cast<uint16_t>(rectangle->GetHeight()); const auto height = static_cast<uint16_t>(rectangle->GetHeight());
xcb_rectangle_t rectangles[] = { { static_cast<int16_t>(loc.GetX()), xcb_rectangle_t rectangles[] = { { static_cast<int16_t>(loc.GetX()),
static_cast<int16_t>(loc.GetY()), width, height} }; static_cast<int16_t>(loc.GetY()), width, height} };
XcbLayerInterface::ModifyGcColor(connection, gc, rectangle->GetFillColor()); XcbLayerInterface::ModifyGcColor(connection, gc, rectangle->GetFillColor());

View file

@ -1,8 +1,9 @@
#pragma once #pragma once
#include <xcb/xcb.h> #include <xcb/xcb.h>
#include "VisualLayer.h"
#include "Color.h" class Color;
class VisualLayer;
class XcbLayerInterface class XcbLayerInterface
{ {

View file

@ -1,12 +1,15 @@
#include "XcbTextInterface.h" #include "XcbTextInterface.h"
#include "XcbLayerInterface.h" #include "XcbLayerInterface.h"
#include "VisualLayer.h"
#include "Color.h"
#include "RectangleElement.h"
#include <string.h> #include <string.h>
xcb_gcontext_t XcbTextInterface::GetFontGC(xcb_connection_t *connection, xcb_gcontext_t XcbTextInterface::GetFontGC(xcb_connection_t *connection,
xcb_screen_t *screen, xcb_window_t window, const char*font_name, xcb_screen_t *screen, xcb_window_t window, const char* font_name,
const TextElement* textElement) const TextElement* textElement)
{ {
/* get font */
xcb_font_t font = xcb_generate_id(connection); xcb_font_t font = xcb_generate_id(connection);
xcb_open_font(connection, font, strlen(font_name), font_name); xcb_open_font(connection, font, strlen(font_name), font_name);
@ -28,11 +31,11 @@ void XcbTextInterface::AddTextElement(xcb_connection_t* connection,
const TextElement* textElement) const TextElement* textElement)
{ {
/* get graphics context */ /* get graphics context */
xcb_gcontext_t gc = XcbTextInterface::GetFontGC(connection, screen, window, auto gc = XcbTextInterface::GetFontGC(connection, screen, window,
textElement->GetFontLabel().c_str(), textElement); textElement->GetFontLabel().c_str(), textElement);
/* draw the text */ /* draw the text */
std::string content = textElement->GetContent(); const auto content = textElement->GetContent();
Pixel loc = textElement->GetLocation(); Pixel loc = textElement->GetLocation();
xcb_image_text_8(connection, content.length(), window, gc, xcb_image_text_8(connection, content.length(), window, gc,
loc.GetX(), loc.GetY(), content.c_str()); loc.GetX(), loc.GetY(), content.c_str());