LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
image.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <list>
4 
6 
9 #include "cad/base/cadentity.h"
10 #include "cad/interface/snapable.h"
12 #include "cad/meta/layer.h"
13 
14 namespace lc {
15  namespace entity {
23  class Image : public std::enable_shared_from_this<Image>, public CADEntity, public Snapable, virtual public Visitable {
24  public:
25  Image(const std::string &name,
26  const geo::Coordinate &base,
27  const geo::Coordinate &uv,
28  const geo::Coordinate &vv,
29  double width,
30  double height,
31  double brightness,
32  double contrast,
33  double fade,
34  const Layer_CSPtr layer,
35  const MetaInfo_CSPtr metaInfo = nullptr,
36  const Block_CSPtr block = nullptr
37  );
38 
48  Image(const Image_CSPtr other, bool sameID = false);
49 
50  public:
51  virtual std::vector<EntityCoordinate> snapPoints(const geo::Coordinate &coord, const SimpleSnapConstrain & constrain, double minDistanceToSnap,
52  int maxNumberOfSnapPoints) const override;
53 
54  virtual geo::Coordinate nearestPointOnPath(const geo::Coordinate &coord) const override;
55 
56  public:
62  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
63 
69  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
70 
77  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
78 
85  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
86  const geo::Coordinate &scale_factor) const override;
87 
88  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
89  const geo::Coordinate& axis2) const override {
90  return NULL; // TODO: no return statement, not implemented in lwpolyline.cpp
91  }
92 
97  virtual const geo::Area boundingBox() const override;
98 
99  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
100 
101  const std::string &name() const {
102  return _name;
103  }
104 
105  const geo::Coordinate &base() const {
106  return _base;
107  }
108 
109  const geo::Coordinate &uv() const {
110  return _uv;
111  }
112 
113  const geo::Coordinate &vv() const {
114  return _vv;
115  }
116 
117 
118  double width() const {
119  return _width;
120  }
121 
122  double height() const {
123  return _height;
124  }
125 
126  double brightness() const {
127  return _brightness;
128  }
129 
130  double contrast() const {
131  return _contrast;
132  }
133 
134  double fade() const {
135  return _fade;
136  }
137 
138  public:
139  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
140 
141  virtual void dispatch(EntityDispatch &ed) const override {
142  ed.visit(shared_from_this());
143  }
144 
145  private:
146  std::string _name;
150  double _width; // I really want tthese tome come from the image and not given by the DXF, for now I will
151  double _height; // leave them in place for development and testing without loading the image here.
152 
153  double _brightness;
154  double _contrast;
155  double _fade;
157  };
158 
160  }
161 
162 }
163 
double _height
Definition: image.h:151
const geo::Coordinate & base() const
Definition: image.h:105
const geo::Coordinate & uv() const
Definition: image.h:109
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: image.cpp:105
double fade() const
Definition: image.h:134
virtual void dispatch(EntityDispatch &ed) const override
Definition: image.h:141
virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override
modify Return a new entity with the same ID bit with possible modified metainfo and/pr layer informat...
Definition: image.cpp:135
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: image.cpp:112
geo::Coordinate _uv
Definition: image.h:148
virtual void visit(entity::Line_CSPtr)=0
double _fade
Brightness value, code 283, (0-100) default 0.
Definition: image.h:155
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
double width() const
Definition: image.h:118
virtual std::vector< EntityCoordinate > snapPoints(const geo::Coordinate &coord, const SimpleSnapConstrain &constrain, double minDistanceToSnap, int maxNumberOfSnapPoints) const override
Find a number of snap points the line has available This function returns a ordered list...
Definition: image.cpp:42
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: image.cpp:98
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: image.cpp:87
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
Image(const std::string &name, const geo::Coordinate &base, const geo::Coordinate &uv, const geo::Coordinate &vv, double width, double height, double brightness, double contrast, double fade, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Definition: image.cpp:11
double contrast() const
Definition: image.h:130
Definition: cadentity.h:12
const geo::Coordinate & vv() const
Definition: image.h:113
geo::Coordinate _vv
Definition: image.h:149
double height() const
Definition: image.h:122
std::string _name
Definition: image.h:146
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
double _brightness
Brightness value, code 281, (0-100) default 50.
Definition: image.h:153
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies Image by an offset
Definition: image.cpp:93
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: image.h:88
geo::Coordinate _base
Definition: image.h:147
double _width
Definition: image.h:150
virtual geo::Coordinate nearestPointOnPath(const geo::Coordinate &coord) const override
Find the nearest point on the path for this entity for the coordinate coord The path of a entity that...
Definition: image.cpp:70
virtual void accept(GeoEntityVisitor &v) const override
Definition: image.h:139
double _contrast
Brightness value, code 282, (0-100) default 50.
Definition: image.h:154
const std::string & name() const
Definition: image.h:101
A Image that can be put in a drawing.
Definition: image.h:23
double brightness() const
Definition: image.h:126