diff options
| author | Rémi Verschelde | 2017-03-05 16:44:50 +0100 |
|---|---|---|
| committer | Rémi Verschelde | 2017-03-05 16:44:50 +0100 |
| commit | 5dbf1809c6e3e905b94b8764e99491e608122261 (patch) | |
| tree | 5e5a5360db15d86d59ec8c6e4f7eb511388c5a9a /scene/gui/color_ramp_edit.cpp | |
| parent | 45438e9918d421b244bfd7776a30e67dc7f2d3e3 (diff) | |
| download | godot-5dbf180.tar.gz godot-5dbf180.tar.zst godot-5dbf180.zip | |
A Whole New World (clang-format edition)
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?
I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon
A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format
A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
Diffstat (limited to 'scene/gui/color_ramp_edit.cpp')
| -rw-r--r-- | scene/gui/color_ramp_edit.cpp | 292 |
1 files changed, 142 insertions, 150 deletions
diff --git a/scene/gui/color_ramp_edit.cpp b/scene/gui/color_ramp_edit.cpp index 81bc5ca9b..131638bb7 100644 --- a/scene/gui/color_ramp_edit.cpp +++ b/scene/gui/color_ramp_edit.cpp @@ -29,74 +29,72 @@ #include "color_ramp_edit.h" #include "os/keyboard.h" -ColorRampEdit::ColorRampEdit(){ - grabbed=-1; - grabbing=false; +ColorRampEdit::ColorRampEdit() { + grabbed = -1; + grabbing = false; set_focus_mode(FOCUS_ALL); - popup = memnew( PopupPanel ); - picker = memnew( ColorPicker ); + popup = memnew(PopupPanel); + picker = memnew(ColorPicker); popup->add_child(picker); add_child(popup); - checker = Ref<ImageTexture>(memnew( ImageTexture )); - checker->create_from_image( Image(checker_bg_png),ImageTexture::FLAG_REPEAT ); + checker = Ref<ImageTexture>(memnew(ImageTexture)); + checker->create_from_image(Image(checker_bg_png), ImageTexture::FLAG_REPEAT); } int ColorRampEdit::_get_point_from_pos(int x) { int result = -1; - int total_w = get_size().width-get_size().height-3; - for(int i=0;i<points.size();i++) { + int total_w = get_size().width - get_size().height - 3; + for (int i = 0; i < points.size(); i++) { //Check if we clicked at point - if (ABS(x-points[i].offset*total_w+1)<(POINT_WIDTH/2+1)) { - result=i; + if (ABS(x - points[i].offset * total_w + 1) < (POINT_WIDTH / 2 + 1)) { + result = i; } } return result; } void ColorRampEdit::_show_color_picker() { - if (grabbed==-1) + if (grabbed == -1) return; - Size2 ms = Size2(350, picker->get_combined_minimum_size().height+10); + Size2 ms = Size2(350, picker->get_combined_minimum_size().height + 10); picker->set_pick_color(points[grabbed].color); - popup->set_pos(get_global_pos()-Vector2(ms.width-get_size().width,ms.height)); + popup->set_pos(get_global_pos() - Vector2(ms.width - get_size().width, ms.height)); popup->set_size(ms); popup->popup(); } ColorRampEdit::~ColorRampEdit() { - } -void ColorRampEdit::_gui_input(const InputEvent& p_event) { +void ColorRampEdit::_gui_input(const InputEvent &p_event) { - if (p_event.type==InputEvent::KEY && p_event.key.pressed && p_event.key.scancode==KEY_DELETE && grabbed!=-1) { + if (p_event.type == InputEvent::KEY && p_event.key.pressed && p_event.key.scancode == KEY_DELETE && grabbed != -1) { points.remove(grabbed); - grabbed=-1; - grabbing=false; + grabbed = -1; + grabbing = false; update(); emit_signal("ramp_changed"); accept_event(); } //Show color picker on double click. - if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && p_event.mouse_button.doubleclick && p_event.mouse_button.pressed) { - grabbed=_get_point_from_pos(p_event.mouse_button.x); + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index == 1 && p_event.mouse_button.doubleclick && p_event.mouse_button.pressed) { + grabbed = _get_point_from_pos(p_event.mouse_button.x); _show_color_picker(); accept_event(); } //Delete point on right click - if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==2 && p_event.mouse_button.pressed) { - grabbed=_get_point_from_pos(p_event.mouse_button.x); - if(grabbed != -1) - { + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index == 2 && p_event.mouse_button.pressed) { + grabbed = _get_point_from_pos(p_event.mouse_button.x); + if (grabbed != -1) { points.remove(grabbed); - grabbed=-1; - grabbing=false; + grabbed = -1; + grabbing = false; update(); emit_signal("ramp_changed"); accept_event(); @@ -104,21 +102,21 @@ void ColorRampEdit::_gui_input(const InputEvent& p_event) { } //Hold alt key to duplicate selected color - if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && p_event.mouse_button.pressed && p_event.key.mod.alt ) { + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index == 1 && p_event.mouse_button.pressed && p_event.key.mod.alt) { int x = p_event.mouse_button.x; - grabbed=_get_point_from_pos(x); + grabbed = _get_point_from_pos(x); - if( grabbed != -1 ) { - int total_w = get_size().width-get_size().height-3; + if (grabbed != -1) { + int total_w = get_size().width - get_size().height - 3; ColorRamp::Point newPoint = points[grabbed]; - newPoint.offset=CLAMP(x/float(total_w),0,1); + newPoint.offset = CLAMP(x / float(total_w), 0, 1); points.push_back(newPoint); points.sort(); - for(int i=0;i<points.size();++i) { - if (points[i].offset==newPoint.offset) { - grabbed=i; + for (int i = 0; i < points.size(); ++i) { + if (points[i].offset == newPoint.offset) { + grabbed = i; break; } } @@ -128,91 +126,89 @@ void ColorRampEdit::_gui_input(const InputEvent& p_event) { } } - if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && p_event.mouse_button.pressed) { + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index == 1 && p_event.mouse_button.pressed) { update(); int x = p_event.mouse_button.x; - int total_w = get_size().width-get_size().height-3; + int total_w = get_size().width - get_size().height - 3; //Check if color selector was clicked. - if (x>total_w+3) { + if (x > total_w + 3) { _show_color_picker(); return; } - grabbing=true; + grabbing = true; - grabbed=_get_point_from_pos(x); + grabbed = _get_point_from_pos(x); //grab or select - if (grabbed!=-1) { + if (grabbed != -1) { return; } //insert ColorRamp::Point newPoint; - newPoint.offset=CLAMP(x/float(total_w),0,1); + newPoint.offset = CLAMP(x / float(total_w), 0, 1); ColorRamp::Point prev; ColorRamp::Point next; - int pos=-1; - for(int i=0;i<points.size();i++) { - if (points[i].offset<newPoint.offset) - pos=i; + int pos = -1; + for (int i = 0; i < points.size(); i++) { + if (points[i].offset < newPoint.offset) + pos = i; } - if (pos==-1) { + if (pos == -1) { - prev.color=Color(0,0,0); - prev.offset=0; + prev.color = Color(0, 0, 0); + prev.offset = 0; if (points.size()) { - next=points[0]; + next = points[0]; } else { - next.color=Color(1,1,1); - next.offset=1.0; + next.color = Color(1, 1, 1); + next.offset = 1.0; } - } else { + } else { - if (pos==points.size()-1) { - next.color=Color(1,1,1); - next.offset=1.0; + if (pos == points.size() - 1) { + next.color = Color(1, 1, 1); + next.offset = 1.0; } else { - next=points[pos+1]; + next = points[pos + 1]; } - prev=points[pos]; - + prev = points[pos]; } - newPoint.color=prev.color.linear_interpolate(next.color,(newPoint.offset-prev.offset)/(next.offset-prev.offset)); + newPoint.color = prev.color.linear_interpolate(next.color, (newPoint.offset - prev.offset) / (next.offset - prev.offset)); points.push_back(newPoint); points.sort(); - for(int i=0;i<points.size();i++) { - if (points[i].offset==newPoint.offset) { - grabbed=i; + for (int i = 0; i < points.size(); i++) { + if (points[i].offset == newPoint.offset) { + grabbed = i; break; } } emit_signal("ramp_changed"); - } - if (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1 && !p_event.mouse_button.pressed) { + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index == 1 && !p_event.mouse_button.pressed) { if (grabbing) { - grabbing=false; + grabbing = false; emit_signal("ramp_changed"); } update(); } - if (p_event.type==InputEvent::MOUSE_MOTION && grabbing) { + if (p_event.type == InputEvent::MOUSE_MOTION && grabbing) { - int total_w = get_size().width-get_size().height-3; + int total_w = get_size().width - get_size().height - 3; int x = p_event.mouse_motion.x; - float newofs = CLAMP(x/float(total_w),0,1); + float newofs = CLAMP(x / float(total_w), 0, 1); //Snap to nearest point if holding shift if (p_event.key.mod.shift) { @@ -220,7 +216,7 @@ void ColorRampEdit::_gui_input(const InputEvent& p_event) { float smallest_ofs = snap_treshhold; bool founded = false; int nearest_point; - for(int i=0;i<points.size();++i) { + for (int i = 0; i < points.size(); ++i) { if (i != grabbed) { float temp_ofs = ABS(points[i].offset - newofs); if (temp_ofs < smallest_ofs) { @@ -234,30 +230,30 @@ void ColorRampEdit::_gui_input(const InputEvent& p_event) { } if (founded) { if (points[nearest_point].offset < newofs) - newofs = points[nearest_point].offset+0.00001; + newofs = points[nearest_point].offset + 0.00001; else - newofs = points[nearest_point].offset-0.00001; - newofs = CLAMP(newofs,0,1); + newofs = points[nearest_point].offset - 0.00001; + newofs = CLAMP(newofs, 0, 1); } } - bool valid=true; - for(int i=0;i<points.size();i++) { + bool valid = true; + for (int i = 0; i < points.size(); i++) { - if (points[i].offset==newofs && i!=grabbed) { - valid=false; + if (points[i].offset == newofs && i != grabbed) { + valid = false; } } if (!valid) return; - points[grabbed].offset=newofs; + points[grabbed].offset = newofs; points.sort(); - for(int i=0;i<points.size();i++) { - if (points[i].offset==newofs) { - grabbed=i; + for (int i = 0; i < points.size(); i++) { + if (points[i].offset == newofs) { + grabbed = i; break; } } @@ -270,12 +266,12 @@ void ColorRampEdit::_gui_input(const InputEvent& p_event) { void ColorRampEdit::_notification(int p_what) { - if (p_what==NOTIFICATION_ENTER_TREE) { - if (!picker->is_connected("color_changed",this,"_color_changed")) { - picker->connect("color_changed",this,"_color_changed"); + if (p_what == NOTIFICATION_ENTER_TREE) { + if (!picker->is_connected("color_changed", this, "_color_changed")) { + picker->connect("color_changed", this, "_color_changed"); } } - if (p_what==NOTIFICATION_DRAW) { + if (p_what == NOTIFICATION_DRAW) { int w = get_size().x; int h = get_size().y; @@ -283,89 +279,86 @@ void ColorRampEdit::_notification(int p_what) { if (w == 0 || h == 0) return; //Safety check. We have division by 'h'. And in any case there is nothing to draw with such size - int total_w = get_size().width-get_size().height-3; + int total_w = get_size().width - get_size().height - 3; //Draw checker pattern for ramp - _draw_checker(0,0, total_w, h); + _draw_checker(0, 0, total_w, h); //Draw color ramp ColorRamp::Point prev; - prev.offset=0; - if(points.size() == 0) - prev.color=Color(0,0,0); //Draw black rectangle if we have no points + prev.offset = 0; + if (points.size() == 0) + prev.color = Color(0, 0, 0); //Draw black rectangle if we have no points else - prev.color = points[0].color; //Extend color of first point to the beginning. + prev.color = points[0].color; //Extend color of first point to the beginning. - for(int i=-1;i<points.size();i++) { + for (int i = -1; i < points.size(); i++) { ColorRamp::Point next; //If there is no next point - if (i+1 == points.size()) { - if(points.size() == 0) - next.color=Color(0,0,0); //Draw black rectangle if we have no points + if (i + 1 == points.size()) { + if (points.size() == 0) + next.color = Color(0, 0, 0); //Draw black rectangle if we have no points else - next.color=points[i].color; //Extend color of last point to the end. - next.offset=1; + next.color = points[i].color; //Extend color of last point to the end. + next.offset = 1; } else { - next=points[i+1]; + next = points[i + 1]; } - if (prev.offset==next.offset) { - prev=next; + if (prev.offset == next.offset) { + prev = next; continue; } Vector<Vector2> points; Vector<Color> colors; - points.push_back(Vector2(prev.offset*total_w,h)); - points.push_back(Vector2(prev.offset*total_w,0)); - points.push_back(Vector2(next.offset*total_w,0)); - points.push_back(Vector2(next.offset*total_w,h)); + points.push_back(Vector2(prev.offset * total_w, h)); + points.push_back(Vector2(prev.offset * total_w, 0)); + points.push_back(Vector2(next.offset * total_w, 0)); + points.push_back(Vector2(next.offset * total_w, h)); colors.push_back(prev.color); colors.push_back(prev.color); colors.push_back(next.color); colors.push_back(next.color); - draw_primitive(points,colors,Vector<Point2>()); - prev=next; + draw_primitive(points, colors, Vector<Point2>()); + prev = next; } //Draw point markers - for(int i=0;i<points.size();i++) { + for (int i = 0; i < points.size(); i++) { - Color col = i==grabbed?Color(1,0.0,0.0,0.9):points[i].color.contrasted(); + Color col = i == grabbed ? Color(1, 0.0, 0.0, 0.9) : points[i].color.contrasted(); col.a = 0.9; - draw_line(Vector2(points[i].offset*total_w,0),Vector2(points[i].offset*total_w,h/2),col); - draw_rect(Rect2(points[i].offset*total_w-POINT_WIDTH/2, h/2, POINT_WIDTH, h/2), Color(0.6, 0.6, 0.6, i==grabbed?0.9:0.4)); - draw_line(Vector2(points[i].offset*total_w-POINT_WIDTH/2,h/2),Vector2(points[i].offset*total_w-POINT_WIDTH/2,h-1),col); - draw_line(Vector2(points[i].offset*total_w+POINT_WIDTH/2,h/2),Vector2(points[i].offset*total_w+POINT_WIDTH/2,h-1),col); - draw_line(Vector2(points[i].offset*total_w-POINT_WIDTH/2,h/2),Vector2(points[i].offset*total_w+POINT_WIDTH/2,h/2),col); - draw_line(Vector2(points[i].offset*total_w-POINT_WIDTH/2,h-1),Vector2(points[i].offset*total_w+POINT_WIDTH/2,h-1),col); - + draw_line(Vector2(points[i].offset * total_w, 0), Vector2(points[i].offset * total_w, h / 2), col); + draw_rect(Rect2(points[i].offset * total_w - POINT_WIDTH / 2, h / 2, POINT_WIDTH, h / 2), Color(0.6, 0.6, 0.6, i == grabbed ? 0.9 : 0.4)); + draw_line(Vector2(points[i].offset * total_w - POINT_WIDTH / 2, h / 2), Vector2(points[i].offset * total_w - POINT_WIDTH / 2, h - 1), col); + draw_line(Vector2(points[i].offset * total_w + POINT_WIDTH / 2, h / 2), Vector2(points[i].offset * total_w + POINT_WIDTH / 2, h - 1), col); + draw_line(Vector2(points[i].offset * total_w - POINT_WIDTH / 2, h / 2), Vector2(points[i].offset * total_w + POINT_WIDTH / 2, h / 2), col); + draw_line(Vector2(points[i].offset * total_w - POINT_WIDTH / 2, h - 1), Vector2(points[i].offset * total_w + POINT_WIDTH / 2, h - 1), col); } - //Draw "button" for color selector - _draw_checker(total_w+3,0, h, h); - if (grabbed!=-1) { + _draw_checker(total_w + 3, 0, h, h); + if (grabbed != -1) { //Draw with selection color - draw_rect(Rect2(total_w+3,0,h,h),points[grabbed].color); + draw_rect(Rect2(total_w + 3, 0, h, h), points[grabbed].color); } else { //if no color selected draw grey color with 'X' on top. - draw_rect(Rect2(total_w+3,0,h,h), Color(0.5, 0.5, 0.5, 1)); - draw_line(Vector2(total_w+3,0),Vector2(total_w+3+h,h),Color(1,1,1,0.6)); - draw_line(Vector2(total_w+3,h),Vector2(total_w+3+h,0),Color(1,1,1,0.6)); + draw_rect(Rect2(total_w + 3, 0, h, h), Color(0.5, 0.5, 0.5, 1)); + draw_line(Vector2(total_w + 3, 0), Vector2(total_w + 3 + h, h), Color(1, 1, 1, 0.6)); + draw_line(Vector2(total_w + 3, h), Vector2(total_w + 3 + h, 0), Color(1, 1, 1, 0.6)); } //Draw borders around color ramp if in focus if (has_focus()) { - draw_line(Vector2(-1,-1),Vector2(total_w+1,-1),Color(1,1,1,0.6)); - draw_line(Vector2(total_w+1,-1),Vector2(total_w+1,h+1),Color(1,1,1,0.6)); - draw_line(Vector2(total_w+1,h+1),Vector2(-1,h+1),Color(1,1,1,0.6)); - draw_line(Vector2(-1,-1),Vector2(-1,h+1),Color(1,1,1,0.6)); + draw_line(Vector2(-1, -1), Vector2(total_w + 1, -1), Color(1, 1, 1, 0.6)); + draw_line(Vector2(total_w + 1, -1), Vector2(total_w + 1, h + 1), Color(1, 1, 1, 0.6)); + draw_line(Vector2(total_w + 1, h + 1), Vector2(-1, h + 1), Color(1, 1, 1, 0.6)); + draw_line(Vector2(-1, -1), Vector2(-1, h + 1), Color(1, 1, 1, 0.6)); } - } } @@ -373,9 +366,9 @@ void ColorRampEdit::_draw_checker(int x, int y, int w, int h) { //Draw it with polygon to insert UVs for scale Vector<Vector2> backPoints; backPoints.push_back(Vector2(x, y)); - backPoints.push_back(Vector2(x, y+h)); - backPoints.push_back(Vector2(x+w, y+h)); - backPoints.push_back(Vector2(x+w, y)); + backPoints.push_back(Vector2(x, y + h)); + backPoints.push_back(Vector2(x + w, y + h)); + backPoints.push_back(Vector2(x + w, y)); Vector<Color> colorPoints; colorPoints.push_back(Color(1, 1, 1, 1)); colorPoints.push_back(Color(1, 1, 1, 1)); @@ -384,35 +377,34 @@ void ColorRampEdit::_draw_checker(int x, int y, int w, int h) { Vector<Vector2> uvPoints; //Draw checker pattern pixel-perfect and scale it by 2. uvPoints.push_back(Vector2(x, y)); - uvPoints.push_back(Vector2(x, y+h*.5f/checker->get_height())); - uvPoints.push_back(Vector2(x+w*.5f/checker->get_width(), y+h*.5f/checker->get_height())); - uvPoints.push_back(Vector2(x+w*.5f/checker->get_width(), y)); + uvPoints.push_back(Vector2(x, y + h * .5f / checker->get_height())); + uvPoints.push_back(Vector2(x + w * .5f / checker->get_width(), y + h * .5f / checker->get_height())); + uvPoints.push_back(Vector2(x + w * .5f / checker->get_width(), y)); draw_polygon(backPoints, colorPoints, uvPoints, checker); } Size2 ColorRampEdit::get_minimum_size() const { - return Vector2(0,16); + return Vector2(0, 16); } -void ColorRampEdit::_color_changed(const Color& p_color) { +void ColorRampEdit::_color_changed(const Color &p_color) { - if (grabbed==-1) + if (grabbed == -1) return; - points[grabbed].color=p_color; + points[grabbed].color = p_color; update(); emit_signal("ramp_changed"); - } -void ColorRampEdit::set_ramp(const Vector<float>& p_offsets,const Vector<Color>& p_colors) { +void ColorRampEdit::set_ramp(const Vector<float> &p_offsets, const Vector<Color> &p_colors) { - ERR_FAIL_COND(p_offsets.size()!=p_colors.size()); + ERR_FAIL_COND(p_offsets.size() != p_colors.size()); points.clear(); - for(int i=0;i<p_offsets.size();i++) { + for (int i = 0; i < p_offsets.size(); i++) { ColorRamp::Point p; - p.offset=p_offsets[i]; - p.color=p_colors[i]; + p.offset = p_offsets[i]; + p.color = p_colors[i]; points.push_back(p); } @@ -422,31 +414,31 @@ void ColorRampEdit::set_ramp(const Vector<float>& p_offsets,const Vector<Color>& Vector<float> ColorRampEdit::get_offsets() const { Vector<float> ret; - for(int i=0;i<points.size();i++) + for (int i = 0; i < points.size(); i++) ret.push_back(points[i].offset); return ret; } Vector<Color> ColorRampEdit::get_colors() const { Vector<Color> ret; - for(int i=0;i<points.size();i++) + for (int i = 0; i < points.size(); i++) ret.push_back(points[i].color); return ret; } -void ColorRampEdit::set_points(Vector<ColorRamp::Point>& p_points) { - if(points.size() != p_points.size()) +void ColorRampEdit::set_points(Vector<ColorRamp::Point> &p_points) { + if (points.size() != p_points.size()) grabbed = -1; points.clear(); points = p_points; } -Vector<ColorRamp::Point>& ColorRampEdit::get_points() { +Vector<ColorRamp::Point> &ColorRampEdit::get_points() { return points; } void ColorRampEdit::_bind_methods() { - ClassDB::bind_method(D_METHOD("_gui_input"),&ColorRampEdit::_gui_input); - ClassDB::bind_method(D_METHOD("_color_changed"),&ColorRampEdit::_color_changed); + ClassDB::bind_method(D_METHOD("_gui_input"), &ColorRampEdit::_gui_input); + ClassDB::bind_method(D_METHOD("_color_changed"), &ColorRampEdit::_color_changed); ADD_SIGNAL(MethodInfo("ramp_changed")); } |
