1 // Aseprite 2 // Copyright (c) 2001-2018 David Capello 3 // 4 // This program is distributed under the terms of 5 // the End-User License Agreement for Aseprite. 6 7 #ifndef DOC_SPRITE_POSITION_H_INCLUDED 8 #define DOC_SPRITE_POSITION_H_INCLUDED 9 #pragma once 10 11 #include "doc/frame.h" 12 #include "doc/layer.h" 13 #include "doc/object.h" 14 #include "doc/object_id.h" 15 16 namespace app { 17 18 class SpritePosition { 19 public: SpritePosition()20 SpritePosition() 21 : m_layerId(doc::NullId) 22 , m_frame(0) { 23 } 24 SpritePosition(const doc::Layer * layer,doc::frame_t frame)25 SpritePosition(const doc::Layer* layer, doc::frame_t frame) 26 : m_layerId(layer ? layer->id(): doc::NullId) 27 , m_frame(frame) { 28 } 29 layer()30 doc::Layer* layer() const { return doc::get<doc::Layer>(m_layerId); } layerId()31 doc::ObjectId layerId() const { return m_layerId; } frame()32 doc::frame_t frame() const { return m_frame; } 33 layer(doc::Layer * layer)34 void layer(doc::Layer* layer) { 35 m_layerId = (layer ? layer->id(): doc::NullId); 36 } 37 layerId(doc::ObjectId layerId)38 void layerId(doc::ObjectId layerId) { 39 m_layerId = layerId; 40 } 41 frame(doc::frame_t frame)42 void frame(doc::frame_t frame) { 43 m_frame = frame; 44 } 45 46 bool operator==(const SpritePosition& o) const { return m_layerId == o.m_layerId && m_frame == o.m_frame; } 47 bool operator!=(const SpritePosition& o) const { return m_layerId != o.m_layerId || m_frame != o.m_frame; } 48 49 private: 50 doc::ObjectId m_layerId; 51 doc::frame_t m_frame; 52 }; 53 54 } // namespace app 55 56 #endif 57