mirror of https://github.com/aseprite/aseprite.git
Compare commits
4 Commits
3448bd36e3
...
4f4582bc9d
Author | SHA1 | Date |
---|---|---|
|
4f4582bc9d | |
|
577caa4793 | |
|
f3a372e78e | |
|
5ddd14106b |
|
@ -1,5 +1,5 @@
|
|||
// Aseprite
|
||||
// Copyright (C) 2019-2024 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2025 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
|
@ -108,7 +108,7 @@ void ColorPicker::pickColor(const Site& site,
|
|||
plan.addLayer(sprite->root(), site.frame());
|
||||
|
||||
doc::CelList cels;
|
||||
sprite->pickCels(pos, kOpacityThreshold, plan, cels);
|
||||
sprite->pickCels(pos, plan, cels, kOpacityThreshold);
|
||||
if (!cels.empty())
|
||||
m_layer = cels.front()->layer();
|
||||
|
||||
|
@ -181,7 +181,7 @@ void ColorPicker::pickColor(const Site& site,
|
|||
plan.addLayer(refLayer, site.frame());
|
||||
|
||||
doc::CelList cels;
|
||||
sprite->pickCels(pos, kOpacityThreshold, plan, cels);
|
||||
sprite->pickCels(pos, plan, cels, kOpacityThreshold);
|
||||
|
||||
for (const Cel* cel : cels) {
|
||||
doc::color_t imageColor;
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
#include "doc/layer.h"
|
||||
#include "doc/layer_tilemap.h"
|
||||
#include "doc/mask.h"
|
||||
#include "doc/render_plan.h"
|
||||
#include "doc/slice.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "fmt/format.h"
|
||||
|
@ -153,12 +154,14 @@ bool StandbyState::onMouseDown(Editor* editor, MouseMessage* msg)
|
|||
// Handle "Auto Select Layer"
|
||||
if (editor->isAutoSelectLayer()) {
|
||||
gfx::PointF cursor = editor->screenToEditorF(msg->position());
|
||||
ColorPicker picker;
|
||||
picker.pickColor(site, cursor, editor->projection(), ColorPicker::FromComposition);
|
||||
doc::RenderPlan plan;
|
||||
plan.addLayer(site.sprite()->root(), site.frame());
|
||||
doc::CelList cels;
|
||||
site.sprite()->pickCels(cursor, plan, cels);
|
||||
|
||||
const view::RealRange& range = context->range();
|
||||
if (picker.layer() && !range.contains(picker.layer())) {
|
||||
layer = picker.layer();
|
||||
if (!cels.empty() && !range.contains(cels.front()->layer())) {
|
||||
layer = cels.front()->layer();
|
||||
if (layer) {
|
||||
editor->setLayer(layer);
|
||||
editor->flashCurrentLayer();
|
||||
|
|
|
@ -4631,13 +4631,13 @@ void Timeline::onDrop(ui::DragEvent& e)
|
|||
std::string txmsg;
|
||||
std::unique_ptr<docapi::DocProvider> docProvider = nullptr;
|
||||
if (droppedImage) {
|
||||
txmsg = "Dropped image on timeline";
|
||||
txmsg = "Drop Image";
|
||||
doc::ImageRef image = nullptr;
|
||||
convert_surface_to_image(surface.get(), 0, 0, surface->width(), surface->height(), image);
|
||||
docProvider = std::make_unique<DocProviderFromImage>(image);
|
||||
}
|
||||
else {
|
||||
txmsg = "Dropped paths on timeline";
|
||||
txmsg = "Drop File";
|
||||
docProvider = std::make_unique<DocProviderFromPaths>(m_document->context(), paths);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Aseprite
|
||||
// Copyright (c) 2024 Igara Studio S.A.
|
||||
// Copyright (c) 2024-2025 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
@ -26,7 +26,7 @@ uint32_t convert_color_to_image(gfx::Color c, const os::SurfaceFormatData* fd)
|
|||
uint8_t b = ((c & fd->blueMask) >> fd->blueShift);
|
||||
uint8_t a = ((c & fd->alphaMask) >> fd->alphaShift);
|
||||
|
||||
if (fd->pixelAlpha == os::PixelAlpha::kPremultiplied) {
|
||||
if (a > 0 && fd->pixelAlpha == os::PixelAlpha::kPremultiplied) {
|
||||
r = r * 255 / a;
|
||||
g = g * 255 / a;
|
||||
b = b * 255 / a;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Aseprite Document Library
|
||||
// Copyright (C) 2018-2024 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2025 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
|
@ -656,9 +656,9 @@ void Sprite::remapTilemaps(const Tileset* tileset, const Remap& remap)
|
|||
// Drawing
|
||||
|
||||
void Sprite::pickCels(const gfx::PointF& pos,
|
||||
const int opacityThreshold,
|
||||
const RenderPlan& plan,
|
||||
CelList& cels) const
|
||||
CelList& cels,
|
||||
const int opacityThreshold) const
|
||||
{
|
||||
// Iterate cels in reversed order (from the front-most to the
|
||||
// bottom-most) so we pick first visible cel in the given position.
|
||||
|
|
|
@ -212,9 +212,9 @@ public:
|
|||
void remapImages(const Remap& remap);
|
||||
void remapTilemaps(const Tileset* tileset, const Remap& remap);
|
||||
void pickCels(const gfx::PointF& pos,
|
||||
const int opacityThreshold,
|
||||
const RenderPlan& plan,
|
||||
CelList& cels) const;
|
||||
CelList& cels,
|
||||
const int opacityThreshold = 1) const;
|
||||
|
||||
////////////////////////////////////////
|
||||
// Iterators
|
||||
|
|
Loading…
Reference in New Issue