ScummVM API documentation
qd_contour.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef QDENGINE_QDCORE_QD_CONTOUR_H
23 #define QDENGINE_QDCORE_QD_CONTOUR_H
24 
25 #include "qdengine/parser/xml_fwd.h"
26 #include "qdengine/xmath.h"
27 
28 namespace Common {
29 class WriteStream;
30 }
31 
32 namespace QDEngine {
33 
35 
39 class qdContour {
40 public:
47  CONTOUR_POLYGON
48  };
49 
50  qdContour(qdContourType tp = CONTOUR_POLYGON);
51  qdContour(const qdContour &ct);
52  virtual ~qdContour();
53 
54  qdContour &operator = (const qdContour &ct);
55 
58  return _contour_type;
59  }
62  _contour_type = tp;
63  }
64 
66  int size_x() const {
67  return _size.x;
68  }
70  int size_y() const {
71  return _size.y;
72  }
73 
75  bool is_inside(const Vect2s &pos) const;
76 
78  virtual bool save_script(Common::WriteStream &fh, int indent = 0) const;
80  virtual bool load_script(const xml::tag *p);
81 
83 
86  void add_contour_point(const Vect2s &pt);
88 
91  void insert_contour_point(const Vect2s &pt, int insert_pos = 0);
93  bool remove_contour_point(int pos);
95  bool update_contour_point(const Vect2s &pt, int pos);
96 
98  void clear_contour() {
99  _contour.clear();
100  }
101 
103  void divide_contour(int shift = 1);
105  void mult_contour(int shift = 1);
107  void shift_contour(int dx, int dy);
108 
110  const Vect2s &get_point(int pos) const {
111  return _contour[pos];
112  }
113 
115  const Vect2s &mask_size() const {
116  return _size;
117  }
118 
120  const Vect2s &mask_pos() const {
121  return _mask_pos;
122  }
123 
125  int contour_size() const {
126  return _contour.size();
127  }
130  return _contour;
131  }
132 
133  bool is_mask_empty() const {
134  return _contour.empty();
135  }
136 
137  bool update_contour();
138 
139  // можно ли замкнуть текущий контур.
140  // для типов контура CONTOUR_CIRCLE и CONTOUR_RECTANGLE
141  // всегда возвращается false
142  bool can_be_closed() const;
143 
145  bool is_contour_empty() const;
146 
147 private:
149  qdContourType _contour_type;
150 
152  Vect2s _size;
153 
154  Vect2s _mask_pos;
155 
157 
160  Std::vector<Vect2s> _contour;
161 };
162 
163 } // namespace QDEngine
164 
165 #endif // QDENGINE_QDCORE_QD_CONTOUR_H
Definition: vector.h:39
int size_x() const
Возвращает горизонтальный размер контура.
Definition: qd_contour.h:66
Definition: stream.h:77
const Vect2s & mask_size() const
Возвращает размеры маски.
Definition: qd_contour.h:115
Контур.
Definition: qd_contour.h:39
void clear_contour()
Удаляет все точки из контура.
Definition: qd_contour.h:98
qdContourType contour_type() const
Возвращает тип контура.
Definition: qd_contour.h:57
qdContourType
Definition: qd_contour.h:41
Definition: xmath.h:419
const Vect2s & mask_pos() const
Возвращает координаты центра маски.
Definition: qd_contour.h:120
Прямоугольник
Definition: qd_contour.h:43
XML тег.
Definition: xml_tag.h:33
Базовый класс для игровых ресурсов.
Definition: console.h:28
Definition: algorithm.h:29
int contour_size() const
Возвращает количество точек в контуре.
Definition: qd_contour.h:125
const Std::vector< Vect2s > & get_contour() const
Возвращает массив точек контура.
Definition: qd_contour.h:129
void set_contour_type(qdContourType tp)
Устанавливает тип контура.
Definition: qd_contour.h:61
Окружность
Definition: qd_contour.h:45
const Vect2s & get_point(int pos) const
Возвращает координаты точки контура номер pos.
Definition: qd_contour.h:110
int size_y() const
Возвращает вертикальный размер контура.
Definition: qd_contour.h:70