aseprite/src/doc/image_spec.h
2019-08-13 18:16:30 -03:00

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