diff --git a/Applications/Welcome/BackgroundWidget.cpp b/Applications/Welcome/BackgroundWidget.cpp new file mode 100644 index 0000000000..6c19b56008 --- /dev/null +++ b/Applications/Welcome/BackgroundWidget.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2020, Andreas Kling + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BackgroundWidget.h" +#include +#include +#include + +BackgroundWidget::BackgroundWidget(GUI::Widget* parent) + : GUI::Frame(parent) +{ +} + +BackgroundWidget::~BackgroundWidget() +{ +} + +void BackgroundWidget::paint_event(GUI::PaintEvent& event) +{ + GUI::Frame::paint_event(event); + + GUI::Painter painter(*this); + painter.add_clip_rect(event.rect()); + painter.fill_rect_with_gradient(event.rect(), Color::from_rgb(0xccdddd), Color::from_rgb(0xdcdcde)); +} + +void BackgroundWidget::resize_event(GUI::ResizeEvent& event) +{ + GUI::Widget::resize_event(event); +} diff --git a/Applications/Welcome/BackgroundWidget.h b/Applications/Welcome/BackgroundWidget.h new file mode 100644 index 0000000000..92f71e1d9e --- /dev/null +++ b/Applications/Welcome/BackgroundWidget.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2020, Andreas Kling + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include + +class BackgroundWidget : public GUI::Frame { + C_OBJECT(BackgroundWidget) +public: + explicit BackgroundWidget(GUI::Widget* parent = nullptr); + virtual ~BackgroundWidget() override; + +private: + virtual void paint_event(GUI::PaintEvent&) override; + virtual void resize_event(GUI::ResizeEvent&) override; +}; diff --git a/Applications/Welcome/Makefile b/Applications/Welcome/Makefile index 0ad7d06820..585c582173 100644 --- a/Applications/Welcome/Makefile +++ b/Applications/Welcome/Makefile @@ -1,15 +1,10 @@ OBJS = \ main.o \ TextWidget.o \ - background.png.o + BackgroundWidget.o PROGRAM = Welcome LIB_DEPS = GUI Gfx IPC Core -.SUFFIXES: .png -%.png.o: %.png - @echo "LINK $<" - $(QUIET) $(LINK) --relocatable --format binary -m elf_$(ARCH) --output $@ $< - include ../../Makefile.common diff --git a/Applications/Welcome/background.png b/Applications/Welcome/background.png deleted file mode 100644 index 7078ce75c0..0000000000 Binary files a/Applications/Welcome/background.png and /dev/null differ diff --git a/Applications/Welcome/main.cpp b/Applications/Welcome/main.cpp index 3af84bdc2f..90e64aa4ef 100644 --- a/Applications/Welcome/main.cpp +++ b/Applications/Welcome/main.cpp @@ -34,13 +34,10 @@ #include #include #include -#include +#include "BackgroundWidget.h" #include "TextWidget.h" -extern const u8 _binary_background_png_start[]; -extern const u8 _binary_background_png_size; - struct ContentPage { String menu_name; String title; @@ -96,15 +93,13 @@ int main(int argc, char** argv) window->set_resizable(true); window->set_rect(window_rect); - auto background = GUI::Label::construct(); + auto background = BackgroundWidget::construct(); window->set_main_widget(background); - background->set_fill_with_background_color(true); + background->set_fill_with_background_color(false); background->set_layout(make()); - background->layout()->set_margins({ 8, 8, 8, 8 }); + background->layout()->set_margins({ 16, 8, 16, 8 }); background->layout()->set_spacing(8); - background->set_icon(Gfx::load_png_from_memory((const u8*)&_binary_background_png_start, (size_t)&_binary_background_png_size)); background->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fill); - background->set_preferred_size(background->icon()->size()); // // header