void colour_picker_dialog::init() { scoped_units su(static_cast<framed_widget&>(*this), UnitsPixels); static const std::set<colour> sBasicColours { colour::AliceBlue, colour::AntiqueWhite, colour::Aquamarine, colour::Azure, colour::Beige, colour::Bisque, colour::Black, colour::BlanchedAlmond, colour::Blue, colour::BlueViolet, colour::Brown, colour::Burlywood, colour::CadetBlue, colour::Chartreuse, colour::Chocolate, colour::Coral, colour::CornflowerBlue, colour::Cornsilk, colour::Cyan, colour::DarkBlue, colour::DarkCyan, colour::DarkGoldenrod, colour::DarkGray, colour::DarkGreen, colour::DarkKhaki, colour::DarkMagenta, colour::DarkOliveGreen, colour::DarkOrange, colour::DarkOrchid, colour::DarkRed, colour::DarkSalmon, colour::DarkSeaGreen, colour::DarkSlateBlue, colour::DarkSlateGray, colour::DarkTurquoise, colour::DarkViolet, colour::DebianRed, colour::DeepPink, colour::DeepSkyBlue, colour::DimGray, colour::DodgerBlue, colour::Firebrick, colour::FloralWhite, colour::ForestGreen, colour::Gainsboro, colour::GhostWhite, colour::Gold, colour::Goldenrod, colour::Gray, colour::Green, colour::GreenYellow, colour::Honeydew, colour::HotPink, colour::IndianRed, colour::Ivory, colour::Khaki, colour::Lavender, colour::LavenderBlush, colour::LawnGreen, colour::LemonChiffon, colour::LightBlue, colour::LightCoral, colour::LightCyan, colour::LightGoldenrod, colour::LightGoldenrodYellow, colour::LightGray, colour::LightGreen, colour::LightPink, colour::LightSalmon, colour::LightSeaGreen, colour::LightSkyBlue, colour::LightSlateBlue, colour::LightSlateGray, colour::LightSteelBlue, colour::LightYellow, colour::LimeGreen, colour::Linen, colour::Magenta, colour::Maroon, colour::MediumAquamarine, colour::MediumBlue, colour::MediumOrchid, colour::MediumPurple, colour::MediumSeaGreen, colour::MediumSlateBlue, colour::MediumSpringGreen, colour::MediumTurquoise, colour::MediumVioletRed, colour::MidnightBlue, colour::MintCream, colour::MistyRose, colour::Moccasin, colour::NavajoWhite, colour::Navy, colour::NavyBlue, colour::OldLace, colour::OliveDrab, colour::Orange, colour::OrangeRed, colour::Orchid, colour::PaleGoldenrod, colour::PaleGreen, colour::PaleTurquoise, colour::PaleVioletRed, colour::PapayaWhip, colour::PeachPuff, colour::Peru, colour::Pink, colour::Plum, colour::PowderBlue, colour::Purple, colour::Red, colour::RosyBrown, colour::RoyalBlue, colour::SaddleBrown, colour::Salmon, colour::SandyBrown, colour::SeaGreen, colour::Seashell, colour::Sienna, colour::SkyBlue, colour::SlateBlue, colour::SlateGray, colour::Snow, colour::SpringGreen, colour::SteelBlue, colour::Tan, colour::Thistle, colour::Tomato, colour::Turquoise, colour::Violet, colour::VioletRed, colour::Wheat, colour::White, colour::WhiteSmoke, colour::Yellow, colour::YellowGreen }; set_margins(neogfx::margins{16.0}); iLayout.set_margins(neogfx::margins{}); iLayout.set_spacing(16.0); iLayout2.set_margins(neogfx::margins{}); iLayout2.set_spacing(16.0); iRightLayout.set_spacing(16.0); iRightTopLayout.set_spacing(16.0); iRightBottomLayout.set_spacing(8.0); iChannelLayout.set_spacing(8.0); iH.first.label().text().set_text("&Hue:"); iH.second.set_size_policy(size_policy::Minimum); iH.second.text_box().set_hint("000000"); iH.second.set_minimum(0); iH.second.set_maximum(360); iH.second.set_step(1); iS.first.label().text().set_text("&Sat:"); iS.second.set_size_policy(size_policy::Minimum); iS.second.text_box().set_hint("000000"); iS.second.set_minimum(0); iS.second.set_maximum(100); iS.second.set_step(1); iV.first.label().text().set_text("&Val:"); iV.second.set_size_policy(size_policy::Minimum); iV.second.text_box().set_hint("000000"); iV.second.set_minimum(0); iV.second.set_maximum(100); iV.second.set_step(1); iR.first.label().text().set_text("&Red:"); iR.second.set_size_policy(size_policy::Minimum); iR.second.text_box().set_hint("000000"); iR.second.set_minimum(0); iR.second.set_maximum(255); iR.second.set_step(1); iG.first.label().text().set_text("&Green:"); iG.second.set_size_policy(size_policy::Minimum); iG.second.text_box().set_hint("000000"); iG.second.set_minimum(0); iG.second.set_maximum(255); iG.second.set_step(1); iB.first.label().text().set_text("&Blue:"); iB.second.set_size_policy(size_policy::Minimum); iB.second.text_box().set_hint("000000"); iB.second.set_minimum(0); iB.second.set_maximum(255); iB.second.set_step(1); iA.first.label().text().set_text("&Alpha:"); iA.second.set_size_policy(size_policy::Minimum); iA.second.text_box().set_hint("000000"); iA.second.set_minimum(0); iA.second.set_maximum(255); iA.second.set_step(1); iRgb.first.text().set_text("&#:"); iRgb.second.set_size_policy(size_policy::Minimum); iRgb.second.set_hint("000000"); iChannelLayout.set_dimensions(4, 4); iChannelLayout.add_item(iH.first); iChannelLayout.add_item(iH.second); iChannelLayout.add_item(iR.first); iChannelLayout.add_item(iR.second); iChannelLayout.add_item(iS.first); iChannelLayout.add_item(iS.second); iChannelLayout.add_item(iG.first); iChannelLayout.add_item(iG.second); iChannelLayout.add_item(iV.first); iChannelLayout.add_item(iV.second); iChannelLayout.add_item(iB.first); iChannelLayout.add_item(iB.second); iChannelLayout.add_item(iRgb.first); iChannelLayout.add_item(iRgb.second); iChannelLayout.add_item(iA.first); iChannelLayout.add_item(iA.second); iBasicColoursLayout.set_dimensions(12, 12); for (auto const& basicColour : sBasicColours) iBasicColoursLayout.add_item(std::make_shared<colour_box>(*this, basicColour)); iCustomColoursLayout.set_dimensions(2, 12); for (uint32_t i = 0; i < 24; ++i) iCustomColoursLayout.add_item(std::make_shared<colour_box>(*this, colour::White)); button_box().add_button(dialog_button_box::Ok); button_box().add_button(dialog_button_box::Cancel); resize(minimum_size()); rect desktopRect{ app::instance().surface_manager().desktop_rect(surface()) }; move_surface((desktopRect.extents() - surface_size()) / 2.0); }
void test_centroid(Polygon* surface, Polygon* polygons, double* population, double* test, int lt_) { double surf_a=0; double c[3]; double b[4]; double l; double a1,a2; int n; int polylen = polygons->len; for (int test_n =0; test_n<lt_; test_n++) { if (test[test_n]<0) { surface->len=0; for (int i=0; i<polylen; i++) { n = int(population [test_n*polylen*3+i*3]); a1 = population [test_n*polylen*3+i*3+1]*2*PI; a2 = population [test_n*polylen*3+i*3+2]*2*PI; if (surface->len==0) { surface_append_polygon(surface, polygons, n); rotate_polygon(surface,0,a1+a2); surf_a = a2; surface_join_polygon(surface); } else { move_surface(surface, -surface->cx, -surface->cy); // echo_polygon(surface, 0, "After move"); surface->cx = 0; surface->cy = 0; // echo_polygon(surface, l); l = surface->len; surface_append_polygon(surface, polygons, n); polygon_centroid(c, surface, l); move_polygon(surface, l, -c[0], -c[1]); rotate_polygon(surface, l, a1+a2); rotate_surface(surface, a2 - surf_a); surf_a = a2; drop_polygon_down(surface, l); surface_join_polygon(surface); // echo_polygon(surface, 0,"Surface"); // echo_polygon(surface, l,"Poly"); } } rotate_surface(surface, -surf_a); surface_bounds(b,surface); // printf("Test %d: %10.10f\n",test_n,(b[2]-b[0])*(b[3]-b[1])); // printf("Bonds: %f %f %f %f\n", b[0], b[1], b[2], b[3]); test[test_n] = (b[2]-b[0])*(b[3]-b[1]); } } }