Browse Source

add Point2 helper for Image.get_pixel and Image.set_pixel
image-point2-helper

Alexander Holland 7 years ago
parent
commit
97485c8df0
2 changed files with 13 additions and 1 deletions
  1. 11 1
      core/image.cpp
  2. 2 0
      core/image.h

+ 11 - 1
core/image.cpp

@@ -1880,6 +1880,10 @@ void Image::unlock() {
 	write_lock = PoolVector<uint8_t>::Write();
 }
 
+Color Image::get_pixelv(const Point2 &p_src) const {
+	return get_pixel(p_src.x, p_src.y);
+}
+
 Color Image::get_pixel(int p_x, int p_y) const {
 
 	uint8_t *ptr = write_lock.ptr();
@@ -2026,6 +2030,10 @@ Color Image::get_pixel(int p_x, int p_y) const {
 	return Color();
 }
 
+void Image::set_pixelv(const Point2 &p_dst, const Color &p_color) {
+	return set_pixel(p_dst.x, p_dst.y, p_color);
+}
+
 void Image::set_pixel(int p_x, int p_y, const Color &p_color) {
 
 	uint8_t *ptr = write_lock.ptr();
@@ -2257,8 +2265,10 @@ void Image::_bind_methods() {
 
 	ClassDB::bind_method(D_METHOD("lock"), &Image::lock);
 	ClassDB::bind_method(D_METHOD("unlock"), &Image::unlock);
-	ClassDB::bind_method(D_METHOD("set_pixel", "x", "y", "color"), &Image::set_pixel);
+	ClassDB::bind_method(D_METHOD("get_pixelv", "src"), &Image::get_pixelv);
 	ClassDB::bind_method(D_METHOD("get_pixel", "x", "y"), &Image::get_pixel);
+	ClassDB::bind_method(D_METHOD("set_pixelv", "dst", "color"), &Image::set_pixelv);
+	ClassDB::bind_method(D_METHOD("set_pixel", "x", "y", "color"), &Image::set_pixel);
 
 	ClassDB::bind_method(D_METHOD("load_png_from_buffer", "buffer"), &Image::load_png_from_buffer);
 	ClassDB::bind_method(D_METHOD("load_jpg_from_buffer", "buffer"), &Image::load_jpg_from_buffer);

+ 2 - 0
core/image.h

@@ -321,7 +321,9 @@ public:
 
 	DetectChannels get_detected_channels();
 
+	Color get_pixelv(const Point2 &p_src) const;
 	Color get_pixel(int p_x, int p_y) const;
+	void set_pixelv(const Point2 &p_dest, const Color &p_color);
 	void set_pixel(int p_x, int p_y, const Color &p_color);
 
 	void copy_internals_from(const Ref<Image> &p_image) {