mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-25 10:43:46 +00:00
83 lines
2.5 KiB
C++
83 lines
2.5 KiB
C++
// Aseprite Document Library
|
|
// Copyright (c) 2018-2019 Igara Studio S.A.
|
|
// Copyright (c) 2016 David Capello
|
|
//
|
|
// This file is released under the terms of the MIT license.
|
|
// Read LICENSE.txt for more information.
|
|
|
|
#ifndef DOC_IMAGE_SPEC_H_INCLUDED
|
|
#define DOC_IMAGE_SPEC_H_INCLUDED
|
|
#pragma once
|
|
|
|
#include "base/debug.h"
|
|
#include "doc/color.h"
|
|
#include "doc/color_mode.h"
|
|
#include "gfx/color_space.h"
|
|
#include "gfx/rect.h"
|
|
#include "gfx/size.h"
|
|
|
|
namespace doc {
|
|
|
|
class ImageSpec {
|
|
public:
|
|
ImageSpec(const ColorMode colorMode,
|
|
const int width,
|
|
const int height,
|
|
const color_t maskColor = 0,
|
|
const gfx::ColorSpacePtr& colorSpace = gfx::ColorSpace::MakeNone())
|
|
: m_colorMode(colorMode),
|
|
m_size(width, height),
|
|
m_maskColor(maskColor),
|
|
m_colorSpace(colorSpace) {
|
|
ASSERT(width > 0);
|
|
ASSERT(height > 0);
|
|
}
|
|
|
|
ColorMode colorMode() const { return m_colorMode; }
|
|
int width() const { return m_size.w; }
|
|
int height() const { return m_size.h; }
|
|
const gfx::Size& size() const { return m_size; }
|
|
gfx::Rect bounds() const { return gfx::Rect(m_size); }
|
|
const gfx::ColorSpacePtr& colorSpace() const { return m_colorSpace; }
|
|
|
|
// The transparent color for colored images (0 by default) or just 0 for RGBA and Grayscale
|
|
color_t maskColor() const { return m_maskColor; }
|
|
|
|
void setColorMode(const ColorMode colorMode) { m_colorMode = colorMode; }
|
|
void setWidth(const int width) { m_size.w = width; }
|
|
void setHeight(const int height) { m_size.h = height; }
|
|
void setMaskColor(const color_t color) { m_maskColor = color; }
|
|
void setColorSpace(const gfx::ColorSpacePtr& cs) { m_colorSpace = cs; }
|
|
|
|
void setSize(const int width,
|
|
const int height) {
|
|
m_size = gfx::Size(width, height);
|
|
}
|
|
|
|
void setSize(const gfx::Size& sz) {
|
|
m_size = sz;
|
|
}
|
|
|
|
bool operator==(const ImageSpec& that) const {
|
|
return (m_colorMode == that.m_colorMode &&
|
|
m_size == that.m_size &&
|
|
m_maskColor == that.m_maskColor &&
|
|
((!m_colorSpace && !that.m_colorSpace) ||
|
|
(m_colorSpace && that.m_colorSpace &&
|
|
m_colorSpace->nearlyEqual(*that.m_colorSpace))));
|
|
}
|
|
bool operator!=(const ImageSpec& that) const {
|
|
return !operator==(that);
|
|
}
|
|
|
|
private:
|
|
ColorMode m_colorMode;
|
|
gfx::Size m_size;
|
|
color_t m_maskColor;
|
|
gfx::ColorSpacePtr m_colorSpace;
|
|
};
|
|
|
|
} // namespace doc
|
|
|
|
#endif
|