Added draw function to screens
This commit is contained in:
parent
5a0086c4ea
commit
db6dffb4ee
10 changed files with 46 additions and 13 deletions
|
|
@ -424,7 +424,7 @@ void ScreenshotTool::take_screenshot_svg(SkCanvas* canvas, bool transparentBackg
|
|||
screenshotDrawData.drawGrids = false;
|
||||
screenshotDrawData.isSVGRender = true;
|
||||
screenshotDrawData.refresh_draw_optimizing_values();
|
||||
drawP.world.main.draw(canvas, drawP.world.main.world, screenshotDrawData);
|
||||
drawP.world.main.draw_world(canvas, drawP.world.main.world, screenshotDrawData);
|
||||
}
|
||||
|
||||
void ScreenshotTool::take_screenshot_area_hw(const sk_sp<SkSurface>& surface, SkCanvas* canvas, void* fullImgRawData, const Vector2i& fullImageSize, const Vector2i& sectionImagePos, const Vector2i& sectionImageSize, const Vector2i& canvasSize, bool transparentBackground) {
|
||||
|
|
@ -455,7 +455,7 @@ void ScreenshotTool::take_screenshot_area_hw(const sk_sp<SkSurface>& surface, Sk
|
|||
screenshotDrawData.transparentBackground = transparentBackground;
|
||||
screenshotDrawData.drawGrids = controls.displayGrid;
|
||||
screenshotDrawData.refresh_draw_optimizing_values();
|
||||
drawP.world.main.draw(canvas, drawP.world.main.world, screenshotDrawData);
|
||||
drawP.world.main.draw_world(canvas, drawP.world.main.world, screenshotDrawData);
|
||||
|
||||
SkImageInfo aaImgInfo = SkImageInfo::Make(sectionImageSize.x(), sectionImageSize.y(), kRGBA_8888_SkColorType, kPremul_SkAlphaType);
|
||||
void* fullImgRawDataStartPt = (uint8_t*)fullImgRawData + 4 * (size_t)sectionImagePos.x() + 4 * (size_t)fullImageSize.x() * (size_t)sectionImagePos.y();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "MainProgram.hpp"
|
||||
#include "CustomEvents.hpp"
|
||||
#include "Screens/FileSelectScreen.hpp"
|
||||
#include "VersionConstants.hpp"
|
||||
#include <SDL3/SDL_render.h>
|
||||
#include <SDL3/SDL_video.h>
|
||||
|
|
@ -20,6 +21,7 @@
|
|||
#include <Helpers/Serializers.hpp>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include "Screens/DrawingProgramScreen.hpp"
|
||||
#include "Screens/FileSelectScreen.hpp"
|
||||
|
||||
#include <include/core/SkSurface.h>
|
||||
#ifdef USE_SKIA_BACKEND_GRAPHITE
|
||||
|
|
@ -216,13 +218,16 @@ void MainProgram::refresh_draw_surfaces() {
|
|||
}
|
||||
}
|
||||
|
||||
void MainProgram::draw(SkCanvas* canvas, std::shared_ptr<World> worldToDraw, const DrawData& drawData) {
|
||||
void MainProgram::draw_world(SkCanvas* canvas, std::shared_ptr<World> worldToDraw, const DrawData& drawData) {
|
||||
canvas->clear(drawData.transparentBackground ? SkColor4f{0.0f, 0.0f, 0.0f, 0.0f} : worldToDraw->canvasTheme.get_back_color());
|
||||
DrawData drawDataCopy = drawData;
|
||||
drawDataCopy.skiaAA = conf.antialiasing == GlobalConfig::AntiAliasing::SKIA;
|
||||
worldToDraw->draw(canvas, drawDataCopy);
|
||||
if(!drawData.takingScreenshot)
|
||||
g.draw(canvas, drawDataCopy.skiaAA);
|
||||
}
|
||||
|
||||
void MainProgram::draw(SkCanvas* canvas) {
|
||||
screen->draw(canvas);
|
||||
g.draw(canvas, conf.antialiasing == GlobalConfig::AntiAliasing::SKIA);
|
||||
}
|
||||
|
||||
sk_sp<SkSurface> MainProgram::create_native_surface(Vector2i resolution, bool isMSAA) {
|
||||
|
|
|
|||
|
|
@ -92,7 +92,8 @@ class MainProgram {
|
|||
|
||||
MainProgram();
|
||||
void update();
|
||||
void draw(SkCanvas* canvas, std::shared_ptr<World> worldToDraw, const DrawData& drawData);
|
||||
void draw_world(SkCanvas* canvas, std::shared_ptr<World> worldToDraw, const DrawData& drawData);
|
||||
void draw(SkCanvas* canvas);
|
||||
sk_sp<SkSurface> create_native_surface(Vector2i resolution, bool isMSAA);
|
||||
|
||||
bool setToQuit = false;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ void DrawingProgramScreen::update() {
|
|||
main.world->focus_update();
|
||||
}
|
||||
|
||||
void DrawingProgramScreen::draw(SkCanvas* canvas) {
|
||||
main.draw_world(canvas, main.world, main.world->drawData);
|
||||
}
|
||||
|
||||
void DrawingProgramScreen::gui_layout_run() {
|
||||
toolbar.layout_run();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ class DrawingProgramScreen : public Screen {
|
|||
public:
|
||||
DrawingProgramScreen(MainProgram& m);
|
||||
virtual void update() override;
|
||||
virtual void draw(SkCanvas* canvas) override;
|
||||
virtual void gui_layout_run() override;
|
||||
virtual bool app_close_requested() override;
|
||||
virtual void input_add_file_to_canvas_callback(const CustomEvents::AddFileToCanvasEvent& addFile) override;
|
||||
|
|
|
|||
|
|
@ -1 +1,20 @@
|
|||
#include "FileSelectScreen.hpp"
|
||||
#include "../MainProgram.hpp"
|
||||
#include "../GUIHolder.hpp"
|
||||
#include "../GUIStuff/ElementHelpers/TextLabelHelpers.hpp"
|
||||
|
||||
FileSelectScreen::FileSelectScreen(MainProgram& m): Screen(m) {}
|
||||
|
||||
void FileSelectScreen::gui_layout_run() {
|
||||
using namespace GUIStuff;
|
||||
using namespace ElementHelpers;
|
||||
CLAY_AUTO_ID({
|
||||
.layout = {}
|
||||
}) {
|
||||
text_label(main.g.gui, "File select screen");
|
||||
}
|
||||
}
|
||||
|
||||
void FileSelectScreen::draw(SkCanvas* canvas) {
|
||||
canvas->clear(SkColor4f{0.0f, 0.0f, 0.0f, 0.0f});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
#pragma once
|
||||
#include "Screen.hpp"
|
||||
|
||||
class FileSelectScreen {
|
||||
class FileSelectScreen : public Screen {
|
||||
public:
|
||||
FileSelectScreen();
|
||||
private:
|
||||
FileSelectScreen(MainProgram& m);
|
||||
virtual void gui_layout_run() override;
|
||||
virtual void draw(SkCanvas* canvas) override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ Screen::Screen(MainProgram& m):
|
|||
|
||||
void Screen::update() {}
|
||||
void Screen::gui_layout_run() {}
|
||||
bool Screen::app_close_requested() { return false; }
|
||||
bool Screen::app_close_requested() { return true; }
|
||||
void Screen::input_add_file_to_canvas_callback(const CustomEvents::AddFileToCanvasEvent& addFile) {}
|
||||
void Screen::input_open_infinipaint_file_callback(const CustomEvents::OpenInfiniPaintFileEvent& openFile) {}
|
||||
void Screen::input_paste_callback(const CustomEvents::PasteEvent& paste) {}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ class Screen {
|
|||
public:
|
||||
Screen(MainProgram& m);
|
||||
virtual void update();
|
||||
virtual void draw(SkCanvas* canvas) = 0;
|
||||
|
||||
virtual void gui_layout_run();
|
||||
virtual bool app_close_requested();
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@ void regular_draw(MainStruct& mS) {
|
|||
if(mS.m->window.intermediateSurfaceMSAA) {
|
||||
SkCanvas* intermediateCanvas = mS.m->window.intermediateSurfaceMSAA->getCanvas();
|
||||
intermediateCanvas->save();
|
||||
mS.m->draw(intermediateCanvas, mS.m->world, mS.m->world->drawData);
|
||||
mS.m->draw(intermediateCanvas);
|
||||
intermediateCanvas->restore();
|
||||
|
||||
#ifdef USE_BACKEND_VULKAN
|
||||
|
|
@ -568,11 +568,11 @@ void regular_draw(MainStruct& mS) {
|
|||
}
|
||||
else {
|
||||
#ifdef USE_BACKEND_VULKAN
|
||||
mS.m->draw(mS.vulkanWindowContext->getBackbufferSurface()->getCanvas(), mS.m->world, mS.m->world->drawData);
|
||||
mS.m->draw(mS.vulkanWindowContext->getBackbufferSurface()->getCanvas());
|
||||
mS.ctx->flushAndSubmit();
|
||||
mS.vulkanWindowContext->swapBuffers();
|
||||
#elif USE_BACKEND_OPENGL
|
||||
mS.m->draw(mS.canvas, mS.m->world, mS.m->world->drawData);
|
||||
mS.m->draw(mS.canvas);
|
||||
mS.ctx->flushAndSubmit();
|
||||
SDL_GL_SwapWindow(mS.window);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue