xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
pen.h
Go to the documentation of this file.
1 #pragma once
5 #include <cstdint>
6 #include <memory>
7 #include <ostream>
8 #include <xtd/object.h>
9 #include <xtd/ustring.h>
10 #include "../drawing_export.h"
12 #include "drawing2d/pen_type.h"
13 #include "brush.h"
14 #include "color.h"
15 #include "dash_style.h"
16 
18 namespace xtd {
20  namespace drawing {
22  class graphics;
24 
29  class drawing_export_ pen final : public object {
30  public:
32  pen();
33 
39 
45  pen(const xtd::drawing::brush& brush, float width);
46 
51 
56  pen(const xtd::drawing::color& color, float width);
57 
59  pen(const xtd::drawing::pen& value);
60  pen& operator=(const xtd::drawing::pen& value);
61  ~pen();
62  bool operator==(const xtd::drawing::pen& value) const {return data_->alignment_ == value.data_->alignment_ && data_->type_ == value.data_->type_;}
63  bool operator!=(const xtd::drawing::pen& value) const {return !operator==(value);}
65 
69  xtd::drawing::drawing2d::pen_alignment alignment() const {return data_->alignment_;}
70 
75 
76  std::unique_ptr<xtd::drawing::brush> brush() const;
78 
79  const xtd::drawing::color& color() const {return data_->color_;}
81 
82  std::vector<float> dash_pattern() const {return data_->dash_pattern_;}
83  xtd::drawing::pen& dash_pattern(const std::initializer_list<float>& il) {return dash_pattern(std::vector<float>(il));}
84  xtd::drawing::pen& dash_pattern(const std::vector<float>& dash_pattern);
85 
86  xtd::drawing::dash_style dash_style() const {return data_->dash_style_;}
88 
89  xtd::drawing::drawing2d::pen_type type() const {return data_->type_;}
91 
92  float width() const {return data_->width_;}
93  xtd::drawing::pen& width(float width);
94 
95  xtd::ustring to_string() const noexcept override {return ustring::full_class_name(*this);}
96 
98  friend std::ostream& operator<<(std::ostream& os, const xtd::drawing::pen& pen) noexcept {
99  return os << pen.to_string();
100  }
102 
103  private:
104  friend class graphics;
105  struct data {
106  intptr_t handle_ = 0;
108  xtd::drawing::color color_;
111  float width_ = 1.0f;
112  std::vector<float> dash_pattern_;
113  };
114  std::shared_ptr<data> data_ = std::make_shared<data>();
115  };
116  }
117 }
Contains xtd::drawing::brush class.
Defines objects used to fill the interiors of graphical shapes such as rectangles,...
Definition: brush.h:27
Represents an ARGB (alpha, red, green, blue) color.
Definition: color.h:39
Defines an object used to draw lines and curves. This class cannot be inherited.
Definition: pen.h:29
pen(const xtd::drawing::brush &brush)
Initializes a new instance of the xtd::drawing::pen class with the specified xtd::drawing::brush.
pen()
Initializes a new instance of the xtd::drawing::pen class.
xtd::drawing::pen & alignment(xtd::drawing::drawing2d::pen_alignment alignment)
Sets the alignment for this xtd::drawing::pen.
pen(const xtd::drawing::brush &brush, float width)
Initializes a new instance of the xtd::drawing::pen class with the specified xtd::drawing::brush.
pen(const xtd::drawing::color &color, float width)
Initializes a new instance of the xtd::drawing::pen class with the specified xtd::drawing::color.
xtd::ustring to_string() const noexcept override
Returns a std::string that represents the current object.
Definition: pen.h:95
xtd::drawing::drawing2d::pen_alignment alignment() const
Gets the alignment for this xtd::drawing::pen.
Definition: pen.h:69
pen(const xtd::drawing::color &color)
Initializes a new instance of the xtd::drawing::pen class with the specified xtd::drawing::color.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition: object.h:26
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:48
static ustring full_class_name()
Gets the fully qualified class name of the objec_t, including the namespace of the objec_t.
Definition: ustring.h:427
Contains xtd::drawing::color class.
Contains xtd::drawing::dash_style enum class.
#define drawing_export_
Define shared library export.
Definition: drawing_export.h:13
std::type_info type
Stores information about a type.
Definition: types.h:179
dash_style
Specifies the style of dashed lines drawn with a xtd::drawing::pen object.
Definition: dash_style.h:18
pen_type
Specifies the type of fill a xtd::drawing::pen object uses to fill lines.
Definition: pen_type.h:20
pen_alignment
SSpecifies the alignment of a xtd::drawing::pen object in relation to the theoretical,...
Definition: pen_alignment.h:21
@ solid
Specifies a solid line.
@ solid_color
Specifies a solid fill.
@ center
Specifies that the xtd::drawing::pen object is centered over the theoretical line.
@ width
Specifies that the width of the control is defined.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
Contains xtd::object class.
Contains xtd::drawing::drawing2d::pen_alignment enum class.
Contains xtd::drawing::drawing2d::pen_type enum class.
Contains xtd::ustring class.