Quellcode durchsuchen

PixelPaint: Rename Layer::create_foo() => Layer::try_create_foo()

Andreas Kling vor 4 Jahren
Ursprung
Commit
9c5de113b1

+ 13 - 8
Userland/Applications/PixelPaint/Image.cpp

@@ -55,15 +55,14 @@ void Image::paint_into(GUI::Painter& painter, Gfx::IntRect const& dest_rect)
 RefPtr<Image> Image::try_create_from_bitmap(RefPtr<Gfx::Bitmap> bitmap)
 RefPtr<Image> Image::try_create_from_bitmap(RefPtr<Gfx::Bitmap> bitmap)
 {
 {
     auto image = try_create_with_size({ bitmap->width(), bitmap->height() });
     auto image = try_create_with_size({ bitmap->width(), bitmap->height() });
-    if (image.is_null())
+    if (!image)
         return nullptr;
         return nullptr;
 
 
-    auto layer = Layer::create_with_bitmap(*image, *bitmap, "Background");
-    if (layer.is_null())
+    auto layer = Layer::try_create_with_bitmap(*image, *bitmap, "Background");
+    if (!layer)
         return nullptr;
         return nullptr;
 
 
     image->add_layer(layer.release_nonnull());
     image->add_layer(layer.release_nonnull());
-
     return image;
     return image;
 }
 }
 
 
@@ -89,7 +88,8 @@ RefPtr<Image> Image::try_create_from_pixel_paint_file(String const& file_path)
         auto width = json_layer_object.get("width").to_i32();
         auto width = json_layer_object.get("width").to_i32();
         auto height = json_layer_object.get("height").to_i32();
         auto height = json_layer_object.get("height").to_i32();
         auto name = json_layer_object.get("name").as_string();
         auto name = json_layer_object.get("name").as_string();
-        auto layer = Layer::create_with_size(*image, { width, height }, name);
+        auto layer = Layer::try_create_with_size(*image, { width, height }, name);
+        VERIFY(layer);
         layer->set_location({ json_layer_object.get("locationx").to_i32(), json_layer_object.get("locationy").to_i32() });
         layer->set_location({ json_layer_object.get("locationx").to_i32(), json_layer_object.get("locationy").to_i32() });
         layer->set_opacity_percent(json_layer_object.get("opacity_percent").to_i32());
         layer->set_opacity_percent(json_layer_object.get("opacity_percent").to_i32());
         layer->set_visible(json_layer_object.get("visible").as_bool());
         layer->set_visible(json_layer_object.get("visible").as_bool());
@@ -188,8 +188,12 @@ RefPtr<Image> Image::take_snapshot() const
     auto snapshot = try_create_with_size(m_size);
     auto snapshot = try_create_with_size(m_size);
     if (!snapshot)
     if (!snapshot)
         return nullptr;
         return nullptr;
-    for (const auto& layer : m_layers)
-        snapshot->add_layer(*Layer::create_snapshot(*snapshot, layer));
+    for (const auto& layer : m_layers) {
+        auto layer_snapshot = Layer::try_create_snapshot(*snapshot, layer);
+        if (!layer_snapshot)
+            return nullptr;
+        snapshot->add_layer(layer_snapshot.release_nonnull());
+    }
     return snapshot;
     return snapshot;
 }
 }
 
 
@@ -198,7 +202,8 @@ void Image::restore_snapshot(Image const& snapshot)
     m_layers.clear();
     m_layers.clear();
     select_layer(nullptr);
     select_layer(nullptr);
     for (const auto& snapshot_layer : snapshot.m_layers) {
     for (const auto& snapshot_layer : snapshot.m_layers) {
-        auto layer = Layer::create_snapshot(*this, snapshot_layer);
+        auto layer = Layer::try_create_snapshot(*this, snapshot_layer);
+        VERIFY(layer);
         if (layer->is_selected())
         if (layer->is_selected())
             select_layer(layer.ptr());
             select_layer(layer.ptr());
         add_layer(*layer);
         add_layer(*layer);

+ 5 - 5
Userland/Applications/PixelPaint/Layer.cpp

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
  *
  *
  * SPDX-License-Identifier: BSD-2-Clause
  * SPDX-License-Identifier: BSD-2-Clause
  */
  */
@@ -10,7 +10,7 @@
 
 
 namespace PixelPaint {
 namespace PixelPaint {
 
 
-RefPtr<Layer> Layer::create_with_size(Image& image, Gfx::IntSize const& size, String const& name)
+RefPtr<Layer> Layer::try_create_with_size(Image& image, Gfx::IntSize const& size, String const& name)
 {
 {
     if (size.is_empty())
     if (size.is_empty())
         return nullptr;
         return nullptr;
@@ -21,7 +21,7 @@ RefPtr<Layer> Layer::create_with_size(Image& image, Gfx::IntSize const& size, St
     return adopt_ref(*new Layer(image, size, name));
     return adopt_ref(*new Layer(image, size, name));
 }
 }
 
 
-RefPtr<Layer> Layer::create_with_bitmap(Image& image, Gfx::Bitmap const& bitmap, String const& name)
+RefPtr<Layer> Layer::try_create_with_bitmap(Image& image, Gfx::Bitmap const& bitmap, String const& name)
 {
 {
     if (bitmap.size().is_empty())
     if (bitmap.size().is_empty())
         return nullptr;
         return nullptr;
@@ -32,9 +32,9 @@ RefPtr<Layer> Layer::create_with_bitmap(Image& image, Gfx::Bitmap const& bitmap,
     return adopt_ref(*new Layer(image, bitmap, name));
     return adopt_ref(*new Layer(image, bitmap, name));
 }
 }
 
 
-RefPtr<Layer> Layer::create_snapshot(Image& image, Layer const& layer)
+RefPtr<Layer> Layer::try_create_snapshot(Image& image, Layer const& layer)
 {
 {
-    auto snapshot = create_with_bitmap(image, *layer.bitmap().clone(), layer.name());
+    auto snapshot = try_create_with_bitmap(image, *layer.bitmap().clone(), layer.name());
     /*
     /*
         We set these properties directly because calling the setters might 
         We set these properties directly because calling the setters might 
         notify the image of an update on the newly created layer, but this 
         notify the image of an update on the newly created layer, but this 

+ 4 - 4
Userland/Applications/PixelPaint/Layer.h

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
  *
  *
  * SPDX-License-Identifier: BSD-2-Clause
  * SPDX-License-Identifier: BSD-2-Clause
  */
  */
@@ -24,9 +24,9 @@ class Layer
     AK_MAKE_NONMOVABLE(Layer);
     AK_MAKE_NONMOVABLE(Layer);
 
 
 public:
 public:
-    static RefPtr<Layer> create_with_size(Image&, Gfx::IntSize const&, String const& name);
-    static RefPtr<Layer> create_with_bitmap(Image&, Gfx::Bitmap const&, String const& name);
-    static RefPtr<Layer> create_snapshot(Image&, Layer const&);
+    static RefPtr<Layer> try_create_with_size(Image&, Gfx::IntSize const&, String const& name);
+    static RefPtr<Layer> try_create_with_bitmap(Image&, Gfx::Bitmap const&, String const& name);
+    static RefPtr<Layer> try_create_snapshot(Image&, Layer const&);
 
 
     ~Layer() { }
     ~Layer() { }
 
 

+ 7 - 4
Userland/Applications/PixelPaint/main.cpp

@@ -88,7 +88,8 @@ int main(int argc, char** argv)
             auto dialog = PixelPaint::CreateNewImageDialog::construct(window);
             auto dialog = PixelPaint::CreateNewImageDialog::construct(window);
             if (dialog->exec() == GUI::Dialog::ExecOK) {
             if (dialog->exec() == GUI::Dialog::ExecOK) {
                 auto image = PixelPaint::Image::try_create_with_size(dialog->image_size());
                 auto image = PixelPaint::Image::try_create_with_size(dialog->image_size());
-                auto bg_layer = PixelPaint::Layer::create_with_size(*image, image->size(), "Background");
+                auto bg_layer = PixelPaint::Layer::try_create_with_size(*image, image->size(), "Background");
+                VERIFY(bg_layer);
                 image->add_layer(*bg_layer);
                 image->add_layer(*bg_layer);
                 bg_layer->bitmap().fill(Color::White);
                 bg_layer->bitmap().fill(Color::White);
 
 
@@ -170,7 +171,8 @@ int main(int argc, char** argv)
         if (!bitmap)
         if (!bitmap)
             return;
             return;
 
 
-        auto layer = PixelPaint::Layer::create_with_bitmap(*image_editor.image(), *bitmap, "Pasted layer");
+        auto layer = PixelPaint::Layer::try_create_with_bitmap(*image_editor.image(), *bitmap, "Pasted layer");
+        VERIFY(layer);
         image_editor.image()->add_layer(layer.release_nonnull());
         image_editor.image()->add_layer(layer.release_nonnull());
     });
     });
     GUI::Clipboard::the().on_change = [&](auto& mime_type) {
     GUI::Clipboard::the().on_change = [&](auto& mime_type) {
@@ -228,7 +230,7 @@ int main(int argc, char** argv)
         "New &Layer...", { Mod_Ctrl | Mod_Shift, Key_N }, [&](auto&) {
         "New &Layer...", { Mod_Ctrl | Mod_Shift, Key_N }, [&](auto&) {
             auto dialog = PixelPaint::CreateNewLayerDialog::construct(image_editor.image()->size(), window);
             auto dialog = PixelPaint::CreateNewLayerDialog::construct(image_editor.image()->size(), window);
             if (dialog->exec() == GUI::Dialog::ExecOK) {
             if (dialog->exec() == GUI::Dialog::ExecOK) {
-                auto layer = PixelPaint::Layer::create_with_size(*image_editor.image(), dialog->layer_size(), dialog->layer_name());
+                auto layer = PixelPaint::Layer::try_create_with_size(*image_editor.image(), dialog->layer_size(), dialog->layer_name());
                 if (!layer) {
                 if (!layer) {
                     GUI::MessageBox::show_error(window, String::formatted("Unable to create layer with size {}", dialog->size().to_string()));
                     GUI::MessageBox::show_error(window, String::formatted("Unable to create layer with size {}", dialog->size().to_string()));
                     return;
                     return;
@@ -397,7 +399,8 @@ int main(int argc, char** argv)
     } else {
     } else {
         auto image = PixelPaint::Image::try_create_with_size({ 480, 360 });
         auto image = PixelPaint::Image::try_create_with_size({ 480, 360 });
 
 
-        auto bg_layer = PixelPaint::Layer::create_with_size(*image, image->size(), "Background");
+        auto bg_layer = PixelPaint::Layer::try_create_with_size(*image, image->size(), "Background");
+        VERIFY(bg_layer);
         image->add_layer(*bg_layer);
         image->add_layer(*bg_layer);
         bg_layer->bitmap().fill(Color::White);
         bg_layer->bitmap().fill(Color::White);