]> O.S.I.I.S - jp/crow.git/commitdiff
color picker, wip dev
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 4 Mar 2025 12:26:18 +0000 (13:26 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 4 Mar 2025 12:26:18 +0000 (13:26 +0100)
37 files changed:
Crow/Default.style
Crow/Images/crow0.svg
Crow/Templates/CheckBox2.template
Crow/Templates/ColorPicker.template
Crow/Templates/ColorSlider.template [new file with mode: 0644]
Crow/Templates/ScrollBar.template
Crow/src/Fill/Picture.cs
Crow/src/IML/IMLAttributes.cs [deleted file]
Crow/src/IML/Instantiator.cs
Crow/src/Interface.cs
Crow/src/Text/TextChange.cs
Crow/src/Widgets/ColorGauge.cs [new file with mode: 0644]
Crow/src/Widgets/ColorPicker.cs
Crow/src/Widgets/ColorSlider.cs
Crow/src/Widgets/Gauge.cs
Crow/src/Widgets/GroupBase.cs
Crow/src/Widgets/Slider.cs
Crow/src/Widgets/TemplatedGroup.cs
Crow/src/Widgets/Widget.cs
Crow/src/Widgets/XmlIgnoreAttribute.cs [deleted file]
Crow/src/styling/Style.cs
Directory.Build.props
Drawing2D/Drawing2D.csproj
Drawing2D/src/IMLAttributes.cs [new file with mode: 0644]
Drawing2D/src/Style.cs [new file with mode: 0644]
Samples/common/src/SampleBase.cs
Samples/common/ui/Interfaces/Divers/colorPicker.crow
Samples/common/ui/Interfaces/Divers/colorSlider.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/colorSlider2.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/colorSlider3.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/colorSlider4.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/image.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/observableList.crow
Samples/common/ui/Interfaces/Divers/testShape.crow
Samples/common/ui/Interfaces/Divers/testSlider.crow
Samples/common/ui/Interfaces/Experimental/table.crow
Samples/common/ui/Interfaces/TemplatedControl/testScrollbar2.crow [new file with mode: 0644]

index 473f40708dc1dbe33d26700f9d9325e474b2d7f0..34fb5899d3ebfb0451c73dfa12ab3dca72993209 100644 (file)
@@ -280,12 +280,17 @@ ArrowBut {
        Foreground="Grey";
        Background="Transparent";
 
-       MouseEnter="{Foreground=${ControlHighlight}}";
+       MouseEnter="{Foreground=WhiteSmoke}";
        MouseLeave="{Foreground=Grey}";
 
-       Margin="2";
+       Margin="1";
        KeepProportions="true";
 }
+ScrollBarCursor {
+       Background="Grey";
+       MouseEnter="{Background=WhiteSmoke}";
+       MouseLeave="{Background=Grey}";
+}
 
 ScrollBar {
        Orientation = "Vertical";
@@ -318,12 +323,15 @@ labColor {
 }
 labColorV {
        Margin="1";
-       Width="Fit";
+       Width="50";
+       TextAlignment="Right";
 }
 ColorSlider {
        Focusable="true";
-       Height="12";
+       Height="36";
        Margin="0";
+       Maximum="255";
+       Decimals="0";
 }
 ColorPicker {
        Height="Fit";
index c62113021f59b07ed3ad4d91453675e99ebb0f03..94f5cfc651a3e81457221e8b2e55a892ae8ff063 100644 (file)
@@ -9,22 +9,8 @@
    width="51.116982"
    version="1.1"
    id="svg2">
-  <metadata
-     id="metadata8">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs6" />
   <path
      id="path2818"
      d="m 36.232985,35.977162 c -0.02345,-0.0094 -0.04263,-0.04436 -0.04263,-0.07772 0,-0.03337 -0.04543,-0.117846 -0.100965,-0.187724 -0.05553,-0.06987 -0.10986,-0.152552 -0.120738,-0.183728 -0.04888,-0.140096 -0.547064,-0.441575 -0.740404,-0.448061 -0.01333,-6.73e-4 -0.0417,0.06441 -0.06301,0.144127 -0.0213,0.07971 -0.05448,0.164118 -0.0737,0.187567 -0.06807,0.08303 -0.2351,0.04596 -0.448164,-0.09947 -0.114492,-0.07815 -0.231452,-0.140793 -0.259915,-0.139198 -0.103032,0.0057 -0.22753,-0.0647 -0.284401,-0.160973 -0.105659,-0.178872 -0.451937,-0.41031 -0.613884,-0.41031 -0.11287,0 -0.378547,-0.121442 -0.488394,-0.223239 -0.06283,-0.05824 -0.129597,-0.08369 -0.219515,-0.08369 -0.191898,0 -0.291236,-0.05025 -0.332315,-0.168082 -0.02007,-0.05761 -0.05795,-0.104746 -0.08415,-0.104746 -0.02621,0 -0.07371,-0.02879 -0.105549,-0.06398 -0.03185,-0.03519 -0.108169,-0.07213 -0.169604,-0.08211 -0.219849,-0.03568 -0.937873,-0.414299 -0.993727,-0.524009 -0.01875,-0.03685 -0.103161,-0.143806 -0.187567,-0.237705 -0.189643,-0.210956 -0.537045,-0.371869 -0.741262,-0.343338 -0.710425,0.09925 -0.737631,0.100685 -1.030367,0.05449 -0.337983,-0.05334 -0.630446,-0.05889 -1.115893,-0.02117 -0.331487,0.02576 -0.347801,0.02387 -0.368967,-0.04283 -0.01219,-0.03838 0.0026,-0.154623 0.03266,-0.258318 0.03015,-0.103694 0.04455,-0.205124 0.03202,-0.225402 -0.04471,-0.07234 -0.314032,-0.0065 -0.532991,0.130268 -0.165667,0.103489 -0.230973,0.169125 -0.288563,0.290041 -0.07126,0.149603 -0.19268,0.232754 -0.339892,0.232754 -0.09327,0 -0.01149,-0.448641 0.108895,-0.597398 0.0301,-0.03719 0.045,-0.04843 0.03312,-0.02499 -0.01262,0.02492 3.4e-5,0.04263 0.03051,0.04263 0.03229,0 0.04463,-0.01945 0.03247,-0.05115 -0.0108,-0.02813 -0.0027,-0.05115 0.01813,-0.05115 0.02077,0 0.03776,-0.02034 0.03776,-0.04521 0,-0.05853 0.151433,-0.201223 0.181571,-0.171088 0.01268,0.01268 0.02305,0.003 0.02305,-0.02158 0,-0.05501 0.190827,-0.241992 0.218611,-0.214209 0.01107,0.01107 0.02012,0.0013 0.02012,-0.02169 0,-0.02299 0.01358,-0.03341 0.03018,-0.02314 0.0166,0.01026 0.07415,0.0046 0.127887,-0.01261 0.05374,-0.01721 0.185946,-0.03746 0.293797,-0.04502 0.154262,-0.01082 0.196092,-0.0032 0.196092,0.03533 0,0.03062 0.02017,0.04134 0.05362,0.02851 0.02949,-0.01132 0.08321,-0.0048 0.119365,0.01461 0.04469,0.02391 0.06573,0.02399 0.06573,0 0,-0.0546 0.166343,-0.02716 0.19016,0.03136 0.01696,0.04168 0.02726,0.03685 0.05065,-0.02383 0.03017,-0.0782 0.05209,-0.07969 0.33327,-0.02256 0.04625,0.0094 0.07104,0.0023 0.05918,-0.01685 -0.01918,-0.03103 0.105189,-0.09308 0.158609,-0.07913 0.01351,0.0035 0.0409,-0.02412 0.06088,-0.06145 0.01998,-0.03733 0.06279,-0.06787 0.09513,-0.06787 0.03235,0 0.07872,-0.0319 0.103074,-0.07089 0.03874,-0.06204 0.03597,-0.07306 -0.02225,-0.08828 -0.04068,-0.01065 -0.07465,-0.05808 -0.08746,-0.122132 -0.01151,-0.0576 -0.03098,-0.0947 -0.04325,-0.08243 -0.02243,0.02243 -0.09396,-0.07925 -0.134223,-0.190818 -0.01192,-0.03303 -0.05709,-0.06895 -0.100386,-0.07981 -0.0433,-0.01087 -0.08702,-0.04139 -0.09717,-0.06783 -0.01015,-0.02644 -0.03811,-0.04866 -0.06215,-0.04937 -0.02403,-6.72e-4 -0.09734,-0.06977 -0.162897,-0.153463 -0.06556,-0.08369 -0.141017,-0.152171 -0.167679,-0.152171 -0.02665,0 -0.03909,-0.0094 -0.02762,-0.02084 0.02949,-0.02949 -0.161533,-0.183774 -0.227545,-0.183774 -0.03567,0 -0.05475,-0.02971 -0.05475,-0.08526 0,-0.04689 -0.01667,-0.08526 -0.03705,-0.08526 -0.02039,0 -0.132932,-0.09206 -0.250118,-0.204591 -0.117184,-0.112527 -0.225744,-0.193097 -0.241239,-0.179042 -0.0155,0.01404 -0.01813,0.008 -0.0059,-0.01351 0.02148,-0.0376 -0.06692,-0.09775 -0.12476,-0.08487 -0.01546,0.0034 -0.01943,-0.0078 -0.0088,-0.02496 0.01062,-0.01717 -0.02277,-0.05853 -0.0742,-0.09191 -0.05142,-0.03337 -0.113546,-0.08877 -0.138053,-0.123093 -0.02451,-0.03432 -0.06672,-0.0624 -0.09378,-0.0624 -0.02707,0 -0.04922,-0.01355 -0.04922,-0.03012 0,-0.0438 -0.778285,-0.624964 -0.930964,-0.695162 -0.0729,-0.03352 -0.164401,-0.05081 -0.209278,-0.03955 -0.05655,0.01418 -0.102151,-0.0031 -0.15683,-0.05944 -0.0424,-0.0437 -0.06447,-0.05739 -0.04905,-0.03043 0.01542,0.02698 -0.03574,-0.0023 -0.113694,-0.06486 -0.140423,-0.112848 -0.199258,-0.210672 -0.162485,-0.270173 0.01048,-0.01696 -0.0034,-0.03946 -0.03092,-0.05001 -0.03157,-0.0121 -0.04839,-0.06147 -0.04566,-0.133995 0.0046,-0.123415 -0.115972,-0.333547 -0.242202,-0.421962 -0.03969,-0.0278 -0.06324,-0.06494 -0.05237,-0.08255 0.01089,-0.01761 -0.0042,-0.04121 -0.03354,-0.05247 -0.02932,-0.01125 -0.05331,-0.04833 -0.05331,-0.0824 0,-0.03407 -0.03837,-0.107533 -0.08526,-0.163263 -0.07704,-0.09156 -0.08519,-0.130424 -0.08459,-0.403332 0.0011,-0.467434 0.102818,-0.951299 0.346875,-1.649081 0.133708,-0.382291 0.234679,-0.776483 0.280602,-1.095504 0.01999,-0.138863 0.01188,-0.170521 -0.06808,-0.265547 -0.09126,-0.108463 -0.277674,-0.207699 -0.390138,-0.207699 -0.03326,0 -0.167911,-0.04572 -0.299229,-0.101598 -0.334854,-0.142493 -0.698295,-0.199641 -1.524701,-0.239741 -0.393891,-0.01911 -0.856189,-0.05756 -1.027322,-0.08543 -0.171134,-0.02796 -0.404168,-0.05076 -0.517855,-0.05076 -0.113686,0 -0.249901,-0.01718 -0.302703,-0.03821 -0.0528,-0.02101 -0.22913,-0.0397 -0.391836,-0.04152 -0.16271,-0.0018 -0.288412,-0.01532 -0.27934,-0.03 0.0091,-0.01468 -0.01127,-0.02647 -0.0452,-0.02621 -0.03393,2.24e-4 -0.315468,-0.0481 -0.625641,-0.107494 l -0.563945,-0.107977 -0.33979,0.10758 c -0.186882,0.05917 -0.349511,0.107539 -0.361388,0.107494 -0.04086,-1.36e-4 -0.05638,-0.13324 -0.01741,-0.149221 0.02145,-0.0088 -0.0023,-0.01721 -0.05276,-0.01869 -0.05047,-0.0015 -0.100161,0.01089 -0.110412,0.02747 -0.03208,0.05191 -0.458126,0.118498 -0.505769,0.07904 -0.02811,-0.02328 -0.09385,-0.0242 -0.195783,-0.0028 -0.08441,0.01777 -0.280073,0.0495 -0.434816,0.07054 -0.154743,0.02104 -0.281352,0.05283 -0.281352,0.07068 0,0.01786 -0.02302,0.02362 -0.05115,0.01281 -0.02814,-0.0108 -0.05123,-0.0086 -0.05131,0.0049 0,0.01348 -0.05615,0.02741 -0.124603,0.03097 -0.06845,0.0036 -0.1336,0.01891 -0.144786,0.0341 -0.02606,0.03542 -0.139983,0.04146 -0.796184,0.04221 -0.297591,4.49e-4 -0.537126,0.01439 -0.537126,0.0315 0,0.01698 -0.134282,0.03143 -0.298403,0.0321 -0.369505,0.0015 -0.539084,0.01992 -0.844055,0.09164 -0.131298,0.03088 -0.373004,0.06513 -0.537126,0.0761 -0.164122,0.01097 -0.298404,0.03207 -0.298404,0.04687 0,0.01481 -0.05371,0.0182 -0.119361,0.0076 -0.08039,-0.01304 -0.119361,-0.0061 -0.119361,0.02122 0,0.02232 -0.01443,0.03166 -0.03208,0.02075 -0.03408,-0.02106 -0.587009,0.111706 -0.615884,0.147893 -0.0094,0.01176 -0.04775,0.02527 -0.08526,0.03003 -0.319552,0.04061 -0.388045,0.05571 -0.371812,0.08197 0.01026,0.01661 -0.02466,0.02725 -0.07759,0.02367 -0.107275,-0.0073 -0.331986,0.114563 -0.292219,0.15843 0.014,0.01544 0.0067,0.01729 -0.01626,0.0041 -0.03986,-0.0229 -0.410541,0.170723 -0.776766,0.405746 -0.09378,0.06018 -0.400713,0.229852 -0.682064,0.377042 -0.8431486,0.441091 -1.5106691,0.786933 -1.9438848,1.00712 -0.331279,0.168378 -0.7656083,0.411685 -1.2106655,0.678201 -0.1208071,0.07234 -0.7235464,0.348753 -1.0060453,0.461358 -0.1688108,0.06729 -0.3529682,0.143067 -0.4092389,0.168389 -0.3782305,0.170213 -0.4488005,0.204855 -0.4944967,0.24276 -0.1118065,0.09275 -0.7795227,0.48269 -0.974639,0.569184 -0.1140235,0.05055 -0.3212008,0.108223 -0.4603938,0.12817 -0.2794774,0.04005 -0.6793677,0.03386 -0.6793677,-0.01051 0,-0.01562 -0.014897,-0.01916 -0.033103,-0.0079 -0.018206,0.01125 -0.04289,-0.01852 -0.054852,-0.0662 -0.011962,-0.04766 -0.028767,-0.08665 -0.037344,-0.08665 -0.027842,0 -0.1640932,0.0777 -0.1816285,0.103583 -0.024028,0.03546 -0.2704515,0.135139 -0.3340901,0.135139 -0.040327,0 -0.033244,-0.02142 0.029742,-0.08996 l 0.082677,-0.08996 -0.1534646,0.02493 c -0.084405,0.01371 -0.2762361,0.02752 -0.4262904,0.0307 -0.1617809,0.0034 -0.3133657,0.02625 -0.3724277,0.0561 -0.076685,0.03876 -0.1028397,0.04063 -0.113677,0.0081 -0.00774,-0.02322 -0.050258,-0.04223 -0.09448,-0.04223 -0.044221,0 -0.090781,-0.0168 -0.1034652,-0.03732 -0.012684,-0.02052 -0.05963,-0.03032 -0.1043224,-0.02178 -0.044694,0.0085 -0.0812605,0.0028 -0.0812605,-0.01277 0,-0.01557 -0.0226251,-0.01963 -0.0502787,-0.009 -0.0276536,0.01062 -0.0747891,-0.0052 -0.10474605,-0.03517 -0.0299569,-0.02996 -0.0836695,-0.05446 -0.11936206,-0.05446 -0.0755134,0 -0.16300798,-0.155442 -0.14396948,-0.255775 0.0216458,-0.114071 0.0858903,-0.269677 0.13551736,-0.328235 0.0258287,-0.03048 0.0424846,-0.07582 0.0370134,-0.100762 -0.005471,-0.02494 0.0126179,-0.04604 0.0401989,-0.04689 0.0275816,-8.75e-4 0.0695576,-0.03992 0.0932812,-0.08681 0.0237239,-0.04689 0.0433594,-0.07187 0.0436366,-0.05551 2.7333e-4,0.01638 0.0233532,0.0108 0.0512819,-0.01239 0.0279281,-0.02318 0.0409047,-0.05812 0.0288344,-0.07765 -0.0120695,-0.01954 -0.00597,-0.02563 0.013563,-0.01355 0.03826,0.02364 0.1334119,-0.06902 0.102556,-0.09987 -0.010234,-0.01023 -0.081291,0.01337 -0.15790503,0.05246 -0.19132318,0.0976 -0.53029094,0.131726 -0.60948002,0.06135 -0.040574,-0.03605 -0.10602968,-0.04828 -0.20760549,-0.03876 L 0,26.723956 0.13129745,26.603285 c 0.20194096,-0.185598 1.15569925,-0.834706 1.22646285,-0.834706 0.017944,0 1.0011722,-0.593762 1.1596288,-0.700289 l 0.1062908,-0.07146 -0.097498,-0.04316 c -0.075194,-0.03329 -0.09082,-0.05618 -0.068306,-0.100101 0.016056,-0.03132 0.038207,-0.148677 0.049225,-0.2608 0.013936,-0.141813 0.038705,-0.216631 0.081377,-0.245814 0.1348325,-0.09221 0.317117,-0.268214 0.317117,-0.306188 0,-0.04333 -0.2144179,0.01817 -0.8473768,0.243035 -0.1940842,0.06895 -0.3609084,0.117337 -0.3707213,0.107524 -0.030038,-0.03004 0.1889381,-0.28351 0.3932649,-0.455219 0.1064018,-0.08942 0.2148835,-0.182797 0.2410706,-0.207519 0.134978,-0.127412 0.6824316,-0.46318 1.0116807,-0.620491 0.2054297,-0.09815 0.4118743,-0.205241 0.4587663,-0.237974 0.046892,-0.03274 0.2270451,-0.133333 0.40034,-0.223546 0.1732947,-0.09022 0.3093674,-0.169742 0.3023838,-0.176726 -0.00698,-0.007 -0.1087422,0.01965 -0.226129,0.0592 -0.1501313,0.05057 -0.2241353,0.06119 -0.249524,0.0358 -0.025388,-0.02539 -0.024637,-0.03609 0.00253,-0.03609 0.021244,0 0.048451,-0.03096 0.060459,-0.06879 0.019185,-0.06045 0.1680893,-0.221549 0.4635947,-0.501568 0.048755,-0.0462 0.1428871,-0.117089 0.2091823,-0.157532 0.2161395,-0.131856 0.3951126,-0.257621 0.4169899,-0.29302 0.022754,-0.03682 1.0610754,-0.562441 1.1881729,-0.601483 0.04125,-0.01267 0.1911105,-0.08059 0.3330257,-0.150923 0.1419153,-0.07034 0.2933966,-0.139111 0.3366242,-0.152832 0.043226,-0.01372 0.1463559,-0.07271 0.2291753,-0.131083 0.1199707,-0.08456 0.1625792,-0.09864 0.2096072,-0.06927 0.047284,0.02953 0.1538875,-0.0087 0.5358933,-0.192258 0.2622766,-0.126017 0.5689448,-0.264972 0.6814862,-0.308789 0.1125401,-0.04382 0.2249981,-0.09985 0.2499076,-0.124513 0.081951,-0.08115 0.1773194,-0.116582 0.3449729,-0.128175 0.1131113,-0.0078 0.1886589,-0.03475 0.2391522,-0.08524 0.040595,-0.0406 0.1438461,-0.118225 0.2294472,-0.172512 0.1733184,-0.109916 0.2284002,-0.176259 0.2623733,-0.316014 0.01334,-0.05486 0.06939,-0.123095 0.132975,-0.161862 0.06158,-0.03755 0.08742,-0.0685 0.05876,-0.07038 -0.08661,-0.0057 0.555593,-0.16351 0.673539,-0.16552 0.06836,-0.0011 0.110835,-0.01922 0.110835,-0.0471 0,-0.02486 0.03789,-0.08081 0.08421,-0.124319 0.09656,-0.09071 0.08465,-0.1374 -0.03506,-0.1374 -0.139172,0 -0.09502,-0.04884 0.164003,-0.181411 0.306614,-0.156928 0.449342,-0.161093 0.841624,-0.02456 0.28366,0.09873 0.288206,0.09917 0.345032,0.03364 0.03167,-0.03652 0.06838,-0.06639 0.08158,-0.06639 0.02544,0 0.444123,-0.288445 0.530711,-0.36562 0.02814,-0.02508 0.1816,-0.14031 0.341033,-0.256071 0.159432,-0.115763 0.427996,-0.311618 0.596806,-0.435234 0.324997,-0.237988 0.519973,-0.363211 0.852581,-0.547569 0.112541,-0.06238 0.272663,-0.181743 0.355823,-0.265252 l 0.151204,-0.151834 -0.279091,0.01616 c -0.295876,0.01713 -0.322422,0.0016 -0.24494,-0.143172 0.05332,-0.09963 0.736112,-0.634181 1.100461,-0.86154 0.05926,-0.03698 0.08714,-0.07645 0.07227,-0.102311 -0.01332,-0.02315 -0.01159,-0.03067 0.0038,-0.01669 0.01542,0.01398 0.07543,-0.01065 0.133354,-0.05471 0.219267,-0.166827 1.171023,-0.727058 1.367134,-0.804733 0.258942,-0.102562 0.861798,-0.404573 0.886111,-0.443911 0.0101,-0.01634 0.121786,-0.06366 0.248193,-0.105146 0.287589,-0.09439 0.30873,-0.106826 0.229061,-0.134772 -0.06732,-0.02362 -0.07326,-0.02127 0.880461,-0.347551 0.239998,-0.08211 0.429331,-0.156371 0.420748,-0.165033 -0.0086,-0.0087 0.03161,-0.01751 0.08933,-0.01966 0.05771,-0.0022 0.121598,-0.02517 0.141958,-0.05115 0.02171,-0.0277 0.120634,-0.05234 0.239187,-0.05957 0.210669,-0.01285 0.602989,-0.173276 0.928324,-0.379597 0.08567,-0.05433 0.264945,-0.123611 0.398397,-0.153965 0.133453,-0.03035 0.2584,-0.06637 0.277662,-0.08004 0.01927,-0.01367 0.09641,-0.04558 0.171433,-0.07092 0.07503,-0.02534 0.173013,-0.07458 0.217746,-0.109424 0.04473,-0.03484 0.09298,-0.06335 0.107228,-0.06335 0.01425,0 0.07348,-0.04445 0.131636,-0.09877 0.113963,-0.106457 0.351444,-0.240935 0.463279,-0.26234 0.038,-0.0073 0.08445,-0.03321 0.10321,-0.05764 0.01875,-0.02443 0.09498,-0.08983 0.169391,-0.145337 0.194156,-0.144837 0.214536,-0.162058 0.478569,-0.404414 0.251516,-0.230862 0.606848,-0.516232 1.227718,-0.98599 0.344093,-0.2603468 0.589539,-0.4332454 1.258562,-0.886573 0.133088,-0.09018 0.449157,-0.2640469 0.702374,-0.3863728 0.253216,-0.1223245 0.529451,-0.2557186 0.613857,-0.2964302 0.08441,-0.04071 0.158614,-0.085626 0.16491,-0.099811 0.0063,-0.014184 0.02548,-0.017112 0.04263,-0.00653 0.01716,0.010605 0.0312,0.00558 0.0312,-0.011156 0,-0.016741 0.02005,-0.030435 0.04455,-0.030435 0.0245,0 0.158784,-0.058252 0.298402,-0.129445 0.139619,-0.071195 0.430335,-0.1978034 0.646038,-0.2813523 0.215704,-0.083549 0.491939,-0.1954213 0.613858,-0.2486049 0.121921,-0.053185 0.306077,-0.1321049 0.40924,-0.1753788 0.103162,-0.043273 0.29828,-0.1359289 0.433601,-0.2058975 0.135324,-0.069969 0.361685,-0.1753594 0.503025,-0.2342005 0.141344,-0.058844 0.256987,-0.118339 0.256987,-0.1322199 0,-0.013882 0.01945,-0.02524 0.04319,-0.02524 0.02377,0 0.303834,-0.1227275 0.622385,-0.2727296 0.318551,-0.1500017 0.675102,-0.3078947 0.792333,-0.3508747 0.117228,-0.042978 0.213145,-0.092292 0.213145,-0.1095837 0,-0.017291 0.01918,-0.027759 0.04263,-0.02326 0.06969,0.013374 0.594379,-0.1884232 0.639435,-0.2459351 0.0094,-0.011971 0.04007,-0.021527 0.06821,-0.021238 0.121558,0.00127 0.660662,-0.1945862 0.918837,-0.3337747 0.241294,-0.1300895 0.587545,-0.3830342 0.701059,-0.5121391 0.01875,-0.021333 0.06131,-0.048999 0.09456,-0.061479 0.03325,-0.012481 0.07001,-0.047591 0.08169,-0.078024 0.02692,-0.070138 0.174568,-0.219039 0.217202,-0.219039 0.01774,0 0.05143,-0.030691 0.07486,-0.068207 0.02342,-0.037513 0.06448,-0.068206 0.09123,-0.068206 0.02675,0 0.03887,-0.00976 0.02696,-0.021682 -0.01192,-0.011924 0.05783,-0.09633 0.155007,-0.1875678 0.09718,-0.091238 0.161929,-0.1668596 0.143886,-0.168049 -0.01803,-0.00118 0.0028,-0.016405 0.04612,-0.033815 0.04747,-0.019039 0.06915,-0.047456 0.05441,-0.071314 -0.01348,-0.021822 -0.0098,-0.030553 0.0083,-0.019409 0.01801,0.011138 0.09144,-0.040204 0.163151,-0.1140923 0.0717,-0.073888 0.117738,-0.1343421 0.10229,-0.1343421 -0.01546,0 0.02072,-0.036015 0.08038,-0.080032 0.05967,-0.044017 0.09718,-0.091336 0.08336,-0.105152 -0.01383,-0.013815 -0.0095,-0.020006 0.0097,-0.013752 0.04939,0.01615 0.223702,-0.1274928 0.194271,-0.1600887 -0.01342,-0.014875 -0.0072,-0.017247 0.01376,-0.00527 0.06096,0.034779 0.607999,-0.4589859 0.563584,-0.5087016 -0.0121,-0.013544 -0.0039,-0.014234 0.01831,-0.00155 0.02248,0.012885 0.06394,-0.010665 0.09378,-0.053276 0.02942,-0.042001 0.05349,-0.064232 0.05349,-0.049403 0,0.035425 0.155483,-0.078134 0.314002,-0.2293306 0.06954,-0.066327 0.191209,-0.1634486 0.270384,-0.2158258 l 0.143933,-0.095226 -0.09461,-0.017052 c -0.09208,-0.016595 -0.08962,-0.020213 0.09234,-0.1351948 0.102836,-0.064979 0.180276,-0.1355869 0.172099,-0.1569075 -0.0082,-0.021322 0.03576,-0.063723 0.09766,-0.094226 l 0.112534,-0.055461 -0.110835,-7.738e-4 c -0.121681,-8.545e-4 -0.148951,-0.052289 -0.04518,-0.085223 0.03611,-0.011461 0.177308,-0.1287936 0.313783,-0.260741 0.136473,-0.1319475 0.294923,-0.2638643 0.352116,-0.2931487 0.05718,-0.029285 0.112307,-0.066044 0.122484,-0.081687 0.01017,-0.015643 0.08691,-0.0653452 0.170517,-0.1104495 0.08361,-0.0451035 0.148684,-0.0976873 0.144617,-0.11685267 -0.0041,-0.0191645 0.0331,-0.0450046 0.08257,-0.0574227 0.04948,-0.0124174 0.127764,-0.0523182 0.173974,-0.0886698 0.04622,-0.0363507 0.110775,-0.0660921 0.143466,-0.0660921 0.08441,0 0.311151,-0.09789 0.391757,-0.16912543 0.07224,-0.0638419 0.511584,-0.24011339 0.598463,-0.24011339 0.02826,0 0.08528,-0.0237481 0.126716,-0.0527741 0.137291,-0.09616158 0.661132,-0.14352007 1.525634,-0.1379271367 0.792642,0.005129127 0.827085,0.008206607 1.091305,0.0975625367 0.150053,0.050747 0.291903,0.09246343 0.315215,0.09270283 0.09396,9.6895e-4 0.976611,0.42511458 1.100071,0.52862744 0.02811,0.02359 0.159498,0.0947176 0.291932,0.15806233 0.235834,0.11281152 0.25372,0.12719829 0.25372,0.20412699 0,0.023291 0.03271,0.029587 0.08526,0.016402 0.05003,-0.012556 0.08526,-0.00673 0.08526,0.014086 0,0.019516 0.04219,0.054229 0.09378,0.077137 0.05158,0.022909 0.123537,0.06862 0.159895,0.1015785 0.03637,0.032959 0.08624,0.059926 0.110835,0.059926 0.02459,0 0.04471,0.012883 0.04471,0.028629 0,0.037801 0.156041,0.1077839 0.240323,0.1077839 0.03664,0 0.0666,0.015347 0.0666,0.034103 0,0.050098 0.102113,0.041678 0.103394,-0.00853 4.52e-4,-0.025512 0.01972,-0.01804 0.04753,0.018611 0.03352,0.044207 0.07116,0.055035 0.135327,0.038932 0.05776,-0.014496 0.08889,-0.00837 0.08889,0.017504 0,0.021897 0.01498,0.030556 0.0333,0.019242 0.0461,-0.028494 0.444224,0.057046 0.423279,0.090944 -0.0093,0.015101 0.01841,0.027008 0.06163,0.02646 0.09589,-0.00121 0.512136,0.096881 0.42817,0.100902 -0.03285,0.00157 -0.05968,0.016565 -0.05968,0.033318 0,0.03259 0.410853,0.1157062 0.437957,0.0886 0.0089,-0.00889 0.03294,-0.00257 0.0534,0.014024 0.06789,0.055028 0.736829,0.2457834 0.776319,0.2213777 0.02148,-0.013281 0.02951,-0.00894 0.01796,0.00974 -0.01146,0.018537 0.130919,0.1054296 0.316393,0.1930939 0.185473,0.087664 0.472547,0.2615323 0.637942,0.3863739 0.1654,0.1248417 0.319902,0.2270363 0.343352,0.2270984 0.02346,6.81e-5 0.03547,0.00725 0.02675,0.015975 -0.0087,0.00872 0.03686,0.077444 0.101278,0.1527108 0.06442,0.075267 0.110018,0.148369 0.101315,0.162449 -0.0087,0.014079 0.0071,0.034399 0.03515,0.045154 0.02802,0.010755 0.0512,8.546e-4 0.05148,-0.022004 4.51e-4,-0.032265 0.0064,-0.032371 0.02662,-4.693e-4 0.01435,0.022595 0.02243,0.1068802 0.01796,0.1872996 -0.0057,0.1024476 0.0013,0.1309839 0.024,0.09533 0.02653,-0.041988 0.03272,-0.038959 0.03537,0.017319 0.0018,0.037513 0.01096,0.049024 0.0204,0.025578 0.0094,-0.023446 0.02802,-0.042629 0.04119,-0.042629 0.03781,0 0.03799,0.1327189 0,0.1560674 -0.02003,0.012395 -0.01119,0.037667 0.0217,0.061689 0.03979,0.029097 0.04904,0.067036 0.03244,0.1331389 -0.01277,0.050846 -0.03781,0.092447 -0.05563,0.092447 -0.01783,0 -0.02058,-0.019183 -0.0061,-0.042629 0.01444,-0.023446 -0.01394,-0.016324 -0.06312,0.015829 -0.08648,0.056549 -0.219373,0.09752 -0.342779,0.1056776 -0.0328,0.00217 -0.05968,0.015832 -0.05968,0.030358 0,0.014528 -0.03452,0.026195 -0.07673,0.025926 -0.04219,-2.688e-4 -0.12277,0.00591 -0.17904,0.013737 -0.971882,0.1351175 -1.779858,0.2316536 -2.0803,0.2485518 -0.206324,0.011606 -0.393648,0.035672 -0.416267,0.053482 -0.02261,0.017814 -0.05578,0.023341 -0.07366,0.012286 -0.05845,-0.036117 -0.137867,0.016695 -0.115393,0.076729 0.01854,0.049502 0.01385,0.050803 -0.03628,0.010053 -0.03979,-0.032383 -0.05754,-0.034549 -0.05754,-0.00703 0,0.021875 -0.01918,0.037283 -0.04264,0.034238 -0.113695,-0.014764 -0.168405,0.00487 -0.149657,0.0537 0.02179,0.056803 -0.03027,0.070789 -0.06349,0.017051 -0.01159,-0.018757 -0.0547,-0.032889 -0.0958,-0.031409 -0.04111,0.00149 -0.0564,0.010143 -0.03402,0.019253 0.02238,0.00911 0.03199,0.039256 0.02134,0.066986 -0.01674,0.043659 -0.02757,0.043 -0.0805,-0.00493 -0.04614,-0.041755 -0.07725,-0.046733 -0.126687,-0.020273 -0.03605,0.019289 -0.100448,0.02594 -0.143132,0.014777 -0.06857,-0.017931 -0.07496,-0.010784 -0.05491,0.061432 0.02026,0.072941 0.01773,0.075587 -0.02355,0.024614 -0.043,-0.053101 -0.05392,-0.052267 -0.155229,0.011876 -0.05993,0.037942 -0.108954,0.096734 -0.108954,0.1306499 0,0.044877 -0.01859,0.056808 -0.0682,0.04383 -0.0459,-0.012002 -0.06821,-0.00104 -0.06821,0.033502 0,0.031463 -0.04526,0.059826 -0.11689,0.073265 -0.0945,0.017728 -0.121158,0.041367 -0.139184,0.1234405 -0.02175,0.099065 -0.131379,0.1912377 -0.208964,0.1757021 -0.0213,-0.00429 -0.04769,0.015535 -0.05861,0.044002 -0.01092,0.028466 -0.0342,0.051758 -0.05175,0.051758 -0.03502,0 -0.139325,0.089285 -0.496709,0.4251098 -0.130107,0.1222664 -0.264395,0.2311337 -0.298403,0.241927 -0.03401,0.010793 -0.0623,0.045447 -0.06289,0.077007 -6.73e-4,0.031562 -0.0658,0.1065697 -0.144939,0.1666874 -0.270923,0.2058155 -0.531097,0.4853767 -0.510157,0.5481845 0.0076,0.022891 -0.0026,0.041625 -0.02258,0.041625 -0.02005,0 -0.05384,0.069059 -0.0751,0.1534642 -0.02126,0.084405 -0.05168,0.153465 -0.06763,0.153465 -0.01593,0 -0.02014,0.023019 -0.0093,0.051153 0.0108,0.028133 0.0056,0.051153 -0.01149,0.051153 -0.01712,0 -0.03115,0.034533 -0.03119,0.076733 0,0.1328989 -0.05393,0.4006339 -0.07758,0.3860182 -0.02005,-0.012388 -0.02725,0.1344432 -0.04256,0.8672752 -0.002,0.1031621 -0.01694,0.1959073 -0.03288,0.2061001 -0.03087,0.019749 -0.0581,0.1355871 -0.06226,0.2648322 -0.0013,0.043314 -0.0177,0.069369 -0.03625,0.057909 -0.01933,-0.011951 -0.02505,0.00175 -0.0134,0.03209 0.01118,0.029109 0.0038,0.052929 -0.01638,0.052929 -0.02017,0 -0.02725,0.024567 -0.01573,0.054598 0.01151,0.030024 0.004,0.065088 -0.01676,0.077907 -0.02074,0.012818 -0.04479,0.099111 -0.05345,0.1917602 -0.0087,0.092648 -0.03066,0.1734248 -0.0489,0.1795037 -0.01824,0.00606 -0.02536,0.040824 -0.01584,0.077209 0.01077,0.041208 -0.0034,0.074092 -0.03753,0.087197 -0.03015,0.01157 -0.04634,0.03478 -0.03596,0.05157 0.01038,0.0168 0.005,0.03053 -0.01205,0.03053 -0.017,0 -0.03228,0.04742 -0.03393,0.105393 -0.0051,0.179718 -0.117438,0.644115 -0.15081,0.623489 -0.01741,-0.01076 -0.02813,0.0011 -0.02381,0.02649 0.0043,0.02533 -0.0024,0.08442 -0.01478,0.131309 -0.01244,0.04689 -0.02923,0.154317 -0.03733,0.238722 -0.03648,0.380211 -0.166541,0.813049 -0.262056,0.87208 -0.01658,0.01025 -0.03014,0.06376 -0.03014,0.118927 0,0.05516 -0.01494,0.100297 -0.03323,0.100297 -0.04322,0 -0.145532,0.197792 -0.122006,0.23586 0.01,0.01608 -0.0048,0.04821 -0.0327,0.07138 -0.02793,0.02318 -0.05078,0.06201 -0.05078,0.08628 0,0.02428 -0.01521,0.04926 -0.03381,0.05551 -0.01859,0.0063 -0.03965,0.06171 -0.0468,0.123232 -0.0071,0.06153 -0.03801,0.139504 -0.06858,0.173284 -0.03057,0.03378 -0.04532,0.07168 -0.03278,0.08423 0.01255,0.01254 0.0024,0.02281 -0.02266,0.02281 -0.02501,0 -0.03585,0.0096 -0.0241,0.02137 0.0306,0.0306 -0.07344,0.220798 -0.170284,0.311282 -0.04526,0.04228 -0.07383,0.09055 -0.06351,0.107262 0.01033,0.01671 -0.0042,0.03918 -0.03219,0.04993 -0.02803,0.01075 -0.05096,0.05164 -0.05096,0.09084 0,0.03921 -0.01459,0.06228 -0.03239,0.05127 -0.03561,-0.022 -0.113081,0.09788 -0.08282,0.128147 0.01035,0.01034 -0.02074,0.04474 -0.06911,0.07642 -0.04835,0.03169 -0.08004,0.07036 -0.0704,0.08595 0.01898,0.03069 -0.114371,0.168819 -0.162961,0.168819 -0.01633,0 -0.02025,0.01524 -0.0088,0.03387 0.01151,0.01863 -0.03329,0.0897 -0.09956,0.157928 -0.06627,0.06823 -0.110938,0.139503 -0.09927,0.158378 0.01168,0.01887 -0.01552,0.06424 -0.06042,0.100806 -0.0449,0.03656 -0.05862,0.05631 -0.03048,0.04387 0.02814,-0.01243 0.01662,0.0079 -0.02558,0.04514 -0.0422,0.03726 -0.07673,0.08078 -0.07673,0.09671 0,0.01593 -0.03129,0.0485 -0.06953,0.07238 -0.03825,0.02388 -0.06135,0.05666 -0.05135,0.07284 0.01,0.01618 -0.0057,0.03859 -0.03494,0.0498 -0.02921,0.01121 -0.04333,0.03622 -0.03137,0.05557 0.01196,0.01935 0.0028,0.03097 -0.02039,0.02582 -0.02317,-0.0052 -0.05348,0.02899 -0.06734,0.07589 -0.01387,0.04689 -0.02673,0.07265 -0.0286,0.05724 -0.0047,-0.0388 -0.105707,0.06596 -0.105707,0.109636 0,0.01944 -0.03113,0.05199 -0.06916,0.07235 -0.03805,0.02035 -0.06111,0.05004 -0.05127,0.06597 0.0099,0.01593 -0.03193,0.07271 -0.09283,0.126176 -0.0609,0.05347 -0.118399,0.112566 -0.127777,0.131323 -0.0094,0.01876 -0.0255,0.03129 -0.03584,0.02784 -0.01033,-0.0034 -0.03831,0.02502 -0.0622,0.06325 -0.03566,0.0571 -0.03535,0.06485 0.0018,0.0434 0.05754,-0.03329 -0.100394,0.1488 -0.202424,0.233387 -0.04238,0.03514 -0.06834,0.078 -0.05767,0.09525 0.01067,0.01725 -0.0028,0.03137 -0.02973,0.03137 -0.05121,0 -0.198718,0.175689 -0.238939,0.28459 -0.01279,0.0346 -0.05386,0.07092 -0.09128,0.08071 -0.03742,0.0098 -0.06803,0.03258 -0.06803,0.05064 0,0.01807 -0.09548,0.127541 -0.212171,0.243271 -0.116693,0.115729 -0.208771,0.221926 -0.204617,0.235994 0.0042,0.01407 -0.0136,0.02558 -0.03946,0.02558 -0.0419,0 -0.36223,0.342153 -0.36223,0.386912 0,0.01812 -0.168333,0.207786 -0.434598,0.489667 -0.0797,0.08438 -0.134927,0.169585 -0.122716,0.189342 0.01221,0.01976 0.0063,0.02606 -0.01324,0.01401 -0.01949,-0.01205 -0.148957,0.09803 -0.287676,0.244627 -0.138717,0.146595 -0.276317,0.280693 -0.305775,0.297993 -0.113761,0.06682 -0.575254,0.510672 -0.575254,0.553274 0,0.0247 -0.01457,0.0359 -0.03239,0.0249 -0.01781,-0.01102 -0.04944,0.01184 -0.07028,0.05078 -0.02084,0.03893 -0.07624,0.08538 -0.123127,0.103201 -0.04688,0.01782 -0.07681,0.04604 -0.06651,0.06271 0.01031,0.01667 0,0.04609 -0.02352,0.06537 -0.04179,0.03468 -0.06108,0.04086 -0.127513,0.04086 -0.01875,0 -0.03027,0.01782 -0.02558,0.03961 0.0047,0.02178 -0.02216,0.04864 -0.05968,0.05968 -0.09596,0.02823 -0.460392,0.278998 -0.460392,0.316789 0,0.01721 -0.01255,0.02353 -0.02789,0.01405 -0.01535,-0.0095 -0.06906,0.02093 -0.119362,0.06757 -0.05031,0.04665 -0.09193,0.07268 -0.09251,0.05785 -6.72e-4,-0.01482 -0.01667,-6.8e-5 -0.0358,0.03272 -0.01911,0.03282 -0.06469,0.05968 -0.101275,0.05968 -0.03659,0 -0.09465,0.02686 -0.129032,0.05968 -0.03439,0.03282 -0.08427,0.06436 -0.110835,0.07008 -0.02657,0.0057 -0.06461,0.03156 -0.08453,0.05742 -0.01992,0.02586 -0.07746,0.05738 -0.127885,0.07003 -0.05042,0.01265 -0.09168,0.03925 -0.09168,0.0591 0,0.01985 -0.0097,0.02636 -0.02162,0.01447 -0.04327,-0.04327 -0.532043,0.244878 -0.72163,0.425432 -0.107024,0.101924 -0.294339,0.269485 -0.416257,0.372357 -0.351072,0.296226 -0.477445,0.419441 -0.477445,0.465526 0,0.02358 -0.01248,0.03903 -0.02774,0.03434 -0.03696,-0.01136 -0.401163,0.357536 -0.389174,0.394188 0.0052,0.01575 -0.0044,0.02012 -0.0213,0.0097 -0.01687,-0.01042 -0.120842,0.08723 -0.231043,0.217028 -0.110194,0.129794 -0.21571,0.237324 -0.234468,0.238955 -0.01875,0.0015 -0.139775,0.102333 -0.268924,0.223779 -0.129156,0.121446 -0.242179,0.220809 -0.251161,0.220809 -0.02537,0 -0.405851,0.275683 -0.572008,0.414454 -0.08205,0.06852 -0.314931,0.239897 -0.51753,0.380842 -0.387603,0.269655 -0.569368,0.44102 -0.766137,0.7223 -0.153643,0.219636 -0.36955,0.618807 -0.36955,0.683236 0,0.02749 -0.01176,0.04998 -0.02616,0.04998 -0.03167,0 -0.156417,0.321733 -0.224782,0.579755 -0.02733,0.103161 -0.05974,0.38707 -0.07201,0.63091 -0.01228,0.243838 -0.0367,0.457921 -0.0543,0.47574 -0.01759,0.01781 -0.03199,0.148686 -0.03199,0.290814 0,0.176685 -0.01649,0.281962 -0.05214,0.332861 -0.06265,0.08945 -0.03628,0.229636 0.05526,0.293757 0.03494,0.02447 0.273134,0.242804 0.529317,0.485172 0.256175,0.242373 0.479046,0.445791 0.495268,0.452042 0.01622,0.0063 0.02949,0.03311 0.02949,0.05968 0,0.02657 0.01297,0.04831 0.02881,0.04831 0.01584,0 0.103231,0.07579 0.194197,0.168432 0.09096,0.09264 0.17544,0.16222 0.187725,0.154627 0.01228,-0.0076 0.05524,0.02404 0.09546,0.07029 0.04022,0.04625 0.08856,0.0841 0.107445,0.0841 0.01889,0 0.03433,0.02302 0.03433,0.05115 0,0.02814 0.02393,0.05115 0.05316,0.05115 0.02924,0 0.04403,0.01481 0.03285,0.03288 -0.01118,0.01808 0.0378,0.07056 0.108823,0.116611 0.146636,0.09507 0.410528,0.327953 0.371622,0.327953 -0.01411,0 -0.0027,0.02302 0.02548,0.05115 0.02813,0.02814 0.07527,0.05115 0.104743,0.05115 0.02948,0 0.04976,0.01918 0.04506,0.04263 -0.0047,0.02344 0.01067,0.03879 0.0341,0.0341 0.02345,-0.0047 0.03879,0.01066 0.0341,0.0341 -0.0047,0.02344 0.01067,0.03879 0.03411,0.0341 0.02345,-0.0047 0.04263,0.0068 0.04263,0.02558 0,0.01875 0.01151,0.03167 0.02558,0.02869 0.01407,-0.003 0.05372,0.0068 0.08812,0.0218 0.04921,0.02142 0.05285,0.03336 0.01705,0.05605 -0.03107,0.0197 -0.01515,0.029 0.05031,0.02936 0.05269,4.48e-4 0.08814,0.01291 0.07878,0.02806 -0.0094,0.01515 0.01658,0.05262 0.05767,0.08326 0.211981,0.158129 0.321478,0.232868 0.398667,0.272128 0.115603,0.05878 0.204537,0.136366 0.205017,0.178823 6.73e-4,0.01926 0.06544,0.06496 0.144938,0.101519 0.141447,0.06505 0.340091,0.238163 0.308982,0.269278 -0.02718,0.02718 0.06833,0.153699 0.127777,0.169241 0.06948,0.01817 0.188265,0.276674 0.320871,0.69827 0.08404,0.267179 0.118475,0.330863 0.220688,0.408197 0.06662,0.0504 0.147197,0.124217 0.17907,0.164057 0.09286,0.116054 0.407185,0.314295 0.561941,0.354407 0.212211,0.05501 0.317944,0.197997 0.317944,0.42998 0,0.177064 0.0046,0.186422 0.114315,0.232258 0.06286,0.02626 0.181802,0.05857 0.2643,0.07179 0.08249,0.01322 0.264143,0.05332 0.403658,0.08911 0.139516,0.0358 0.327111,0.06508 0.416878,0.06508 0.191088,0 0.623427,0.160645 0.804959,0.299105 0.06647,0.0507 0.148841,0.153773 0.183033,0.229045 0.08345,0.183693 0.08156,0.232392 -0.0079,0.203999 -0.0628,-0.01994 -0.06843,-0.01289 -0.04589,0.05738 0.06069,0.189278 0.08178,0.333911 0.08254,0.566071 l 8.75e-4,0.247251 -0.10231,0 c -0.141004,0 -0.224605,-0.0965 -0.270173,-0.311862 -0.02207,-0.104268 -0.09225,-0.260923 -0.163567,-0.365089 -0.119313,-0.174261 -0.130354,-0.181565 -0.24619,-0.162767 -0.149842,0.02432 -0.206755,0.09784 -0.206755,0.267096 l 0,0.130514 -0.144938,-0.0091 c -0.128781,-0.0081 -0.143506,-0.0015 -0.132061,0.05907 0.02757,0.146015 0.01951,0.403542 -0.01289,0.41185 -0.01875,0.0048 -0.05329,0.0011 -0.07673,-0.0083 z m -4.19369,-3.988246 c 0.03255,-0.03255 -0.11857,-0.219098 -0.220265,-0.271924 -0.05026,-0.0261 -0.100619,-0.07448 -0.111934,-0.107508 -0.01132,-0.03303 -0.08846,-0.113161 -0.171444,-0.178065 -0.08298,-0.06491 -0.144604,-0.124279 -0.136937,-0.131946 0.01826,-0.01826 -0.252842,-0.244541 -0.292968,-0.244541 -0.01698,0 -0.03088,-0.02302 -0.03088,-0.05116 0,-0.02813 -0.01918,-0.04732 -0.04263,-0.04263 -0.02345,0.0047 -0.03879,-0.01067 -0.03411,-0.0341 0.0047,-0.02344 -0.0145,-0.04263 -0.04263,-0.04263 -0.02814,0 -0.05115,-0.02165 -0.05115,-0.04811 0,-0.02646 -0.09552,-0.13005 -0.212251,-0.230198 -0.116736,-0.100146 -0.253339,-0.224289 -0.30356,-0.27587 -0.05022,-0.05158 -0.09883,-0.09379 -0.108026,-0.09379 -0.0092,0 -0.09926,-0.08057 -0.200152,-0.17904 -0.186476,-0.182007 -0.359788,-0.332507 -0.382912,-0.332507 -0.007,0 -0.08682,-0.06799 -0.177335,-0.151102 -0.09051,-0.08311 -0.17673,-0.143589 -0.191592,-0.1344 -0.01486,0.0092 -0.02702,0.0024 -0.02702,-0.01528 0,-0.04201 -0.511787,-0.42675 -0.567681,-0.42675 -0.02375,0 -0.03553,-0.01237 -0.02619,-0.02747 0.02194,-0.03549 -0.281469,-0.225376 -0.403641,-0.252609 -0.05158,-0.01149 -0.09378,-0.03557 -0.09378,-0.05349 0,-0.019 -0.02956,-0.01678 -0.07091,0.0054 -0.06793,0.03636 -0.064,0.04498 0.09378,0.205769 0.09058,0.0923 0.183871,0.167842 0.207322,0.167869 0.02344,2.7e-5 0.04263,0.01302 0.04263,0.02885 0,0.01584 0.117144,0.14245 0.26033,0.281352 0.143178,0.138902 0.292804,0.289504 0.332507,0.334665 0.125042,0.142265 0.487691,0.495555 0.560957,0.546484 0.03864,0.02686 0.06096,0.06523 0.04957,0.08526 -0.01138,0.02003 -0.0087,0.02557 0.0061,0.0123 0.0147,-0.01326 0.07471,0.01169 0.133356,0.05543 0.05864,0.04375 0.165259,0.106726 0.236917,0.139967 0.0936,0.04341 0.117608,0.06848 0.08526,0.08899 -0.03381,0.02144 -0.02966,0.02869 0.01667,0.02908 0.03393,4.48e-4 0.05331,0.01409 0.04306,0.03066 -0.01667,0.02698 0.14951,0.115529 0.236282,0.125904 0.01875,0.0023 0.05419,0.0064 0.07875,0.0093 0.02455,0.0029 0.03515,0.02054 0.02356,0.0393 -0.01161,0.01875 0.0036,0.0341 0.0339,0.0341 0.03023,0 0.111436,0.03837 0.180445,0.08526 0.06901,0.04689 0.10272,0.08549 0.07492,0.08578 -0.04424,6.72e-4 -0.04417,0.0046 6.73e-4,0.03333 0.02814,0.01803 0.0764,0.02496 0.107242,0.01537 0.05882,-0.01828 0.141637,0.04693 0.20138,0.15856 0.01945,0.03632 0.09688,0.104889 0.17209,0.152367 0.10982,0.06933 0.132322,0.100292 0.114247,0.157236 -0.01432,0.04508 -0.0096,0.06294 0.01288,0.04903 0.01947,-0.01203 0.04436,-0.0074 0.05532,0.01035 0.01095,0.01772 -0.01483,0.0389 -0.05733,0.04706 -0.06684,0.01286 -0.06461,0.01548 0.01656,0.01949 0.07775,0.0038 0.09378,0.02023 0.09378,0.09574 0,0.149781 0.08859,0.215831 0.289483,0.215831 0.09713,0 0.186006,-0.0094 0.197504,-0.02091 z m -3.916702,-3.351519 c 0.01031,-0.01667 -0.03866,-0.07277 -0.108823,-0.124668 -0.162544,-0.12024 -0.245198,-0.220673 -0.246159,-0.299097 -0.0011,-0.08664 -0.139045,-0.398508 -0.176318,-0.398508 -0.01692,0 -0.04534,-0.03837 -0.06316,-0.08526 -0.01784,-0.04689 -0.04766,-0.08526 -0.06629,-0.08526 -0.01864,0 -0.02504,-0.02302 -0.01425,-0.05115 0.0108,-0.02813 0.0057,-0.05115 -0.01129,-0.05115 -0.04968,0 -0.120395,0.399496 -0.08306,0.469258 0.01779,0.03321 0.143661,0.159902 0.279747,0.281536 0.13608,0.121632 0.279425,0.254059 0.318537,0.294281 0.07702,0.0792 0.141411,0.09803 0.17108,0.05003 z m -0.771004,-2.50443 c -0.0043,-0.02202 0.0183,-0.08917 0.05025,-0.149197 0.03194,-0.06003 0.05808,-0.149179 0.05808,-0.198109 0,-0.05436 0.01416,-0.08021 0.0364,-0.06647 0.03025,0.01869 0.09496,-0.116002 0.0709,-0.147575 -0.004,-0.0054 0.01613,-0.03331 0.04495,-0.06211 0.02881,-0.02881 0.05237,-0.08874 0.05237,-0.133183 0,-0.04445 0.01414,-0.08955 0.03142,-0.100225 0.01728,-0.01069 0.05839,-0.09215 0.09136,-0.181054 0.03297,-0.08891 0.08744,-0.201739 0.12104,-0.250748 0.0336,-0.04901 0.05132,-0.09889 0.03937,-0.110837 -0.01194,-0.01194 -0.0038,-0.02173 0.01806,-0.02173 0.02189,0 0.03955,-0.02686 0.03927,-0.05968 -6.73e-4,-0.05155 -0.0055,-0.05271 -0.03706,-0.0085 -0.03005,0.04207 -0.03367,0.03904 -0.02039,-0.01705 0.0089,-0.03751 0.02822,-0.09773 0.04298,-0.13381 0.02151,-0.05253 0.01548,-0.06124 -0.03023,-0.0437 -0.07092,0.02721 -0.07416,-0.02222 -0.0059,-0.09045 0.02814,-0.02813 0.05065,-0.07911 0.05002,-0.113272 -8.75e-4,-0.05383 -0.01019,-0.05124 -0.06906,0.01945 -0.03736,0.04486 -0.07781,0.07168 -0.08988,0.0596 -0.01208,-0.01207 -0.05363,0.0049 -0.09234,0.0378 -0.06688,0.05679 -0.06809,0.05679 -0.02417,0 0.02827,-0.0365 0.03201,-0.05968 0.0096,-0.05968 -0.02012,0 -0.04886,0.01918 -0.06386,0.04263 -0.01501,0.02344 -0.057,0.06565 -0.09334,0.09379 -0.06006,0.0465 -0.06403,0.04573 -0.0437,-0.0085 0.0123,-0.03282 0.0081,-0.05969 -0.0093,-0.05969 -0.01746,0 -0.04841,0.06522 -0.06882,0.144939 -0.02042,0.07972 -0.04562,0.167959 -0.05602,0.196096 -0.04849,0.131129 -0.111834,0.499144 -0.09503,0.552109 0.01033,0.03255 0.0018,0.09092 -0.01898,0.129723 -0.04485,0.08379 -0.0079,0.827525 0.03967,0.798134 0.01662,-0.01026 0.02669,-0.0367 0.02239,-0.05873 z m 0.415265,-1.487433 c 0,-0.01986 0.01535,-0.03611 0.0341,-0.03611 0.01875,0 0.03411,0.0068 0.03411,0.01503 0,0.0083 -0.01535,0.02453 -0.03411,0.03611 -0.01875,0.01158 -0.0341,0.0048 -0.0341,-0.01503 z m 0.06821,-0.102309 c 0,-0.01985 0.01535,-0.03611 0.0341,-0.03611 0.01875,0 0.0341,0.0068 0.0341,0.01503 0,0.0083 -0.01535,0.02452 -0.0341,0.03611 -0.01875,0.01158 -0.0341,0.0048 -0.0341,-0.01503 z M 50.350048,2.911456 c -0.04024,-0.04024 -0.0851,-0.060404 -0.09969,-0.044811 -0.01458,0.015594 -0.0073,0.035235 0.01633,0.043647 0.02355,0.00841 0.03614,0.026146 0.02793,0.039407 -0.0082,0.013261 0.01737,0.026543 0.05685,0.029515 l 0.07175,0.0054 -0.07316,-0.073163 z M 28.551232,31.653751 c 0,-0.0083 0.01534,-0.02453 0.0341,-0.03611 0.01875,-0.01158 0.0341,-0.0048 0.0341,0.01503 0,0.01987 -0.01534,0.03611 -0.0341,0.03611 -0.01875,0 -0.0341,-0.0067 -0.0341,-0.01503 z M 47.469354,1.6014697 c 0.0231,-0.00934 0.06912,-0.00991 0.102307,-0.00127 0.03317,0.00865 0.01431,0.016289 -0.04196,0.016985 -0.05627,6.93e-4 -0.08342,-0.00638 -0.06032,-0.015721 z"
-     style="fill:#000000" />
+     style="fill:#dddddd" />
 </svg>
index 68afd0bfa5d83db273bd75a04e27e819f526548e..4f692335a16184401b6e98bde6f2cc774322f97d 100644 (file)
@@ -1,4 +1,4 @@
-<Label Font="{./Font}" Text="{./Caption}" CornerRadius="{./CornerRadius}" Width="Stretched"
+<Label Font="{./Font}" Text="{./Caption}" CornerRadius="{./CornerRadius}" Width="Stretched" Focusable="{./Focusable}"
        Margin="3"
        Background="{./Background}"
        Foreground="{./Foreground}"
index 8289ce3fa89441c9f2fb9659ee3766916692f1ea..19e70b9d04b2b4121ab90d16c67a2412d3c21cee 100644 (file)
@@ -5,38 +5,31 @@
                <Widget Width="30" Height="16" Background="{./CurrentColor}"/>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="R:"/>
-                       <ColorSlider Name="cs" Component="Red" CurrentColor="{²./CurrentColor}"/>                      
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Red" CurrentColor="{./CurrentColor}" Value="{²./Red}"/>                      
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="G:"/>
-                       <ColorSlider Name="cs" Component="Green" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Green" CurrentColor="{./CurrentColor}" Value="{²./Green}"/>
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="B:"/>
-                       <ColorSlider Name="cs" Component="Blue" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Blue" CurrentColor="{./CurrentColor}" Value="{²./Blue}"/>
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="A:"/>
-                       <ColorSlider Name="cs" Component="Alpha" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Alpha" CurrentColor="{./CurrentColor}" Value="{²./Alpha}"/>
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="H:"/>
-                       <ColorSlider Name="cs" Component="Hue" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Hue" CurrentColor="{./CurrentColor}" Value="{²./Hue}"/>
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="S:"/>
-                       <ColorSlider Name="cs" Component="Saturation" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Saturation" CurrentColor="{./CurrentColor}" Value="{²./Saturation}"/>
                </HorizontalStack>
                <HorizontalStack Height="Fit">
                        <Label Style="labColor" Text="V:"/>
-                       <ColorSlider Name="cs" Component="Value" CurrentColor="{²./CurrentColor}"/>
-                       <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                       <ColorSlider Name="cs" Component="Value" CurrentColor="{./CurrentColor}" Value="{²./Value}"/>
                </HorizontalStack>
        </VerticalStack>                        
 </Border>
diff --git a/Crow/Templates/ColorSlider.template b/Crow/Templates/ColorSlider.template
new file mode 100644 (file)
index 0000000..2d05e7d
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Group Background="{./Background}" >
+       <ColorGauge Component="{./Component}" CurrentColor="{./CurrentColor}" Orientation="{./Orientation}" Margin="10" Height="Stretched" CornerRadius="10"/>
+       <Border Name="Cursor" Foreground="White" CornerRadius="15" BorderWidth="2">
+               <Group Fit="true">
+                       <Label Left="2" Top="2" Text="{./Value}" Foreground="Black" Font="mono bold, 10"/>
+                       <Label Text="{./Value}" Foreground="WhiteSmoke" Font="mono bold, 10"/>
+               </Group>
+       </Border>
+</Group>
\ No newline at end of file
index 02685f411b8a43b6e4fea62dadb29a79ec3ad29d..e75d573a9d7b3de9a4a0c3112f84018de0725e32 100644 (file)
@@ -4,7 +4,7 @@
                <Shape Style="ArrowBut" MouseDown="./OnDecrease"
                Height="10" Size="10,10" Path="M 4.5,0.5 L 9.5,9.5 L 0.5,9.5 Z F"/>
                <Container Margin="1">
-                       <Widget Name="Cursor" Background="Grey" CornerRadius="{./CornerRadius}"/>
+                       <Widget Style="ScrollBarCursor" Name="Cursor" CornerRadius="{./CornerRadius}"/>
                </Container>
                <Shape Style="ArrowBut" MouseDown="./OnIncrease"
                        Height="10" Size="10,10" Path="M 0.5,0.5 L 9.5,0.5 L 4.5,9.5 Z F"/>
index a2c676137fb3e5dc66d1f2282a3de546dd4d0e3c..b0cf29fb6a90d1d22df3e43e51dd64d847fbe1cf 100644 (file)
@@ -10,6 +10,7 @@ using System.Collections.Generic;
 using Drawing2D;
 using System.Globalization;
 using Crow.DebugLogger;
+using System.Diagnostics;
 
 namespace Crow
 {
@@ -68,9 +69,15 @@ namespace Crow
                }
                #endregion
 
-               void init(Interface iFace, ref Rectangle rect, out float widthRatio, out float heightRatio) {
-                       if (!IsLoaded)
-                               load (iFace);
+               bool init(Interface iFace, ref Rectangle rect, out float widthRatio, out float heightRatio) {
+                       if (!IsLoaded) {
+                               try {
+                                       load (iFace);
+                               } catch (Exception e) {
+                                       Debug.WriteLine($"Picture loading failed ({this.Path}): {e.Message}");
+                               }
+                       }
+                               
 
                        widthRatio = 1f;
                        heightRatio = 1f;
@@ -85,6 +92,7 @@ namespace Crow
                                                widthRatio = heightRatio;
                                }
                        }
+                       return IsLoaded;
                }
 
                /// <summary>
@@ -98,7 +106,8 @@ namespace Crow
                {
                        DbgLogger.AddEventWithMsg(DbgEvtType.Ressources, $"{Path}[Picture.Paint:]");
 
-                       init(iFace, ref bounds, out float widthRatio, out float heightRatio);
+                       if (!init(iFace, ref bounds, out float widthRatio, out float heightRatio))
+                               return;
 
                        gr.SaveTransformations ();
 
@@ -114,7 +123,8 @@ namespace Crow
                {
                        DbgLogger.AddEventWithMsg(DbgEvtType.Ressources, $"{Path} [Picture.SetAsSource]");
 
-                       init(iFace, ref bounds, out float widthRatio, out float heightRatio);
+                       if (!init(iFace, ref bounds, out float widthRatio, out float heightRatio))
+                               return;
 
                        using (ISurface tmp = iFace.Backend.CreateSurface (bounds.Width, bounds.Height)) {
                                using (IContext gr = iFace.Backend.CreateContext (tmp)) {
diff --git a/Crow/src/IML/IMLAttributes.cs b/Crow/src/IML/IMLAttributes.cs
deleted file mode 100644 (file)
index b983d1a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013-2020  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
-
-using System;
-
-namespace Crow
-{
-       public class DesignIgnore : Attribute
-       {               
-       }
-
-       public class DesignCategory : Attribute
-       {
-               public string Name { get; set; }
-
-               public DesignCategory (string name)
-               {
-                       Name = name;
-               }
-       }
-}
-
index 69159830bf1b851e9d7abcd333945089f8c2090c..40f6e580a902549c6d6e61e1bebc50fb349f2503 100644 (file)
@@ -1608,41 +1608,6 @@ namespace Crow.IML {
                        orig.ValueChanged += tmp;
                }
                #endregion
-
-               /// <summary>
-               /// search for graphic object type in crow assembly, if not found,
-               /// search for type independently of namespace in all the loaded assemblies
-               /// </summary>
-               /// <remarks>
-               /// </remarks>
-               /// <returns>the corresponding type object</returns>
-               /// <param name="typeName">graphic object type name without its namespace</param>
-               public static Type GetWidgetTypeFromName (string typeName){
-                       if (knownGOTypes.ContainsKey (typeName))
-                               return knownGOTypes [typeName];
-                       Type t = Type.GetType ("Crow." + typeName);
-                       if (t != null) {
-                               knownGOTypes.Add (typeName, t);
-                               return t;
-                       }
-
-                       foreach (Type expT in Assembly.GetEntryAssembly ().GetExportedTypes ()) {
-                               if (expT.Name != typeName)
-                                       continue;
-                               knownGOTypes.Add (typeName, expT);
-                               return expT;
-                       }
-
-                       foreach (Assembly a in Interface.crowAssemblies) {
-                               foreach (Type expT in a.GetExportedTypes ()) {
-                                       if (expT.Name != typeName)
-                                               continue;
-                                       knownGOTypes.Add (typeName, expT);
-                                       return expT;
-                               }
-                       }
-                       return null;
-               }
        }
 }
 
index e865739e53ddc6fd5a2be3bf21509ecdf6186228..a10ef1db3ed511dc2e33eaa8fbabf25496ccbd35 100644 (file)
@@ -675,6 +675,7 @@ namespace Crow
                public long TotalWidgetCreated => Widget.TotalWidgetCreated;
                public long TotalWidgetDisposed => Widget.TotalWidgetDisposed;
                public long TotalWidgetActive => Widget.TotalWidgetCreated - Widget.TotalWidgetDisposed;
+               public long TotalWidgetPainted => Widget.TotalWidgetPainted;
                public long TotalWidgetInGraphicTree {
                        get {
                                lock(UpdateMutex) {
@@ -685,6 +686,7 @@ namespace Crow
                                }
                        }
                }
+               public long CanceledChildPaintCount => GroupBase.CanceledChildPaintCount;
 #endif
 
                #region DragAndDrop
@@ -1857,10 +1859,18 @@ namespace Crow
                        <Label Text='TotalWidgetActive:' Width='50%'/>
                        <Label Text='{TotalWidgetActive}' TextAlignment='Right'/>
                </HorizontalStack>
+               <HorizontalStack Height='Fit'>
+                       <Label Text='TotalWidgetPainted:' Width='50%'/>
+                       <Label Text='{TotalWidgetPainted}' TextAlignment='Right'/>
+               </HorizontalStack>
                <HorizontalStack Height='Fit'>
                        <Label Text='TotalWidgetInGraphicTree:' Width='50%'/>
                        <Label Text='{TotalWidgetInGraphicTree}' TextAlignment='Right'/>
                </HorizontalStack>
+               <HorizontalStack Height='Fit'>
+                       <Label Text='Total Canceled Child Paint in Groups:' Width='50%'/>
+                       <Label Text='{CanceledChildPaintCount}' TextAlignment='Right'/>
+               </HorizontalStack>
        </VerticalStack>
 </Window>
                                ").DataSource = this;
index 68f4d2c3427399ea979d968b3031f43a670db26e..6533a9b4606c5aa1ed2d29c94adc716df267f854 100644 (file)
@@ -18,7 +18,12 @@ namespace Crow.Text
 
                public int CharDiff => string.IsNullOrEmpty (ChangedText) ? - Length : ChangedText.Length - Length;
         public bool IsEmpty => string.IsNullOrEmpty (ChangedText) && Length == 0;
-        public TextChange (int position, int length, string changedText) {
+        public bool HasNewText => !string.IsNullOrEmpty (ChangedText);
+        
+        public bool HasNoEffect(ReadOnlySpan<char> src)
+            => src.Slice(Start, Length).Equals(ChangedText, StringComparison.Ordinal);
+
+        public TextChange (int position, int length, string changedText = null) {
             Start = position;
             Length = length;
             ChangedText = changedText;
diff --git a/Crow/src/Widgets/ColorGauge.cs b/Crow/src/Widgets/ColorGauge.cs
new file mode 100644 (file)
index 0000000..759e1ce
--- /dev/null
@@ -0,0 +1,137 @@
+// Copyright (c) 2013-2025  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+
+using System;
+using System.ComponentModel;
+
+
+using Drawing2D;
+
+namespace Crow {
+       public class ColorGauge : Widget
+       {
+               #region CTOR
+               protected ColorGauge () {}
+               public ColorGauge (Interface iface, string style = null) : base (iface, style) { }
+               #endregion
+
+               ColorComponent component;
+               Color currentColor = Colors.Black;
+               protected Orientation orientation;
+               protected bool inverted;
+
+               
+               [DefaultValue (ColorComponent.Value)]
+               public ColorComponent Component {
+                       get => component;
+                       set {
+                               if (component == value)
+                                       return;
+                               component = value;
+                               NotifyValueChangedAuto (component);
+                               RegisterForRedraw ();
+                       }
+               }
+               public Color CurrentColor {
+                       get => currentColor;
+                       set {
+                               if (currentColor == value)
+                                       return;
+
+                               currentColor = value;
+
+                               NotifyValueChangedAuto (currentColor);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue (Orientation.Horizontal)]
+               public virtual Orientation Orientation {
+                       get => orientation;
+                       set {
+                               if (orientation == value)
+                                       return;
+                               orientation = value;
+                               NotifyValueChangedAuto (orientation);
+                               RegisterForLayouting (LayoutingType.Sizing | LayoutingType.ArrangeChildren);
+                       }
+               }
+               /// <summary>
+               /// if true, horizontal gauge will align drawing right, and vertical on bottom.
+               /// </summary>
+               public bool Inverted {
+                       get => inverted;
+                       set {
+                               if (inverted == value)
+                                       return;
+                               inverted = value;
+                               NotifyValueChangedAuto (inverted);
+                               RegisterForRedraw ();
+                       }
+               }
+               protected override void onDraw (IContext gr) {
+                       DbgLogger.StartEvent (DbgEvtType.GODraw, this);
+
+                       //base.onDraw (gr);
+
+                       Rectangle cb = ClientRectangle;
+                       Rectangle r = cb;
+
+                       /*if (orientation == Orientation.Horizontal) {
+                               r.Width = (int)(cb.Width / Maximum * Value);
+                               if (inverted)
+                                       r.Left = cb.Right - r.Width;
+                       } else {
+                               r.Height = (int)(cb.Height / Maximum * Value);
+                               if (inverted)
+                                       r.Top = cb.Bottom - r.Height;
+                       }*/
+                       Gradient grad = new Gradient (
+                               Orientation == Orientation.Vertical ? GradientType.Vertical : GradientType.Horizontal);
+                       Color c = currentColor;
+
+                       switch (component) {
+                       case ColorComponent.Red:
+                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (0, c.G, c.B, c.A)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (255, c.G, c.B, c.A)));
+                               break;
+                       case ColorComponent.Green:
+                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, 0, c.B, c.A)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, 255, c.B, c.A)));
+                               break;
+                       case ColorComponent.Blue:
+                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, c.G, 0, c.A)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, c.G, 255, c.A)));
+                               break;
+                       case ColorComponent.Alpha:
+                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, c.G, c.B, 0)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, c.G, c.B, 255)));
+                               break;
+                       case ColorComponent.Hue:
+                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (1.0, 0, 0, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (0.167, new Color (1.0, 1, 0, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (0.333, new Color (0.0, 1, 0, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (0.5, new Color (0.0, 1, 1, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (0.667, new Color (0.0, 0, 1, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (0.833, new Color (1.0, 0, 1, 1)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (1.0, 0, 0, 1)));
+                               break;
+                       case ColorComponent.Saturation:
+                               grad.Stops.Add (new Gradient.ColorStop (0, Color.FromHSV (c.Hue, c.Value, 0, c.A)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, Color.FromHSV (c.Hue, c.Value, 0xff, c.A)));
+                               break;
+                       case ColorComponent.Value:
+                               grad.Stops.Add (new Gradient.ColorStop (0, Color.FromHSV (c.Hue, 0, c.Saturation, c.A)));
+                               grad.Stops.Add (new Gradient.ColorStop (1, Color.FromHSV (c.Hue, 0xff, c.Saturation, c.A)));
+                               break;
+                       }
+
+                       grad.SetAsSource (IFace, gr, r);
+                       CairoHelpers.CairoRectangle (gr, r, CornerRadius);
+                       gr.Fill ();
+
+                       DbgLogger.EndEvent (DbgEvtType.GODraw);
+               }
+       }
+}
+
index 3b31ea43d1845663c3ac8182fef78413216abfe2..7b250be5a9e1eb77fca97f063497588ca6290f82 100644 (file)
@@ -29,11 +29,81 @@ namespace Crow
                        set {
                                if (currentColor.Equals(value))
                                        return;
+                               //Color prev = currentColor;
                                currentColor = value;
                                NotifyValueChangedAuto (currentColor);
-                               NotifyValueChanged ("CurrentColor2", Color.FromHSV (currentColor.Hue, currentColor.Value, currentColor.Saturation, currentColor.A));
+                               
                        }
                }
+               public int Red {
+                       get => (int)currentColor.R;
+                       set {
+                               if ((uint)value == currentColor.R)
+                                       return;
+                               CurrentColor = new Color((uint)value, currentColor.G, currentColor.B, currentColor.A);
+                               NotifyValueChangedAuto(currentColor.R);
+                       }
+               }
+               public int Green {
+                       get => (int)currentColor.G;
+                       set {
+                               if ((uint)value == currentColor.G)
+                                       return;
+                               CurrentColor = new Color(currentColor.R, (uint)value, currentColor.B, currentColor.A);
+                               NotifyValueChangedAuto(currentColor.G);
+                       }
+               }               
+               public int Blue {
+                       get => (int)currentColor.B;
+                       set {
+                               if ((uint)value == currentColor.B)
+                                       return;
+                               CurrentColor = new Color(currentColor.R, currentColor.G, (uint)value, currentColor.A);
+                               NotifyValueChangedAuto(currentColor.B);
+                       }
+               }
+               public int Alpha {
+                       get => (int)currentColor.A;
+                       set {
+                               if ((uint)value == currentColor.A)
+                                       return;
+                               CurrentColor = new Color(currentColor.R, currentColor.G, currentColor.B, (uint)value);
+                               NotifyValueChangedAuto(currentColor.A);
+                       }
+               }
+               public int Hue {
+                       get => (int)currentColor.B;
+                       set {
+                               if ((uint)value == currentColor.Hue)
+                                       return;
+                               Color c = Color.FromHSV ((uint)value, currentColor.Value, currentColor.Saturation, currentColor.A);
+                               for (int i = 0; i < 2; i++) {
+                                       c = Color.FromHSV ((uint)value, c.Value, c.Saturation, c.A);
+                               }
+                               CurrentColor = Color.FromHSV ((uint)value, c.Value, c.Saturation, c.A);
+                               NotifyValueChangedAuto(currentColor.Hue);
+                       }
+               }
+               public int Saturation {
+                       get => (int)currentColor.B;
+                       set {
+                               if ((uint)value == currentColor.Saturation)
+                                       return;
+                               CurrentColor = Color.FromHSV (currentColor.Hue, currentColor.Value, (uint)value, currentColor.A);
+                               NotifyValueChangedAuto(currentColor.Saturation);
+                       }
+               }
+               public int Value {
+                       get => (int)currentColor.B;
+                       set {
+                               if ((uint)value == currentColor.Value)
+                                       return;
+                               CurrentColor = Color.FromHSV (currentColor.Hue, (uint)value, currentColor.Saturation, currentColor.A);                                                                                          
+                               NotifyValueChangedAuto(currentColor.Value);
+                       }
+               }
+                       
+
                public IList<Colors> AvailableColors => //Enum.GetValues (typeof (Color)).ToList<Color> ();// Colors. ColorDic.Values.OrderBy (c => c.Hue).ToList ();
                        EnumsNET.Enums.GetValues<Colors> ().ToList<Colors> ();
 
index 61bb951dda466d038e97cb483ef95a2a6e746588..d01d2d7d5f2bf06ae2e45cc3e608e489ea8e72ec 100644 (file)
@@ -15,53 +15,16 @@ namespace Crow
        /// Color component slider with background gradient ranging from 0 to 1 for this component value.
        /// </summary>
        [DesignIgnore]
-       public class ColorSlider : Widget
+       public class ColorSlider : Slider
        {
                #region CTOR
                protected ColorSlider() {}
                public ColorSlider (Interface iface, string style = null) : base (iface, style) { }
                #endregion
 
-               protected Point mousePos;//store local mouse pos sync with currentValue
-               Orientation orientation;
-               CursorType cursorType = CursorType.Pentagone;
-               ColorComponent component;
                Color currentColor = Colors.Black;
-               int currentValue = -1;//force notify for property less binding 'CurrentValue'
+               ColorComponent component;
 
-               [DefaultValue (Orientation.Horizontal)]
-               public Orientation Orientation {
-                       get => orientation;
-                       set {
-                               if (orientation == value)
-                                       return;
-                               orientation = value;
-                               NotifyValueChangedAuto (orientation);
-                               RegisterForGraphicUpdate ();
-                       }
-               }
-               [DefaultValue (CursorType.Pentagone)]
-               public CursorType CursorType {
-                       get => cursorType;
-                       set {
-                               if (cursorType == value)
-                                       return;
-                               cursorType = value;
-                               NotifyValueChangedAuto (cursorType);
-                               RegisterForRedraw ();
-                       }
-               }
-               [DefaultValue (ColorComponent.Value)]
-               public ColorComponent Component {
-                       get => component;
-                       set {
-                               if (component == value)
-                                       return;
-                               component = value;
-                               NotifyValueChangedAuto (component);
-                               RegisterForRedraw ();
-                       }
-               }
                public Color CurrentColor {
                        get => currentColor;
                        set {
@@ -70,223 +33,45 @@ namespace Crow
 
                                currentColor = value;
 
-                               NotifyValueChangedAuto (currentColor);
-                               RegisterForRedraw ();
-
                                switch (component) {
                                case ColorComponent.Red:
-                                       if (currentValue == currentColor.R)
-                                               return;
-                                       currentValue = (int)currentColor.R;
+                                       Value = currentColor.R;
                                        break;
                                case ColorComponent.Green:
-                                       if (currentValue == currentColor.G)
-                                               return;
-                                       currentValue = (int)currentColor.G;
+                                       Value = currentColor.G;
                                        break;
                                case ColorComponent.Blue:
-                                       if (currentValue == currentColor.B)
-                                               return;
-                                       currentValue = (int)currentColor.B;
+                                       Value = currentColor.B;
                                        break;
                                case ColorComponent.Alpha:
-                                       if (currentValue == currentColor.A)
-                                               return;
-                                       currentValue = (int)currentColor.A;
+                                       Value = currentColor.A;
                                        break;
                                case ColorComponent.Hue:
-                                       if (currentValue == currentColor.Hue)
-                                               return;
-                                       currentValue = (int)currentColor.Hue;
+                                       Value = currentColor.Hue;
                                        break;
                                case ColorComponent.Saturation:
-                                       if (currentValue == currentColor.Saturation)
-                                               return;
-                                       currentValue = (int)currentColor.Saturation;
+                                       Value = currentColor.Saturation;
                                        break;
                                case ColorComponent.Value:
-                                       if (currentValue == currentColor.Value)
-                                               return;
-                                       currentValue = (int)currentColor.Value;
+                                       Value = currentColor.Value;
                                        break;
-                               }
-
-                               NotifyValueChanged ("CurrentValue", $"{currentValue:000}");
-
-                               if (Orientation == Orientation.Horizontal)
-                                       mousePos.X = (int)Math.Floor ((double)currentValue * ClientRectangle.Width / 255.0);
-                               else
-                                       mousePos.Y = (int)Math.Floor ((double)currentValue * ClientRectangle.Height / 255.0);
-                       }
-               }
-               public override void onMouseMove (object sender, MouseMoveEventArgs e)
-               {
-                       if (IFace.IsDown(MouseButton.Left)) {
-                               updateMouseLocalPos (e.Position);
-                               e.Handled = true;
-                       }
-                       base.onMouseMove (sender, e);
-               }
-               public override void onMouseDown (object sender, MouseButtonEventArgs e)
-               {
+                               }                               
 
-                       if (e.Button == MouseButton.Left) {
-                               updateMouseLocalPos (e.Position);
-                               e.Handled = true;
-                       }
-                       base.onMouseDown (sender, e);
-               }
-
-               protected override void onDraw (IContext gr) {
-                       DbgLogger.StartEvent (DbgEvtType.GODraw, this);
-
-                       base.onDraw (gr);
-
-                       RectangleD r = ClientRectangle;
-                       r.Height -= 4;
-                       r.Y += 2;
-
-                       Gradient grad = new Gradient (
-                               Orientation == Orientation.Vertical ? GradientType.Vertical : GradientType.Horizontal);
-                       Color c = currentColor;
-
-                       switch (component) {
-                       case ColorComponent.Red:
-                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (0, c.G, c.B, c.A)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (255, c.G, c.B, c.A)));
-                               break;
-                       case ColorComponent.Green:
-                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, 0, c.B, c.A)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, 255, c.B, c.A)));
-                               break;
-                       case ColorComponent.Blue:
-                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, c.G, 0, c.A)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, c.G, 255, c.A)));
-                               break;
-                       case ColorComponent.Alpha:
-                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (c.R, c.G, c.B, 0)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (c.R, c.G, c.B, 255)));
-                               break;
-                       case ColorComponent.Hue:
-                               grad.Stops.Add (new Gradient.ColorStop (0, new Color (1.0, 0, 0, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (0.167, new Color (1.0, 1, 0, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (0.333, new Color (0.0, 1, 0, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (0.5, new Color (0.0, 1, 1, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (0.667, new Color (0.0, 0, 1, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (0.833, new Color (1.0, 0, 1, 1)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, new Color (1.0, 0, 0, 1)));
-                               break;
-                       case ColorComponent.Saturation:
-                               grad.Stops.Add (new Gradient.ColorStop (0, Color.FromHSV (c.Hue, c.Value, 0, c.A)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, Color.FromHSV (c.Hue, c.Value, 0xff, c.A)));
-                               break;
-                       case ColorComponent.Value:
-                               grad.Stops.Add (new Gradient.ColorStop (0, Color.FromHSV (c.Hue, 0, c.Saturation, c.A)));
-                               grad.Stops.Add (new Gradient.ColorStop (1, Color.FromHSV (c.Hue, 0xff, c.Saturation, c.A)));
-                               break;
-                       }
-
-                       grad.SetAsSource (IFace, gr, r);
-                       CairoHelpers.CairoRectangle (gr, r, CornerRadius);
-                       gr.Fill ();
-
-                       r = ClientRectangle;
-
-                       switch (cursorType) {
-                       case CursorType.Rectangle:
-                               if (Orientation == Orientation.Horizontal) {
-                                       r.Width = 5;
-                                       r.X = mousePos.X - 2.5;
-                               } else {
-                                       r.Height = 5;
-                                       r.Y = mousePos.Y - 2.5;
-                               }
-                               CairoHelpers.CairoRectangle (gr, r, 1);
-                               break;
-                       case CursorType.Circle:
-                               if (Orientation == Orientation.Horizontal)
-                                       gr.Arc (mousePos.X, r.Center.Y, 3.5, 0, Math.PI * 2.0);
-                               else
-                                       gr.Arc (r.Center.X, mousePos.Y, 3.5, 0, Math.PI * 2.0);
-                               break;
-                       case CursorType.Pentagone:
-                               if (Orientation == Orientation.Horizontal) {
-                                       r.Width = 5;
-                                       r.X = mousePos.X - 2.5;
-                                       double y = r.CenterD.Y - r.Height * 0.2;
-                                       gr.MoveTo (mousePos.X, y);
-                                       y += r.Height * 0.15;
-                                       gr.LineTo (r.Right, y);
-                                       gr.LineTo (r.Right, r.Bottom - 0.5);
-                                       gr.LineTo (r.Left, r.Bottom - 0.5);
-                                       gr.LineTo (r.Left, y);
-                                       gr.ClosePath ();
-                               } else {
-                               }
-                               break;
+                               NotifyValueChangedAuto (currentColor);
+                               RegisterForRedraw ();
                        }
-
-                       gr.SetSource (Colors.Black);
-                       gr.LineWidth = 2.0;
-                       gr.StrokePreserve ();
-                       gr.SetSource (Colors.White);
-                       gr.LineWidth = 1.0;
-                       gr.Stroke ();
-
-                       DbgLogger.EndEvent (DbgEvtType.GODraw);
-               }
-               public override void OnLayoutChanges (LayoutingType layoutType) {
-                       base.OnLayoutChanges (layoutType);
-
-                       if (Orientation == Orientation.Horizontal) {
-                               if (layoutType == LayoutingType.Width)
-                                       mousePos.X = (int)Math.Floor (currentValue / 255.0 * ClientRectangle.Width);
-                       } else if (layoutType == LayoutingType.Height)
-                               mousePos.Y = (int)Math.Floor (currentValue / 255.0 * ClientRectangle.Height);
                }
-
-               protected virtual void updateMouseLocalPos(Point mPos){
-                       Rectangle r = ScreenCoordinates (Slot);
-                       Rectangle cb = ClientRectangle;
-                       mousePos = mPos - r.Position;
-
-                       mousePos.X = Math.Max(cb.X, mousePos.X);
-                       mousePos.X = Math.Min(cb.Right, mousePos.X);
-                       mousePos.Y = Math.Max(cb.Y, mousePos.Y);
-                       mousePos.Y = Math.Min(cb.Bottom, mousePos.Y);
-
-                       if (Orientation == Orientation.Horizontal)
-                               currentValue = (int)((double)mousePos.X / ClientRectangle.Width * 0xff);
-                       else
-                               currentValue = (int)((double)mousePos.Y / ClientRectangle.Height * 0xff);
-
-                       NotifyValueChanged ("CurrentValue", $"{currentValue:000}");
-
-                       Color c = currentColor;
-                       switch (component) {
-                       case ColorComponent.Red:
-                               CurrentColor = new Color((uint)currentValue, c.G, c.B, c.A);
-                               break;
-                       case ColorComponent.Green:
-                               CurrentColor = new Color (c.R, (uint)currentValue, c.B, c.A);
-                               break;
-                       case ColorComponent.Blue:
-                               CurrentColor = new Color (c.R, c.G, (uint)currentValue, c.A);
-                               break;
-                       case ColorComponent.Alpha:
-                               CurrentColor = new Color (c.R, c.G, c.B, (uint)currentValue);
-                               break;
-                       case ColorComponent.Hue:
-                               CurrentColor = Color.FromHSV ((uint)currentValue, c.Value, c.Saturation, c.A);
-                               break;
-                       case ColorComponent.Saturation:
-                               CurrentColor = Color.FromHSV (c.Hue, c.Value, (uint)currentValue, c.A);
-                               break;
-                       case ColorComponent.Value:
-                               CurrentColor = Color.FromHSV (c.Hue, (uint)currentValue, c.Saturation, c.A);
-                               break;
+               [DefaultValue (ColorComponent.Value)]
+               public ColorComponent Component {
+                       get => component;
+                       set {
+                               if (component == value)
+                                       return;
+                               component = value;
+                               NotifyValueChangedAuto (component);
+                               RegisterForRedraw ();
                        }
-               }
+               }               
        }
 }
 
index 8cab26c1e8cd2883e9fa6c71d6f31243d1dba0e5..4df23304caf141b89aa788727f75e155a2ddf5ea 100644 (file)
@@ -18,8 +18,8 @@ namespace Crow {
 
                #region protected fields
                protected double actualValue, minValue, maxValue;
-               Orientation orientation;
-               bool inverted;
+               protected Orientation orientation;
+               protected bool inverted;
                #endregion
 
                #region public properties
index 3a3e72c9cddc1b8ff2b1698fa697be8104538d62..65fe860fa6cd084f4748e05a71c28b2a28414503 100644 (file)
@@ -15,6 +15,9 @@ namespace Crow
 {
        public abstract class GroupBase : Widget
     {
+               #if DEBUG_STATS
+               public static long CanceledChildPaintCount = 0;
+               #endif
                #if DESIGN_MODE
                public override bool FindByDesignID(string designID, out Widget go){
                        go = null;
@@ -236,8 +239,16 @@ namespace Crow
                        childrenRWLock.EnterReadLock ();
                        try
                        {
-                               for (int i = 0; i < Children.Count; i++)
-                                       Children[i].Paint (gr);
+                               Rectangle cb = ClientRectangle;
+                               for (int i = 0; i < Children.Count; i++) {
+                                       if (cb.Intersect(Children[i].ContextCoordinates(Children[i].ClientRectangle)))
+                                               Children[i].Paint (gr);
+#if DEBUG_STATS
+                                       else
+                                               CanceledChildPaintCount++;
+#endif
+                               }
+                                       
                        } catch (Exception e) {
                                Console.WriteLine($"Erreur group {this} paint: {e.Message}");
                                Console.WriteLine(e.StackTrace);
index dbd7e58d1a59f18b2664c03f8f0553d5aea0b3f4..96dcaa8625a25cfc493d4b15994a83badf2398c6 100644 (file)
@@ -148,15 +148,15 @@ namespace Crow
                        if (_orientation == Orientation.Horizontal) {
                                unity = (r.Width - cursorSize) / (Maximum - Minimum);
                                if (inverted)
-                                       cursor.Left = r.Right - cursorSize - (int)((Value - Minimum) * unity);
+                                       cursor.Left = r.Width - cursorSize - (int)((Value - Minimum) * unity);
                                else
-                                       cursor.Left = r.Left + (int)((Value - Minimum) * unity);
+                                       cursor.Left = (int)((Value - Minimum) * unity);
                        } else {
                                unity = (r.Height - cursorSize) / (Maximum - Minimum);
                                if (inverted)
-                                       cursor.Top = r.Bottom - cursorSize - (int)((Value - Minimum) * unity);
+                                       cursor.Top = r.Height - cursorSize - (int)((Value - Minimum) * unity);
                                else
-                                       cursor.Top = r.Top + (int)((Value - Minimum) * unity);
+                                       cursor.Top = (int)((Value - Minimum) * unity);
                        }
         }
                Point mouseDownInit;
@@ -231,18 +231,20 @@ namespace Crow
                /// </summary>
                /// <param name="sender">event sender</param>
                /// <param name="e">event argument</param>
-               public void OnDecrease (object sender, EventArgs e)
+               public void OnDecrease (object sender, MouseEventArgs e)
                {
                        Value -= SmallIncrement;
+                       e.Handled = true;
                }
                /// <summary>
                /// Handler to increase current value by `SmallIncrement`
                /// </summary>
                /// <param name="sender">event sender</param>
                /// <param name="e">event argument</param>
-               public void OnIncrease (object sender, EventArgs e)
+               public void OnIncrease (object sender, MouseEventArgs e)
                {
                        Value += SmallIncrement;
+                       e.Handled = true;
                }
 
                protected override void Dispose(bool disposing)
index d97069690af11841f4eec978d2a592c98d7be8cf..4cbace6e3388c00c60baa72a0d39d0c79f7c62d7 100644 (file)
@@ -289,12 +289,17 @@ namespace Crow {
                void Ol_ListRemove (object sender, ListChangedEventArg e)
                {
                        cancelLoadingThread ();
+                       
+                       if (selectedItemContainer == itemsContainer.Children[e.Index])
+                               SelectedItem = null;
+
                        if (this.isPaged) {
                                int p = e.Index / itemPerPage;
                                int i = e.Index % itemPerPage;
                                (itemsContainer.Children [p] as Group).DeleteChild (i);
                        } else
                                itemsContainer.DeleteChild (e.Index);
+                       
                }
 
                void Ol_ListAdd (object sender, ListChangedEventArg e)
index bebb57a398413c2d42f1a34857e2f2b39b22ee97..5e47dd6b6091d42666886ceaf9ba2774c29b31e4 100644 (file)
@@ -41,6 +41,7 @@ namespace Crow
 #if DEBUG_STATS
                public static long TotalWidgetCreated;
                public static long TotalWidgetDisposed;
+               public static long TotalWidgetPainted;
                public virtual long ChildCount => 0;
 #endif
 #if DESIGN_MODE
@@ -450,7 +451,8 @@ namespace Crow
                                return
                                        Parent.ScreenCoordinates(r) + Parent.getSlot().Position + Parent.ClientRectangle.Position;
                        } catch (Exception ex) {
-                               Debug.WriteLine (ex);
+                               Debug.WriteLine (ex.Message);
+                               Debug.WriteLine (ex.StackTrace);
                                return default(Rectangle);
                        }
                }
@@ -2043,6 +2045,9 @@ namespace Crow
                                LastPaintedSlot = Slot;
                        //}
                        Painted.Raise (this, null);
+#if DEBUG_STATS                        
+                       TotalWidgetPainted++;
+#endif
 
                        DbgLogger.EndEvent (DbgEvtType.GOPaint);
                        return true;
diff --git a/Crow/src/Widgets/XmlIgnoreAttribute.cs b/Crow/src/Widgets/XmlIgnoreAttribute.cs
deleted file mode 100644 (file)
index 29e5bf6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Expandable.cs
-//
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-
-namespace Crow
-{
-    public class XmlIgnoreAttribute : Attribute
-    {
-    }
-}
\ No newline at end of file
index 6694dfa8cfc0294910b058ce7c25f81d02b03316..0067d10d3439e4b7d8479c898668bf157eda6113 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (c) 2013-2020  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+// Copyright (c) 2013-2025  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
 // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 
@@ -7,23 +7,6 @@ using System.Collections.Generic;
 
 namespace Crow
 {
-       public struct FileLocation {
-               public string FilePath;
-               public int Line;
-               public int Column;
-               public int Length;
-
-               public FileLocation(string filePath, int line, int column, int length = 0){
-                       FilePath = filePath;
-                       Line = line;
-                       Column = column;
-                       Length = length;
-               }
-               public override string ToString ()
-               {
-                       return string.Format ("{0} ({1},{2})", FilePath, Line, Column);
-               }
-       }
        public class Style : Dictionary<string, string>
        {
                #if DESIGN_MODE
index e1bd3e467259ef0a9cf9af29c0eb27fbb0498689..f3f829df0f03fd0a22de186fa5c9a3967f47d2b3 100644 (file)
@@ -15,7 +15,7 @@
 
                <!-- Compile with logging enabled, this will slow down apps, use this only
                         for debugging purpose-->
-               <CrowDebugLogEnabled>true</CrowDebugLogEnabled>
+               <CrowDebugLogEnabled>false</CrowDebugLogEnabled>
 
                <!-- Collect several statistics on widgets-->
                <CrowDebugStatsEnabled>false</CrowDebugStatsEnabled>
index 72123f266071984ba47e1ba49cb4773c9d242f42..d1c3f10f2b062bd3c801abf58ce5c8dfbbd0188e 100644 (file)
@@ -10,6 +10,7 @@
                <Title>Drawing 2D Library</Title>
                <Description>
                2d shapes and drawing interfaces used in C.R.O.W and Vke.net.
+               Contains also most used crow basic object for sharing across load contexts.
                </Description>
                <License>MIT</License>
                <Authors>Jean-Philippe Bruyère</Authors>
diff --git a/Drawing2D/src/IMLAttributes.cs b/Drawing2D/src/IMLAttributes.cs
new file mode 100644 (file)
index 0000000..9a6d7df
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (c) 2013-2020  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+
+using System;
+
+namespace Crow
+{
+       public class XmlIgnoreAttribute : Attribute
+       { 
+       }
+
+       public class DesignIgnore : Attribute
+       {               
+       }
+
+       public class DesignCategory : Attribute
+       {
+               public string Name { get; set; }
+
+               public DesignCategory (string name)
+               {
+                       Name = name;
+               }
+       }
+}
+
diff --git a/Drawing2D/src/Style.cs b/Drawing2D/src/Style.cs
new file mode 100644 (file)
index 0000000..3feab7c
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (c) 2013-2025  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+
+using System;
+using System.Collections.Generic;
+
+namespace Crow
+{
+       public struct FileLocation {
+               public string FilePath;
+               public int Line;
+               public int Column;
+               public int Length;
+
+               public FileLocation(string filePath, int line, int column, int length = 0){
+                       FilePath = filePath;
+                       Line = line;
+                       Column = column;
+                       Length = length;
+               }
+               public override string ToString ()
+               {
+                       return string.Format ("{0} ({1},{2})", FilePath, Line, Column);
+               }
+       }
+}
+
index 93526308efe9685f887791f57cc0433e45537c95..0aac787306950c5044d7dd1e85302a5ffe2f722b 100644 (file)
@@ -86,6 +86,10 @@ namespace Samples
                                        if (!string.IsNullOrEmpty(selItem))
                                                ObservableTestList.Remove(lb.SelectedItem as string);
                                },null, true);
+                       CMDObsListRemove2 = new ActionCommand ("Remove2",
+                               () => {
+                                       ObservableTestList.Remove(observableTestListSelectedItem);
+                               },null, false);
                }
                DeviceEventType deviceEventTypeEnum;
                public DeviceEventType DeviceEventTypeEnum {
@@ -332,7 +336,7 @@ namespace Samples
                        }
                }
 
-               public ActionCommand CMDObsListAdd,CMDObsListRemove;
+               public ActionCommand CMDObsListAdd,CMDObsListRemove,CMDObsListRemove2;
                string obsListNewItem = "new item";
                public string ObsListNewItem {
                        get => obsListNewItem;
@@ -345,8 +349,17 @@ namespace Samples
                        }
                }
                public ObservableList<string> ObservableTestList = new ObservableList<string>(new string[]{"string1", "string2"});
-
-
+               string observableTestListSelectedItem = null;
+               public string ObservableTestListSelectedItem {
+                       get => observableTestListSelectedItem;
+                       set {
+                               if (value == observableTestListSelectedItem)
+                                       return;
+                               observableTestListSelectedItem = value;
+                               NotifyValueChanged(ObservableTestListSelectedItem);
+                               CMDObsListRemove2.CanExecute = !string.IsNullOrEmpty(observableTestListSelectedItem);
+                       }
+               }
                IList<Colors> testList = (IList<Colors>)EnumsNET.Enums.GetValues<Colors>().ToList();//.ColorDic.Values//.OrderBy(c=>c.Hue)
                                                                                                                                                                                                          //.ThenBy(c=>c.Value).ThenBy(c=>c.Saturation)
                                                                                                                                                                                                          //.ToList ();
@@ -475,6 +488,16 @@ namespace Samples
                        }
                }
 
+               public Fill TestColor {
+                       get => Configuration.Global.Get<Color> (nameof(AllWidgetBackground));
+                       set {
+                               if (value == AllWidgetBackground)
+                                       return;
+                               Configuration.Global.Set (nameof(AllWidgetBackground), value);
+                               NotifyValueChanged (value);
+                       }
+               }
+
 
 
 
index dc4a6abe2bd44991db8a751c08d7022327cab816..c1912be60a6ddf329a69de1930fee0acc7dbf651 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <VerticalStack>
-       <ColorPicker CurrentColor="{²../go.Background}" Name="colorPicker" Background="DimGrey"  Width="250" />
+       <ColorPicker CurrentColor="{²../go.Background}" Name="colorPicker" Background="DimGrey"  Width="400" />
        <Widget Name="go" Width="100" Height="60" Background="DarkBlue"/>
        <Widget Width="100" Height="60" Background="{../colorPicker.CurrentColor}"/>
        <Label Text="{../colorPicker.CurrentColor}"/>
diff --git a/Samples/common/ui/Interfaces/Divers/colorSlider.crow b/Samples/common/ui/Interfaces/Divers/colorSlider.crow
new file mode 100644 (file)
index 0000000..012fd2d
--- /dev/null
@@ -0,0 +1,75 @@
+<VerticalStack Margin="50" Spacing="20" Background="DimGrey">
+       <HorizontalStack Height="Fit" Width="400" Spacing="5" Margin="5" Background="Jet">
+               <Label Style="labColor" Text="G:"/>
+               <ColorSlider Name="cs" Component="Red" CurrentColor="Green" CursorType="Circle" ClipToClientRect="false" Background="Black" Margin="5" Height="20" />
+               <Label Style="labColorV" Text="{../cs.CurrentValue}"  />
+               <Container Width="100" Height="100" Background="Red" Margin="5">
+                       <Widget Width="20" Height="20" Background="Blue" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+               </Container>
+       </HorizontalStack>
+       <Label Text="{../slider1.Value}"/>
+       <Widget Width="380" Height="5" Background="Blue"/>
+       <Slider Name="slider1" Orientation="Horizontal" Width="400" Height="30" Background="Jet" Foreground="LightGrey" Margin="0" Inverted="false"> 
+               <Template>
+                       <Container Background="{./Background}" CornerRadius="{./CornerRadius}" Margin="10">
+                               <Widget Name="Cursor" Background="{./Foreground}" CornerRadius="{./CornerRadius}" />
+                       </Container>
+               </Template>
+       </Slider>
+       <Slider Background="RoyalBlue" Height="50" Width="400" CursorSize="50"  Inverted="{../../inverted.IsChecked}">
+               <Template>
+                       <Group Background="DarkGrey" >
+                               <ColorGauge Height="50%" Background="Onyx" Value="{./Value}" Maximum="{./Maximum}" Minimum="{Minimum}" Orientation="{./Orientation}"
+                                       Inverted="{./Inverted}"/>
+                               <Container Name="Cursor" Background="White" >
+                                       <Label Text="{./Value}" Foreground="Black"/>
+                               </Container>
+                       </Group>
+               </Template>     
+       </Slider>
+       <ColorPicker>
+               <Template>
+                       <Border Background="{./Background}"     Foreground="{./Foreground}" Width="Stretched"
+                                       CornerRadius="{./CornerRadius}" BorderWidth="1">                
+                               <VerticalStack Margin="2">
+                                       <Widget Width="30" Height="16" Background="{./CurrentColor}"/>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="R:"/>
+                                               <ColorSlider Name="cs" Component="Red" CurrentColor="{²./CurrentColor}"/>                      
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="G:"/>
+                                               <ColorSlider Name="cs" Component="Green" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="B:"/>
+                                               <ColorSlider Name="cs" Component="Blue" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="A:"/>
+                                               <ColorSlider Name="cs" Component="Alpha" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="H:"/>
+                                               <ColorSlider Name="cs" Component="Hue" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="S:"/>
+                                               <ColorSlider Name="cs" Component="Saturation" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="V:"/>
+                                               <ColorSlider Name="cs" Component="Value" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                               </VerticalStack>                        
+                       </Border>
+               </Template>
+       </ColorPicker>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/colorSlider2.crow b/Samples/common/ui/Interfaces/Divers/colorSlider2.crow
new file mode 100644 (file)
index 0000000..111ce06
--- /dev/null
@@ -0,0 +1,78 @@
+<VerticalStack Margin="50" Spacing="20" Background="DimGrey">
+       <Label Text="{../slider1.Value}"/>
+       <Slider Background="Onyx" Height="30" Width="400"  >
+               <Template>
+                       <Group Background="{./Background}">
+                               <ColorGauge Component="Red" Height="Stretched" Value="{./Value}" Maximum="{./Maximum}" Minimum="{Minimum}" Orientation="{./Orientation}" Margin="11"
+                                       Inverted="{./Inverted}"/>
+                               <Border Name="Cursor" Foreground="White" CornerRadius="7" BorderWidth="2">
+                                       <Label Text="{./Value}" Foreground="WhiteSmoke"/>
+                               </Border>
+                       </Group>
+               </Template>     
+       </Slider>
+       <Slider Background="Onyx" Height="30" Width="400" CursorSize="20"  >
+               <Template>
+                       <Group Background="{./Background}" ClipToClientRect="false">
+                               <ColorGauge Component="Red" Height="Stretched" Value="{./Value}" Maximum="{./Maximum}" Minimum="{Minimum}" Orientation="{./Orientation}" Margin="10" ClipToClientRect="false"
+                                       Inverted="{./Inverted}"/>
+                               <Shape Height="Stretched" Name="Cursor" Size="30,30" Path="M 0,30 L 15,0 L 30,30  Z G" StrokeWidth="1" ClipToClientRect="false" Scaled="false" />
+                       </Group>
+               </Template>     
+       </Slider>
+       <ColorPicker>
+               <Template>
+                       <Border Background="{./Background}"     Foreground="{./Foreground}" Width="Stretched"
+                                       CornerRadius="{./CornerRadius}" BorderWidth="1">                
+                               <VerticalStack Margin="2">
+                                       <Widget Width="50" Height="30" CornerRadius="10" Background="{./CurrentColor}"/>
+                                       <Slider Background="Onyx" Height="Fit" Width="Stretched" Foreground="{²./CurrentColor}" Maximum="255" Value="{².cg.Value}">
+                                               <Template>
+                                                       <Group Background="{./Background}">
+                                                               <ColorGauge Name="cg" Component="Red" Height="Stretched" Value="{²./Value}" Maximum="{./Maximum}" Minimum="{Minimum}" Orientation="{./Orientation}" Margin="0" CurrentColor="{²./Foreground}"/>
+                                                               <Border Name="Cursor" Foreground="White" CornerRadius="7" BorderWidth="2">
+                                                                       <Label Text="{./Value}" Foreground="WhiteSmoke"/>
+                                                               </Border>
+                                                       </Group>
+                                               </Template>     
+                                       </Slider>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="R:"/>
+                                               <ColorSlider Name="cs" Component="Red" CurrentColor="{²./CurrentColor}"/>                      
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="G:"/>
+                                               <ColorSlider Name="cs" Component="Green" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="B:"/>
+                                               <ColorSlider Name="cs" Component="Blue" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="A:"/>
+                                               <ColorSlider Name="cs" Component="Alpha" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="H:"/>
+                                               <ColorSlider Name="cs" Component="Hue" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="S:"/>
+                                               <ColorSlider Name="cs" Component="Saturation" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Style="labColor" Text="V:"/>
+                                               <ColorSlider Name="cs" Component="Value" CurrentColor="{²./CurrentColor}"/>
+                                               <Label Style="labColorV" Text="{../cs.CurrentValue}" />
+                                       </HorizontalStack>
+                               </VerticalStack>                        
+                       </Border>
+               </Template>
+       </ColorPicker>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/colorSlider3.crow b/Samples/common/ui/Interfaces/Divers/colorSlider3.crow
new file mode 100644 (file)
index 0000000..4236b92
--- /dev/null
@@ -0,0 +1,47 @@
+<VerticalStack Margin="50" Spacing="20" Background="Black">
+       <ColorPicker>
+               <Template>
+<Border Background="{./Background}"    Foreground="{./Foreground}" Width="Stretched"
+               CornerRadius="{./CornerRadius}" BorderWidth="1">                
+       <VerticalStack Margin="2">
+               <Widget Width="30" Height="16" Background="{./CurrentColor}"/>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="R:"/>
+                       <ColorSlider Name="cs" Component="Red" CurrentColor="{./CurrentColor}" Value="{²./Red}"/>                      
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="G:"/>
+                       <ColorSlider Name="cs" Component="Green" CurrentColor="{./CurrentColor}" Value="{²./Green}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="B:"/>
+                       <ColorSlider Name="cs" Component="Blue" CurrentColor="{./CurrentColor}" Value="{²./Blue}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="A:"/>
+                       <ColorSlider Name="cs" Component="Alpha" CurrentColor="{./CurrentColor}" Value="{²./Alpha}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="H:"/>
+                       <ColorSlider Name="cs" Component="Hue" CurrentColor="{./CurrentColor}" Value="{²./Hue}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="S:"/>
+                       <ColorSlider Name="cs" Component="Saturation" CurrentColor="{./CurrentColor}" Value="{²./Saturation}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Style="labColor" Text="V:"/>
+                       <ColorSlider Name="cs" Component="Value" CurrentColor="{./CurrentColor}" Value="{²./Value}"/>
+                       <Label Style="labColorV" Text="{../cs.Value}" />
+               </HorizontalStack>
+       </VerticalStack>                        
+</Border>
+               </Template>
+       </ColorPicker>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/colorSlider4.crow b/Samples/common/ui/Interfaces/Divers/colorSlider4.crow
new file mode 100644 (file)
index 0000000..9546363
--- /dev/null
@@ -0,0 +1,13 @@
+<ColorSlider Width="400" Component="Red" Background="Grey" Height="34" CursorSize="24" >
+<Template>
+       <Group Background="{./Background}" >
+               <ColorGauge Component="{./Component}" CurrentColor="{./CurrentColor}" Orientation="{./Orientation}" Margin="10" Height="Stretched" CornerRadius="10"/>
+               <Border Name="Cursor" Foreground="White" CornerRadius="15" BorderWidth="2">
+                       <Group Fit="true">
+                               <Label Left="2" Top="2" Text="{./Value}" Foreground="Black" Font="mono bold, 10"/>
+                               <Label Text="{./Value}" Foreground="WhiteSmoke" Font="mono bold, 10"/>
+                       </Group>
+               </Border>
+       </Group>
+</Template>
+</ColorSlider>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/image.crow b/Samples/common/ui/Interfaces/Divers/image.crow
new file mode 100644 (file)
index 0000000..829507a
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<Image Path="#Crow.Icons.file.svg" Width="16" Height="16"/>
index 9caa0b430864da8ed2a74fea1ff4c08c0083e3cb..6d5688207e26492f23bc5c9ed6bdc9cf89e1c5ea 100644 (file)
@@ -4,8 +4,9 @@
        <HorizontalStack Height="Fit">
        <Button Command="{CMDObsListAdd}" />
        <Button Command="{CMDObsListRemove}" IsEnabled="{../lb.SelectionIsEmpty}" />
+       <Button Command="{CMDObsListRemove2}"/>
        </HorizontalStack>
-       <ListBox Name="lb" Data="{ObservableTestList}" >
+       <ListBox Name="lb" Data="{ObservableTestList}" SelectedItem="{²ObservableTestListSelectedItem}" >
                <Template>
                        <Border Style="ControlBorder" MinimumSize="10,10" Background="{./Background}" CornerRadius="{./CornerRadius}">
                                <Scroller  Name="scroller1" >
index 14af0f21e0149aae8e00242f6e76d1c476f40dc5..14df5bfc54f9a939ba7ae6c7c95c9e301d3a5530 100644 (file)
@@ -1,5 +1,10 @@
 <?xml version="1.0"?>
 <VerticalStack>
-       <TextBox Text="{²../shape.Path}"/>     
-       <Shape Margin="0" Width="400" Height="400" Name="shape" Foreground="Blue" Background="DimGrey" Size="100,100" Path="M 5.5,0.5 L 10.5,10.5 L 0.5,10.5 Z G"/>                     
+       <TextBox Text="{²../shape.Path}"/>
+       <Container Background="Navy" Height="100" Width="100">  
+               <Shape  Height="20" Width="10" Name="shape" Foreground="White" Size="11,11" Path="M 5.5,1.5 L 9.5,3.5 L 9.5,9.5 L 1.5,9.5 L 1.5,3.5 Z G" Scaled="true" KeepProportions="false"  StrokeWidth="2"/>
+       </Container>
+       <Container Background="Navy" Height="100" Width="100">  
+               <Shape  Height="Fit" Width="Fit" Foreground="White"  Size="11,11" Path="{²../../shape.Path}" Scaled="false" KeepProportions="false"  StrokeWidth="2"/>
+       </Container>
 </VerticalStack>
\ No newline at end of file
index d70500001c7da5463824440b261a9b5fda9ea5ba..8b6e57af4d0199de049575cf930c3b445c10cb9f 100644 (file)
@@ -1,6 +1,5 @@
 <?xml version="1.0"?>
 <HorizontalStack Margin="50">
-       <CheckBox Name="inverted" Background="DarkSlateGrey" Caption="Inverted" Width="Fit" Foreground="Black"/>
 
        <VerticalStack Spacing="10" Width="50%">
                <Slider Background="DarkGrey" Height="20" Width="Stretched" Inverted="{../../inverted.IsChecked}"/>
@@ -31,6 +30,8 @@
                
                <Slider ClipToClientRect='false' Background="DarkGrey" CursorSize="50" Height="12" CornerRadius="5" Inverted="{../../inverted.IsChecked}" />
                <Slider ClipToClientRect='false' CacheEnabled='false' Background="Transparent" CursorSize="20" Height="12" Width="Stretched" Inverted="{../../inverted.IsChecked}" />
+
+               <CheckBox Name="inverted" Background="DarkSlateGrey" Caption="Inverted" Width="Fit" Foreground="Black"/>
        </VerticalStack>
        
        <HorizontalStack Spacing="10" >
index 5322266451d0f3855e36050e0a55a4cd2cb250b7..c1e8f483c49e02e2d4ed1266216540d25dcd231a 100644 (file)
@@ -1,11 +1,11 @@
 <Table Columns="test,Fit;test,Fit;test,Stretched;test,Fit" Margin="10" 
-       ColumnSpacing="5" Spacing="5" 
+       ColumnSpacing="15" Spacing="5" Height="Fit"
        Foreground="Grey"
-       RowsMargin="0"
-       BorderLineWidth="0"
-       VerticalLineWidth="1"
+       RowsMargin="5"
+       BorderLineWidth="1"
+       VerticalLineWidth="2"
        HorizontalLineWidth="1"
-       Background="DarkGrey" >         
+       Background="Jet" >      
        <TableRow Height="Fit" >
                <Label Text="firstlkjdqsfmlkjqsl" Background="1,0,0,0.5" HorizontalAlignment="Left" Height="Stretched"/>
                <Label Text="second" Background="0,1,0,0.5" Height="Stretched"/>
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testScrollbar2.crow b/Samples/common/ui/Interfaces/TemplatedControl/testScrollbar2.crow
new file mode 100644 (file)
index 0000000..6a7a7c9
--- /dev/null
@@ -0,0 +1,20 @@
+<HorizontalStack>
+       <Container Width="50%">
+               <Label Text="{../../sb.Value}" />
+       </Container>
+       <ScrollBar Name="sb" Maximum="200" CursorRatio="0.3" Width="16" LargeIncrement="20" SmallIncrement="1">
+               <Template>
+                       <Border BorderWidth="1" Foreground="{./Foreground}" Background="{./Background}">
+                               <GenericStack Orientation="{./Orientation}" Spacing="0">
+                                       <Shape Style="ArrowBut" MouseDown="./OnDecrease" Height="{./Width}" Margin="0"
+                                       Size="10,10" Path="M 4.5,0.5 L 9.5,9.5 L 0.5,9.5 Z F"/>
+                                       <Container Margin="1">
+                                               <Widget Style="ScrollBarCursor" Name="Cursor" CornerRadius="{./CornerRadius}"/>
+                                       </Container>
+                                       <Shape Style="ArrowBut" MouseDown="./OnIncrease" Height="{./Width}" Margin="0"
+                                               Size="10,10" Path="M 0.5,0.5 L 9.5,0.5 L 4.5,9.5 Z F"/>
+                               </GenericStack>
+                       </Border>
+               </Template>
+       </ScrollBar>
+</HorizontalStack>
\ No newline at end of file