hqchart 1.1.13565 → 1.1.13573

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9298,6 +9298,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9298
9298
  //右键菜单
9299
9299
  this.PopupMenuByRClick=function(menuData, x, y)
9300
9300
  {
9301
+ if (!this.JSPopMenu) return;
9302
+
9301
9303
  var rtClient=this.UIElement.getBoundingClientRect();
9302
9304
  var rtScroll=GetScrollPosition();
9303
9305
 
@@ -56356,7 +56358,9 @@ IChartDrawPicture.ArrayDrawPricture=
56356
56358
  { Name:"价格通道线", ClassName:'ChartDrawPicturePriceChannel', Create:function() { return new ChartDrawPicturePriceChannel(); }},
56357
56359
  { Name:"文本", ClassName:'ChartDrawPictureText', Create:function() { return new ChartDrawPictureText(); }},
56358
56360
  { Name:"江恩角度线", ClassName:'ChartDrawPictureGannFan', Create:function() { return new ChartDrawPictureGannFan(); }},
56361
+ { Name:"江恩角度线2", ClassName:'ChartDrawPictureGannFan', Create:function() { return new ChartDrawPictureGannFanV2(); }},
56359
56362
  { Name:"阻速线", ClassName:'ChartDrawPictureResistanceLine', Create:function() { return new ChartDrawPictureResistanceLine(); }},
56363
+ { Name:"阻速线2", ClassName:'ChartDrawPictureResistanceLineV2', Create:function() { return new ChartDrawPictureResistanceLineV2(); }},
56360
56364
  { Name:"黄金分割", ClassName:'ChartDrawPictureGoldenSection', Create:function() { return new ChartDrawPictureGoldenSection(); }},
56361
56365
  { Name:"百分比线", ClassName:'ChartDrawPicturePercentage', Create:function() { return new ChartDrawPicturePercentage(); }},
56362
56366
  { Name:"波段线", ClassName:'ChartDrawPictureWaveBand', Create:function() { return new ChartDrawPictureWaveBand(); }},
@@ -59750,7 +59754,25 @@ function ChartDrawPictureGannFan()
59750
59754
  this.IsPointIn=this.IsPointIn_XYValue_Line;
59751
59755
  this.LinePoint=[];
59752
59756
  this.Font=16*GetDevicePixelRatio() +"px 微软雅黑";
59757
+ this.LineDash=[5,10];
59758
+ this.EnableDottedLine=false; //辅助线是否使用虚线
59759
+ this.EnableArea=true; //是否绘制面积图
59760
+ this.IsShowTitle=true;
59753
59761
 
59762
+ this.Super_SetOption=this.SetOption; //父类函数
59763
+
59764
+ this.SetOption=function(option)
59765
+ {
59766
+ if (this.Super_SetOption) this.Super_SetOption(option);
59767
+ if (option)
59768
+ {
59769
+ if (option.Font) this.Font=option.Font;
59770
+ if (Array.isArray(option.LineDash)) this.LineDash=option.LineDash;
59771
+ if (IFrameSplitOperator.IsBool(option.EnableDottedLine)) this.EnableDottedLine=option.EnableDottedLine;
59772
+ if (IFrameSplitOperator.IsBool(option.EnableArea)) this.EnableArea=option.EnableArea;
59773
+ if (IFrameSplitOperator.IsBool(option.IsShowTitle)) this.IsShowTitle=option.IsShowTitle;
59774
+ }
59775
+ }
59754
59776
 
59755
59777
  this.Draw=function()
59756
59778
  {
@@ -59767,21 +59789,24 @@ function ChartDrawPictureGannFan()
59767
59789
  var quadrant=this.GetQuadrant(drawPoint[0],drawPoint[1]);
59768
59790
 
59769
59791
  this.SetLineWidth();
59770
- if (quadrant===1 || quadrant===4)
59792
+ if (quadrant===1 || quadrant===2 || quadrant===3 || quadrant===4)
59771
59793
  {
59772
59794
  this.CalculateLines(drawPoint[0],drawPoint[1],quadrant);
59773
- this.DrawArea();
59795
+ if (this.EnableArea) this.DrawArea();
59774
59796
 
59775
- for(var i in this.LinePoint)
59797
+ for(var i=0; i<this.LinePoint.length; ++i)
59776
59798
  {
59777
59799
  var item=this.LinePoint[i];
59778
59800
  this.DrawLine(item.Start,item.End,item.IsDottedLine);
59779
59801
  }
59780
59802
 
59781
- for(var i in this.LinePoint)
59803
+ if (this.IsShowTitle)
59782
59804
  {
59783
- var item =this.LinePoint[i];
59784
- if (item.Text && item.PtEnd) this.DrawTitle(item.PtEnd,item.Text);
59805
+ for(var i=0; i<this.LinePoint.length; ++i)
59806
+ {
59807
+ var item =this.LinePoint[i];
59808
+ if (item.Text && item.PtEnd) this.DrawTitle(item.PtEnd,item.Text);
59809
+ }
59785
59810
  }
59786
59811
  }
59787
59812
  else
@@ -59798,7 +59823,7 @@ function ChartDrawPictureGannFan()
59798
59823
  this.GetQuadrant=function(ptStart,ptEnd)
59799
59824
  {
59800
59825
  if (ptStart.X<ptEnd.X && ptStart.Y>ptEnd.Y) return 1;
59801
- else if (ptStart.X<ptEnd.X && ptStart.Y>ptEnd.Y) return 2;
59826
+ else if (ptStart.X>ptEnd.X && ptStart.Y>ptEnd.Y) return 2;
59802
59827
  else if (ptStart.X < ptEnd.X && ptStart.Y< ptEnd.Y) return 4;
59803
59828
  else return 3;
59804
59829
  }
@@ -59807,7 +59832,7 @@ function ChartDrawPictureGannFan()
59807
59832
  //isDotline 是否是虚线
59808
59833
  this.DrawLine=function(ptStart,ptEnd,isDottedline)
59809
59834
  {
59810
- if (isDottedline) this.Canvas.setLineDash([5,10]);
59835
+ if (isDottedline) this.Canvas.setLineDash(this.LineDash);
59811
59836
 
59812
59837
  this.Canvas.strokeStyle=this.LineColor;
59813
59838
  this.Canvas.beginPath();
@@ -59869,27 +59894,15 @@ function ChartDrawPictureGannFan()
59869
59894
  var lineHeight=Math.abs(ptStart.Y-ptEnd.Y);
59870
59895
  if (quadrant===1)
59871
59896
  {
59872
- /*
59873
- var line={Start:ptLineStart, End:new Point(), IsDottedLine:false};
59874
- line.End.X=ptStart.X;
59875
- line.End.Y=top;
59876
- this.LinePoint.push(line);
59877
-
59878
- line={Start:ptLineStart, End:new Point(), IsDottedLine:false};
59879
- line.End.X=right;
59880
- line.End.Y=ptStart.Y;
59881
- this.LinePoint.push(line);
59882
- */
59883
-
59884
59897
  var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
59885
59898
  var line={Start:ptLineStart, End:extendLine.Start, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
59886
59899
  this.LinePoint.push(line);
59887
59900
 
59888
- for(var i in SPLIT_LINE_VALUE)
59901
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
59889
59902
  {
59890
59903
  if (lineWidth>5)
59891
59904
  {
59892
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59905
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59893
59906
  line.PtEnd.Y=ptEnd.Y;
59894
59907
  line.PtEnd.X=ptStart.X+lineWidth*SPLIT_LINE_VALUE[i];
59895
59908
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -59898,7 +59911,7 @@ function ChartDrawPictureGannFan()
59898
59911
  }
59899
59912
  if (lineHeight>5)
59900
59913
  {
59901
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59914
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59902
59915
  line.PtEnd.Y=ptStart.Y-lineHeight*SPLIT_LINE_VALUE[i];
59903
59916
  line.PtEnd.X=ptEnd.X;
59904
59917
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -59908,29 +59921,77 @@ function ChartDrawPictureGannFan()
59908
59921
  }
59909
59922
 
59910
59923
  }
59911
- else if (quadrant==4)
59924
+ else if (quadrant==2)
59912
59925
  {
59913
- /*
59914
- var line={Start:ptLineStart, End:new Point(), IsDottedLine:false};
59915
- line.End.X=ptStart.X;
59916
- line.End.Y=bottom;
59926
+ var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
59927
+ var line={Start:ptLineStart, End:extendLine.Start, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
59917
59928
  this.LinePoint.push(line);
59918
59929
 
59919
- line={Start:ptLineStart, End:new Point(), IsDottedLine:false};
59920
- line.End.X=right;
59921
- line.End.Y=ptStart.Y;
59930
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
59931
+ {
59932
+
59933
+ if (lineWidth>5)
59934
+ {
59935
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59936
+ line.PtEnd.Y=ptEnd.Y;
59937
+ line.PtEnd.X=ptStart.X-lineWidth*SPLIT_LINE_VALUE[i];
59938
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
59939
+ line.End=extendLine.Start;
59940
+ this.LinePoint.push(line);
59941
+ }
59942
+
59943
+
59944
+ if (lineHeight>5)
59945
+ {
59946
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59947
+ line.PtEnd.Y=ptStart.Y-lineHeight*SPLIT_LINE_VALUE[i];
59948
+ line.PtEnd.X=ptEnd.X;
59949
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
59950
+ line.End=extendLine.Start;
59951
+ this.LinePoint.push(line);
59952
+ }
59953
+
59954
+ }
59955
+ }
59956
+ else if (quadrant==3)
59957
+ {
59958
+ var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
59959
+ var line={Start:ptLineStart, End:extendLine.End, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
59922
59960
  this.LinePoint.push(line);
59923
- */
59924
59961
 
59962
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
59963
+ {
59964
+ if (lineWidth>5)
59965
+ {
59966
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59967
+ line.PtEnd.Y=ptEnd.Y;
59968
+ line.PtEnd.X=ptStart.X-lineWidth*SPLIT_LINE_VALUE[i];
59969
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
59970
+ line.End=extendLine.End;
59971
+ this.LinePoint.push(line);
59972
+ }
59973
+ if (lineHeight>5)
59974
+ {
59975
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59976
+ line.PtEnd.Y=ptStart.Y+lineHeight*SPLIT_LINE_VALUE[i];
59977
+ line.PtEnd.X=ptEnd.X;
59978
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
59979
+ line.End=extendLine.End;
59980
+ this.LinePoint.push(line);
59981
+ }
59982
+ }
59983
+ }
59984
+ else if (quadrant==4)
59985
+ {
59925
59986
  var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
59926
59987
  var line={Start:ptLineStart, End:extendLine.End, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
59927
59988
  this.LinePoint.push(line);
59928
59989
 
59929
- for(var i in SPLIT_LINE_VALUE)
59990
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
59930
59991
  {
59931
59992
  if (lineWidth>5)
59932
59993
  {
59933
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59994
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(),Text:SPLIT_LINE_X_TITLE[i]};
59934
59995
  line.PtEnd.Y=ptEnd.Y;
59935
59996
  line.PtEnd.X=ptStart.X+lineWidth*SPLIT_LINE_VALUE[i];
59936
59997
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -59939,7 +60000,7 @@ function ChartDrawPictureGannFan()
59939
60000
  }
59940
60001
  if (lineHeight>5)
59941
60002
  {
59942
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60003
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59943
60004
  line.PtEnd.Y=ptStart.Y+lineHeight*SPLIT_LINE_VALUE[i];
59944
60005
  line.PtEnd.X=ptEnd.X;
59945
60006
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -59948,19 +60009,77 @@ function ChartDrawPictureGannFan()
59948
60009
  }
59949
60010
  }
59950
60011
  }
59951
- else return false;
60012
+ else
60013
+ {
60014
+ return false;
60015
+ }
59952
60016
 
59953
60017
  return true;
59954
60018
  }
59955
60019
  }
59956
60020
 
60021
+
60022
+ //江恩角度线(Gann Fan) 通达信版本
60023
+ function ChartDrawPictureGannFanV2()
60024
+ {
60025
+ this.newMethod=ChartDrawPictureGannFan; //派生
60026
+ this.newMethod();
60027
+ delete this.newMethod;
60028
+
60029
+ this.ClassName='ChartDrawPictureGannFanV2';
60030
+ this.EnableDottedLine=true; //辅助线是否使用虚线
60031
+ this.LineDash=[4,8];
60032
+ this.EnableArea=false;
60033
+
60034
+ this.Super_CalculateLines=this.CalculateLines;
60035
+
60036
+ this.CalculateLines=function(ptStart,ptEnd,quadrant)
60037
+ {
60038
+ if (!this.Super_CalculateLines(ptStart,ptEnd,quadrant)) return false;
60039
+
60040
+ var border=this.Frame.ChartBorder.GetBorder();
60041
+ if (quadrant==1)
60042
+ {
60043
+ var line={ Start:ptStart, End:{ X:border.Right, Y:ptStart.Y}, IsDottedLine:false, PtEnd:null, Text:null };
60044
+ this.LinePoint.push(line);
60045
+
60046
+ var line={ Start:ptStart, End:{ X:ptStart.X, Y:border.TopEx }, IsDottedLine:false, PtEnd:null, Text:null };
60047
+ this.LinePoint.push(line);
60048
+ }
60049
+ else if (quadrant==2)
60050
+ {
60051
+ var line={ Start:ptStart, End:{ X:ptStart.X, Y:border.TopEx }, IsDottedLine:false, PtEnd:null, Text:null };
60052
+ this.LinePoint.push(line);
60053
+
60054
+ var line={ Start:ptStart, End:{ X:border.Left, Y:ptStart.Y}, IsDottedLine:false, PtEnd:null, Text:null };
60055
+ this.LinePoint.push(line);
60056
+ }
60057
+ else if (quadrant==3)
60058
+ {
60059
+ var line={ Start:ptStart, End:{ X:border.Left, Y:ptStart.Y}, IsDottedLine:false, PtEnd:null, Text:null };
60060
+ this.LinePoint.push(line);
60061
+
60062
+ var line={ Start:ptStart, End:{ X:ptStart.X, Y:border.BottomEx }, IsDottedLine:false, PtEnd:null, Text:null };
60063
+ this.LinePoint.push(line);
60064
+ }
60065
+ else if (quadrant==4)
60066
+ {
60067
+ var line={ Start:ptStart, End:{ X:ptStart.X, Y:border.BottomEx }, IsDottedLine:false, PtEnd:null, Text:null };
60068
+ this.LinePoint.push(line);
60069
+
60070
+ var line={ Start:ptStart, End:{ X:border.Right, Y:ptStart.Y}, IsDottedLine:false, PtEnd:null, Text:null };
60071
+ this.LinePoint.push(line);
60072
+ }
60073
+ }
60074
+ }
60075
+
59957
60076
  //阻速线 (高 3等份)
59958
60077
  function ChartDrawPictureResistanceLine()
59959
60078
  {
59960
60079
  this.newMethod=ChartDrawPictureGannFan; //派生
59961
60080
  this.newMethod();
59962
60081
  delete this.newMethod;
59963
-
60082
+
59964
60083
  this.ClassName='ChartDrawPictureResistanceLine';
59965
60084
 
59966
60085
  //计算线段
@@ -59987,11 +60106,11 @@ function ChartDrawPictureResistanceLine()
59987
60106
  var line={Start:ptLineStart, End:extendLine.Start, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
59988
60107
  this.LinePoint.push(line);
59989
60108
 
59990
- for(var i in SPLIT_LINE_VALUE)
60109
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
59991
60110
  {
59992
60111
  if (lineHeight>5)
59993
60112
  {
59994
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60113
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
59995
60114
  line.PtEnd.Y=ptStart.Y-lineHeight*SPLIT_LINE_VALUE[i];
59996
60115
  line.PtEnd.X=ptEnd.X;
59997
60116
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -59999,7 +60118,45 @@ function ChartDrawPictureResistanceLine()
59999
60118
  this.LinePoint.push(line);
60000
60119
  }
60001
60120
  }
60002
-
60121
+ }
60122
+ else if (quadrant==2)
60123
+ {
60124
+ var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
60125
+ var line={Start:ptLineStart, End:extendLine.Start, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
60126
+ this.LinePoint.push(line);
60127
+
60128
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
60129
+ {
60130
+ if (lineHeight>5)
60131
+ {
60132
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60133
+ line.PtEnd.Y=ptStart.Y-lineHeight*SPLIT_LINE_VALUE[i];
60134
+ line.PtEnd.X=ptEnd.X;
60135
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
60136
+ line.End=extendLine.Start;
60137
+ this.LinePoint.push(line);
60138
+ }
60139
+
60140
+ }
60141
+ }
60142
+ else if (quadrant==3)
60143
+ {
60144
+ var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);
60145
+ var line={Start:ptLineStart, End:extendLine.End, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
60146
+ this.LinePoint.push(line);
60147
+
60148
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
60149
+ {
60150
+ if (lineHeight>5)
60151
+ {
60152
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60153
+ line.PtEnd.Y=ptStart.Y+lineHeight*SPLIT_LINE_VALUE[i];
60154
+ line.PtEnd.X=ptEnd.X;
60155
+ var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
60156
+ line.End=extendLine.End;
60157
+ this.LinePoint.push(line);
60158
+ }
60159
+ }
60003
60160
  }
60004
60161
  else if (quadrant==4)
60005
60162
  {
@@ -60007,11 +60164,11 @@ function ChartDrawPictureResistanceLine()
60007
60164
  var line={Start:ptLineStart, End:extendLine.End, IsDottedLine:false,PtEnd:ptLineEnd, Text:'1:1'};
60008
60165
  this.LinePoint.push(line);
60009
60166
 
60010
- for(var i in SPLIT_LINE_VALUE)
60167
+ for(var i=0;i<SPLIT_LINE_VALUE.length; ++i)
60011
60168
  {
60012
60169
  if (lineHeight>5)
60013
60170
  {
60014
- line={Start:ptLineStart, End:null, IsDottedLine:false,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60171
+ line={Start:ptLineStart, End:null, IsDottedLine:this.EnableDottedLine,PtEnd:new Point(), Text:SPLIT_LINE_Y_TITLE[i]};
60015
60172
  line.PtEnd.Y=ptStart.Y+lineHeight*SPLIT_LINE_VALUE[i];
60016
60173
  line.PtEnd.X=ptEnd.X;
60017
60174
  var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);
@@ -60020,7 +60177,10 @@ function ChartDrawPictureResistanceLine()
60020
60177
  }
60021
60178
  }
60022
60179
  }
60023
- else return false;
60180
+ else
60181
+ {
60182
+ return false;
60183
+ }
60024
60184
 
60025
60185
  return true;
60026
60186
  }
@@ -60047,6 +60207,23 @@ function ChartDrawPictureResistanceLine()
60047
60207
  }
60048
60208
  }
60049
60209
 
60210
+ //阻速线2 (高 3等份)通达信版本
60211
+ function ChartDrawPictureResistanceLineV2()
60212
+ {
60213
+ this.newMethod=ChartDrawPictureResistanceLine; //派生
60214
+ this.newMethod();
60215
+ delete this.newMethod;
60216
+
60217
+ this.ClassName='ChartDrawPictureResistanceLineV2';
60218
+ this.EnableDottedLine=true; //辅助线是否使用虚线
60219
+ this.LineDash=[4,8];
60220
+ this.EnableArea=false;
60221
+ this.IsShowTitle=false;
60222
+ }
60223
+
60224
+
60225
+
60226
+
60050
60227
  //黄金分割线
60051
60228
  function ChartDrawPictureGoldenSection()
60052
60229
  {