Unstable commit
[GB.CHART2] * Unstable commit don't use it
This commit is contained in:
parent
044bdc222e
commit
89a631f6bc
14 changed files with 600 additions and 82 deletions
|
@ -1,6 +1,6 @@
|
||||||
[Component]
|
[Component]
|
||||||
Key=gb.chart2
|
Key=gb.chart2
|
||||||
Version=0.0.3
|
Version=0.0.4
|
||||||
State=2
|
State=2
|
||||||
Authors=Fabien Bodard <gambas.fr@gmail.com>
|
Authors=Fabien Bodard <gambas.fr@gmail.com>
|
||||||
Needs=Form
|
Needs=Form
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Gambas Project File 3.0
|
# Gambas Project File 3.0
|
||||||
Startup=Form1
|
Startup=FPie
|
||||||
Version=0.0.3
|
Version=0.0.4
|
||||||
Component=gb.image
|
Component=gb.image
|
||||||
Component=gb.gui
|
Component=gb.gui
|
||||||
Component=gb.form
|
Component=gb.form
|
||||||
|
|
|
@ -19,7 +19,7 @@ Private $aStyleList As String[] = ["Bar"]
|
||||||
Public Sub _new()
|
Public Sub _new()
|
||||||
|
|
||||||
$hLegend = New _ChartLegend As "Legend"
|
$hLegend = New _ChartLegend As "Legend"
|
||||||
$hTitle = New _ChartTitle
|
$hTitle = New _ChartTitle As "Title"
|
||||||
$bBorder = True
|
$bBorder = True
|
||||||
$aStyleList.ReadOnly = True
|
$aStyleList.ReadOnly = True
|
||||||
$aColors = [&hff6f00,
|
$aColors = [&hff6f00,
|
||||||
|
@ -51,14 +51,13 @@ Public Sub Paint(X As Integer, Y As Integer, Width As Integer, Height As Integer
|
||||||
If $bAutoScale Then _fProportionnal = IIf(Paint.Width <= Paint.Height, Paint.Width / (Desktop.Height * 2 / 3), Paint.Height / (Desktop.Height * 2 / 3))
|
If $bAutoScale Then _fProportionnal = IIf(Paint.Width <= Paint.Height, Paint.Width / (Desktop.Height * 2 / 3), Paint.Height / (Desktop.Height * 2 / 3))
|
||||||
|
|
||||||
'Paint.Scale(f, f)
|
'Paint.Scale(f, f)
|
||||||
|
hRect = RectF(X, Y, Width, Height)
|
||||||
If $hTitle.Visible And If $hTitle.Text Then
|
If $hTitle.Visible And If $hTitle.Text Then
|
||||||
Paint.Font = $hTitle.Font
|
|
||||||
Paint.Font.Size = Paint.Font.Size * _fProportionnal
|
f = $hTitle._Paint(Width)
|
||||||
f = $hTitle.Font.Height * 1.5 * _fProportionnal
|
|
||||||
Paint.DrawText($hTitle.Text, X, Y, Width, f, Align.Center)
|
|
||||||
Endif
|
Endif
|
||||||
Y = Y + f
|
Y = Y + f
|
||||||
hRect = RectF(X, Y, Width, Height)
|
Height = Height - f
|
||||||
|
|
||||||
If $hLegend.Visible Then
|
If $hLegend.Visible Then
|
||||||
hRect = $hLegend._Paint(0, Y, Width, Height)
|
hRect = $hLegend._Paint(0, Y, Width, Height)
|
||||||
|
@ -70,7 +69,7 @@ Public Sub Paint(X As Integer, Y As Integer, Width As Integer, Height As Integer
|
||||||
hRect = RectF(X, Y, Width, Height - hRect.H)
|
hRect = RectF(X, Y, Width, Height - hRect.H)
|
||||||
|
|
||||||
Case Align.Left
|
Case Align.Left
|
||||||
hRect = RectF(X + hRect.W, Y, Width, Height)
|
hRect = RectF(X + hRect.W, Y, Width - hRect.W, Height)
|
||||||
|
|
||||||
Case Align.Right
|
Case Align.Right
|
||||||
hRect = RectF(X, Y, Width - hRect.W, Height)
|
hRect = RectF(X, Y, Width - hRect.W, Height)
|
||||||
|
@ -82,7 +81,7 @@ Public Sub Paint(X As Integer, Y As Integer, Width As Integer, Height As Integer
|
||||||
|
|
||||||
If $bBorder Then
|
If $bBorder Then
|
||||||
Paint.LineWidth = 2
|
Paint.LineWidth = 2
|
||||||
Paint.DrawRect(0, 0, Width, Height, Color.Black)
|
Paint.DrawRect(0, 0, Width, Height + f, Color.Black)
|
||||||
|
|
||||||
|
|
||||||
Endif
|
Endif
|
||||||
|
@ -93,10 +92,10 @@ End
|
||||||
Public Sub SetStyle(sStyle As String)
|
Public Sub SetStyle(sStyle As String)
|
||||||
|
|
||||||
|
|
||||||
Select Case (sStyle)
|
Select Case LCase(sStyle)
|
||||||
Case "Bar"
|
Case "bar"
|
||||||
$hStyle = New _ChartStyleBarBasic As "ChartStyleBarBasic"
|
$hStyle = New _ChartStyleBarBasic As "ChartStyleBarBasic"
|
||||||
Case "Pie"
|
Case "pie"
|
||||||
$hStyle = New _CharStylePie As "ChartStylePie"
|
$hStyle = New _CharStylePie As "ChartStylePie"
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
|
|
25
comp/src/gb.chart2/.src/ChartView.class
Normal file
25
comp/src/gb.chart2/.src/ChartView.class
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
' Gambas class file
|
||||||
|
|
||||||
|
Export
|
||||||
|
Inherits UserControl
|
||||||
|
Private $hChart As New Chart
|
||||||
|
Private $hView As DrawingArea
|
||||||
|
|
||||||
|
Public Sub _new()
|
||||||
|
|
||||||
|
$hView = New DrawingArea(Me) As "View"
|
||||||
|
$hChart.SetStyle("bar")
|
||||||
|
$hChart.Labels = ["1", "2", "3", "4"]
|
||||||
|
$hChart.Datas = [ChartDatas("Serie 1", [1, 2, 3, 4])]
|
||||||
|
$hChart.AutoScale = True
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub View_Draw()
|
||||||
|
|
||||||
|
$hChart.Paint(0, 0, Paint.Width, Paint.Height)
|
||||||
|
|
||||||
|
End
|
|
@ -12,7 +12,7 @@ End
|
||||||
Private Sub IniChart1()
|
Private Sub IniChart1()
|
||||||
|
|
||||||
hChart.Labels = ["Jan 14", "Fév", "Mar", "Avr", "Mai", "Jui", "Jui", "Aou", "Sep", "Oct", "Nov", "Déc"]
|
hChart.Labels = ["Jan 14", "Fév", "Mar", "Avr", "Mai", "Jui", "Jui", "Aou", "Sep", "Oct", "Nov", "Déc"]
|
||||||
hChart.Datas = [ChartDatas("Serie 1", [-16, -12, -6, -1, 5, 14, 29, 22, 13, 3, -6])] ', ChartDatas("Serie 2", [1.0, 2, 3, 4, 5, 3.5]), ChartDatas("Serie 3", [1.0, 2, 3, 4, 5, 3.5])]
|
hChart.Datas = [ChartDatas("Serie 1", [-16, -12, -6, -1, 5, 14, 29, 22, 13, 3, -6, -10])] ', ChartDatas("Serie 2", [1.0, 2, 3, 4, 5, 3.5]), ChartDatas("Serie 3", [1.0, 2, 3, 4, 5, 3.5])]
|
||||||
'hChart.Datas = [ChartDatas("Serie 1", [1.0, 2, 3, 4, 5, 6.5]), ChartDatas("Serie 2", [1.2, 2.3, 3.4, 4.5, 5.6, 3.5]), ChartDatas("Serie 3", [1.3, 2.4, 3.5, 4.6, 5.7, 3.5])]
|
'hChart.Datas = [ChartDatas("Serie 1", [1.0, 2, 3, 4, 5, 6.5]), ChartDatas("Serie 2", [1.2, 2.3, 3.4, 4.5, 5.6, 3.5]), ChartDatas("Serie 3", [1.3, 2.4, 3.5, 4.6, 5.7, 3.5])]
|
||||||
hChart.Border = True
|
hChart.Border = True
|
||||||
hChart.Colors = [Color.Orange]
|
hChart.Colors = [Color.Orange]
|
||||||
|
|
|
@ -1,19 +1,54 @@
|
||||||
' Gambas class file
|
' Gambas class file
|
||||||
|
|
||||||
Private hChart As New Chart
|
Private hChart As New Chart
|
||||||
|
Private aSerie As Float[] = [1.0, 2, 3, 4, 5, 6.5]
|
||||||
|
Private hTimer As New Timer As "Timer"
|
||||||
|
Private $fRotate As Float
|
||||||
|
|
||||||
Public Sub Form_Open()
|
Public Sub Form_Open()
|
||||||
|
|
||||||
|
hTimer.Delay = 10
|
||||||
|
|
||||||
hChart.Labels = ["Tic", "Tac", "Toe", "Titi", "Toto", "Tata"]
|
hChart.Labels = ["Tic", "Tac", "Toe", "Titi", "Toto", "Tata"]
|
||||||
|
|
||||||
hChart.Datas = [ChartDatas("Serie 1", [1.0, 2, 3, 4, 5, 6.5])]
|
hChart.Datas = [ChartDatas("Serie 1", aSerie)]
|
||||||
|
|
||||||
hChart.SetStyle("Pie")
|
hChart.SetStyle("Pie")
|
||||||
|
hChart.AutoScale = True
|
||||||
|
hChart.Legend.Border = Border("Padding:5")
|
||||||
hChart.Legend.Visible = True
|
hChart.Legend.Visible = True
|
||||||
|
hChart.Title.Visible = True
|
||||||
|
hChart.Title.Text = "A beautifull pie Chart"
|
||||||
|
hChart.Title.Color = Color.Orange
|
||||||
|
hChart.Title.Font = Font["+10"]
|
||||||
|
hChart.Legend.Title = "Chart values"
|
||||||
|
'hChart.Background = Color.Lighter(Color.Lighter(Color.Yellow))
|
||||||
|
hChart.Legend.Position = Align.Right
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
With hChart
|
With hChart
|
||||||
|
.Legend.SymbolOutlineColor = Color.Transparent
|
||||||
|
|
||||||
|
'.Legend!InterlineColor = Color.LightGray
|
||||||
|
.Legend.InterlineWidth = 2
|
||||||
|
'.Legend.Background = Color.Lighter(Color.Yellow)
|
||||||
|
.Legend.Border = Border("width:2;radius:5;Padding:10;Style:2;color:gray")
|
||||||
|
.Legend.SymbolStyle = "circle"
|
||||||
|
.Legend.TitleColor = Color.Darker(Color.Orange)
|
||||||
|
.Legend.Color = Color.Darker(Color.Orange)
|
||||||
|
.Legend.TitleSpacing = 20
|
||||||
|
.Legend.TitleFont = Font["+5"]
|
||||||
|
.Legend.Font = Font["+5"]
|
||||||
|
.Legend.Spacing = 20
|
||||||
|
.Legend.Width = 200
|
||||||
.Style!Border = True
|
.Style!Border = True
|
||||||
.Style!Background = Color.Yellow
|
.Style!Padding = 30
|
||||||
|
.Style!OutlineColor = Color.White
|
||||||
|
.Style!OutlineWidth = 2
|
||||||
|
.Style!Padding = 40
|
||||||
|
.Legend.InterlineColor = Color.LightGray
|
||||||
|
'.Style!ShowLabels = True
|
||||||
End With
|
End With
|
||||||
End
|
End
|
||||||
|
|
||||||
|
@ -22,3 +57,21 @@ Public Sub DrawingArea1_Draw()
|
||||||
hChart.Paint(0, 0, Paint.W, Paint.H)
|
hChart.Paint(0, 0, Paint.W, Paint.H)
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub Timer_Timer()
|
||||||
|
|
||||||
|
$fRotate = $fRotate + 0.5
|
||||||
|
If $fRotate = 361 Then $fRotate = 0
|
||||||
|
hChart.Style!Rotate = $fRotate
|
||||||
|
|
||||||
|
DrawingArea1.Refresh
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub Button1_Click()
|
||||||
|
|
||||||
|
hTimer.Enabled = Not hTimer.Enabled
|
||||||
|
|
||||||
|
End
|
||||||
|
|
|
@ -2,10 +2,14 @@
|
||||||
|
|
||||||
{ Form Form
|
{ Form Form
|
||||||
MoveScaled(0,0,64,64)
|
MoveScaled(0,0,64,64)
|
||||||
Arrangement = Arrange.Horizontal
|
Arrangement = Arrange.Vertical
|
||||||
Margin = True
|
Margin = True
|
||||||
{ DrawingArea1 DrawingArea
|
{ DrawingArea1 DrawingArea
|
||||||
MoveScaled(3,2,57,58)
|
MoveScaled(3,2,57,54)
|
||||||
Expand = True
|
Expand = True
|
||||||
}
|
}
|
||||||
|
{ Button1 Button
|
||||||
|
MoveScaled(5,58,53,4)
|
||||||
|
Text = ("Depart")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
8
comp/src/gb.chart2/.src/FTestView.class
Normal file
8
comp/src/gb.chart2/.src/FTestView.class
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
' Gambas class file
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub Form_Open()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End
|
9
comp/src/gb.chart2/.src/FTestView.form
Normal file
9
comp/src/gb.chart2/.src/FTestView.form
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Gambas Form File 3.0
|
||||||
|
|
||||||
|
{ Form Form
|
||||||
|
MoveScaled(0,0,64,64)
|
||||||
|
Arrangement = Arrange.Fill
|
||||||
|
{ ChartView1 ChartView
|
||||||
|
MoveScaled(7,4,51,51)
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,16 +4,22 @@ Inherits _ChartStyle
|
||||||
Property Read Symbols As String[] Use $aSymbols
|
Property Read Symbols As String[] Use $aSymbols
|
||||||
|
|
||||||
Private $oLabelsFont As Font
|
Private $oLabelsFont As Font
|
||||||
|
Private $fPadding As Float
|
||||||
|
Private $bShowValues As Boolean
|
||||||
|
Private $bPercentage As Boolean
|
||||||
|
Private $iOulineColor As Integer
|
||||||
|
Private $fOutlineWidth As Float = 1
|
||||||
|
Private $bShowLabels As Boolean
|
||||||
|
Private $fRotate As Float
|
||||||
Event Foo
|
Event Foo
|
||||||
|
|
||||||
Public Sub _new()
|
Public Sub _new()
|
||||||
|
|
||||||
$aSymbols = Super.Symbols.Insert(["LabelsFont"])
|
$aSymbols = Super.Symbols.Insert(["LabelsFont", "Padding", "ShowLabels", "Showvalues", "Percentage", "OutlineColor", "OutlineWidth", "Rotate"])
|
||||||
|
|
||||||
'$aSymbols.ReadOnly = True
|
'$aSymbols.ReadOnly = True
|
||||||
$oLabelsFont = Font["+4"]
|
$oLabelsFont = Font["+2"]
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +29,20 @@ Public Sub _get(Symbol As String) As Variant
|
||||||
Select Case Symbol
|
Select Case Symbol
|
||||||
Case "LabelsFont"
|
Case "LabelsFont"
|
||||||
Return $oLabelsFont
|
Return $oLabelsFont
|
||||||
|
Case "Padding"
|
||||||
|
Return $fPadding
|
||||||
|
Case "Showvalues"
|
||||||
|
Return $bShowValues
|
||||||
|
Case "Percentage"
|
||||||
|
Return $bPercentage
|
||||||
|
Case "OutlineColor"
|
||||||
|
Return $iOulineColor
|
||||||
|
Case "OutlineWidth"
|
||||||
|
Return $fOutlineWidth
|
||||||
|
Case "ShowLabels"
|
||||||
|
Return $bShowLabels
|
||||||
|
Case "Rotate"
|
||||||
|
Return $fRotate
|
||||||
Case Else
|
Case Else
|
||||||
Return Super[Symbol]
|
Return Super[Symbol]
|
||||||
|
|
||||||
|
@ -37,6 +57,20 @@ Public Sub _put(Value As Variant, Symbol As String)
|
||||||
Select Case Symbol
|
Select Case Symbol
|
||||||
Case "LabelsFont"
|
Case "LabelsFont"
|
||||||
$oLabelsFont = Value
|
$oLabelsFont = Value
|
||||||
|
Case "Padding"
|
||||||
|
$fPadding = Value
|
||||||
|
Case "Showvalues"
|
||||||
|
$bShowValues = Value
|
||||||
|
Case "Percentage"
|
||||||
|
$bPercentage = Value
|
||||||
|
Case "OutlineColor"
|
||||||
|
$iOulineColor = Value
|
||||||
|
Case "OutlineWidth"
|
||||||
|
$fOutlineWidth = Value
|
||||||
|
Case "ShowLabels"
|
||||||
|
$bShowLabels = value
|
||||||
|
Case "Rotate"
|
||||||
|
$fRotate = Value
|
||||||
Case Else
|
Case Else
|
||||||
Super[Symbol] = Value
|
Super[Symbol] = Value
|
||||||
End Select
|
End Select
|
||||||
|
@ -47,10 +81,17 @@ Public Function _GetParam(X As Integer, Y As Integer, Width As Integer, Height A
|
||||||
|
|
||||||
Dim hChart As Chart = Me._GetParent()
|
Dim hChart As Chart = Me._GetParent()
|
||||||
Dim hPr As Collection
|
Dim hPr As Collection
|
||||||
|
Dim f As Float
|
||||||
|
|
||||||
|
|
||||||
hpr = Super._GetParam(X, Y, Width, Height)
|
hpr = Super._GetParam(X, Y, Width, Height)
|
||||||
|
If hChart.Datas.Count = 0 Then Return
|
||||||
|
|
||||||
|
For i As Integer = 0 To hChart.Datas[0].Values.Max
|
||||||
|
f += hChart.Datas[0].Values[i]
|
||||||
|
Next
|
||||||
|
|
||||||
|
hpr!Total = f
|
||||||
|
|
||||||
|
|
||||||
Return hpr
|
Return hpr
|
||||||
|
@ -59,6 +100,8 @@ End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Public Sub _PaintBefore(hParam As Collection)
|
Public Sub _PaintBefore(hParam As Collection)
|
||||||
|
|
||||||
Super._PaintBefore(hParam)
|
Super._PaintBefore(hParam)
|
||||||
|
@ -76,4 +119,155 @@ Public Sub _PaintAfter(hParam As Collection)
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub _PaintContent(hParam As Collection)
|
||||||
|
|
||||||
|
Dim w As Float
|
||||||
|
Dim hChart As Chart = Me._GetParent()
|
||||||
|
Dim angle, anglePrev As Float
|
||||||
|
Dim f As Float
|
||||||
|
Dim Tot As Float = hParam!Total
|
||||||
|
Dim hCenter, hPos As Pointf
|
||||||
|
Dim hRect, hTextRect As RectF
|
||||||
|
Dim i As Integer
|
||||||
|
Dim s As String
|
||||||
|
Dim fRadius As Float
|
||||||
|
Dim fAngleLabel, ftmp As Float
|
||||||
|
Dim aLabelRect As New RectF[]
|
||||||
|
Dim fTr As Float
|
||||||
|
'Dim hPos As PointF
|
||||||
|
Dim aLabPos As PointF[]
|
||||||
|
Dim fMaxLabelWidth As Float
|
||||||
|
Dim H, AlfH As Integer
|
||||||
|
Dim fLabelRadius As Float
|
||||||
|
Dim fPadding As Float = $fPadding * hChart._fProportionnal
|
||||||
|
Dim oLabelFont, oValueFont As Font
|
||||||
|
Dim fRotate As Float = $fRotate - 90
|
||||||
|
|
||||||
|
oLabelFont = $oLabelsFont.Copy()
|
||||||
|
oLabelFont.Size = Max(oLabelFont.Size * hChart._fProportionnal, 1)
|
||||||
|
oValueFont = oLabelFont.Copy()
|
||||||
|
oValueFont.Size = oLabelFont.Size * 0.6
|
||||||
|
|
||||||
|
Paint.Font = oLabelFont
|
||||||
|
|
||||||
|
H = Paint.Font.H
|
||||||
|
AlfH = H / 4
|
||||||
|
w = Min(hParam!Rect.W, hParam!Rect.H) - fPadding
|
||||||
|
|
||||||
|
hRect = RectF(hParam!Rect.X + (hParam!Rect.W - w) / 2, hParam!Rect.Top + (hParam!Rect.H - w) / 2, w, w)
|
||||||
|
'Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H)
|
||||||
|
'Paint.stroke
|
||||||
|
hCenter = hRect.Center()
|
||||||
|
|
||||||
|
'Get the largest label
|
||||||
|
For i As Integer = 0 To hChart.Labels.Max
|
||||||
|
s = hChart.Labels[i]
|
||||||
|
fMaxLabelWidth = Max(Paint.TextSize(s).W, fMaxLabelWidth)
|
||||||
|
Next
|
||||||
|
fMaxLabelWidth = fMaxLabelWidth + AlfH * 2
|
||||||
|
|
||||||
|
fLabelRadius = hRect.W / 2 - fMaxLabelWidth
|
||||||
|
|
||||||
|
'If fLabelRadius * 2 + fMaxLabelWidth * 2 < hRect.W Then fLabelRadius = hRect.H / 2 - H
|
||||||
|
|
||||||
|
|
||||||
|
If $bShowLabels Then
|
||||||
|
fRadius = fLabelRadius - H
|
||||||
|
Else
|
||||||
|
fRadius = hRect.W / 2
|
||||||
|
Endif
|
||||||
|
|
||||||
|
For i As Integer = 0 To hChart.Datas[0].Values.Max
|
||||||
|
Paint.Font = oLabelFont
|
||||||
|
Paint.LineWidth = Me!OutlineWidth * hChart._fProportionnal
|
||||||
|
f = hChart.Datas[0].Values[i]
|
||||||
|
|
||||||
|
angle = f / Tot * 360
|
||||||
|
|
||||||
|
ftr = W / 2 - fRadius
|
||||||
|
Paint.Ellipse(hRect.X + fTr, hRect.Y + fTr, hRect.W - fTr * 2, hRect.H - fTr * 2, Rad(anglePrev + fRotate), Rad(angle), True)
|
||||||
|
Paint.Background = hChart.Colors[i Mod hChart.Colors.count]
|
||||||
|
Paint.fill(True)
|
||||||
|
|
||||||
|
Paint.Background = Me!OutlineColor
|
||||||
|
Paint.Stroke
|
||||||
|
'Endif
|
||||||
|
|
||||||
|
'compute point on the pie.~
|
||||||
|
'f = Sqr((hCenter.X - hRect.X) ^ 2 + (hCenter.Y - hRect.Y) ^ 2)
|
||||||
|
fAngleLabel = anglePrev + angle / 2
|
||||||
|
'Draw the Label Pos
|
||||||
|
If $bShowLabels Then
|
||||||
|
'compute the label Pos
|
||||||
|
hPos = PointF(hCenter.X + Cos(Rad(fAngleLabel + fRotate)) * fLabelRadius, hCenter.Y + Sin(Rad(fAngleLabel + fRotate)) * fLabelRadius)
|
||||||
|
s = hChart.Labels[i]
|
||||||
|
hTextRect = Paint.TextSize(s)
|
||||||
|
hTextRect.W += AlfH * 2
|
||||||
|
Paint.Background = Color.Black
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If fAngleLabel > 0 And fAngleLabel <= 90 Then
|
||||||
|
hTextRect.Move(hPos.X, hPos.Y - hTextRect.H / 2)
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Right)
|
||||||
|
Paint.MoveTo(hPos.X + AlfH, hPos.Y)
|
||||||
|
Paint.RelLineTo(-AlfH, 0)
|
||||||
|
Else If fAngleLabel > 90 And fAngleLabel <= 180 Then
|
||||||
|
hTextRect.Move(hPos.X, hPos.Y - hTextRect.H / 2)
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Right)
|
||||||
|
Paint.MoveTo(hPos.X + AlfH, hPos.Y)
|
||||||
|
Paint.RelLineTo(-AlfH, 0)
|
||||||
|
Else If fAngleLabel > 180 And fAngleLabel <= 270 Then
|
||||||
|
hTextRect.Move(hPos.X - hTextRect.W, hPos.Y - hTextRect.H / 2)
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Left)
|
||||||
|
Paint.MoveTo(hPos.X - AlfH, hPos.Y)
|
||||||
|
Paint.RelLineTo(AlfH, 0)
|
||||||
|
Else
|
||||||
|
hTextRect.Move(hPos.X - hTextRect.W, hPos.Y - hTextRect.H / 2)
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Left)
|
||||||
|
Paint.MoveTo(hPos.X - AlfH, hPos.Y)
|
||||||
|
Paint.RelLineTo(AlfH, 0)
|
||||||
|
Endif
|
||||||
|
hPos = pointf(hCenter.X + Cos(Rad(fAngleLabel + fRotate)) * (fRadius - AlfH), hCenter.Y + Sin(Rad(fAngleLabel + fRotate)) * (fRadius - AlfH))
|
||||||
|
Paint.LineTo(hPos.X, hPos.Y)
|
||||||
|
|
||||||
|
'Paint.Rectangle(hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H)
|
||||||
|
Paint.Stroke
|
||||||
|
Paint.Ellipse(hPos.X - 2, hPos.Y - 2, 4, 4)
|
||||||
|
Paint.Fill
|
||||||
|
Endif
|
||||||
|
anglePrev += angle
|
||||||
|
|
||||||
|
If $bShowValues Then
|
||||||
|
Paint.LineWidth = 1 * hChart._fProportionnal
|
||||||
|
Paint.Background = Color.Black
|
||||||
|
'Paint the values
|
||||||
|
Paint.Font = oValueFont
|
||||||
|
hPos = PointF(hCenter.X + Cos(Rad(fAngleLabel + fRotate)) * fRadius * 0.6, hCenter.Y + Sin(Rad(fAngleLabel + fRotate)) * fRadius * 0.6)
|
||||||
|
'Paint.Rectangle(hPos.X, hPos.Y, 2, 2)
|
||||||
|
Paint.Stroke
|
||||||
|
If $bPercentage Then
|
||||||
|
s = Str(Int(hChart.Datas[0].Values[i] / Tot * 100)) & " %"
|
||||||
|
Else
|
||||||
|
s = Str(hChart.Datas[0].Values)
|
||||||
|
Endif
|
||||||
|
hTextRect = Paint.TextSize(s)
|
||||||
|
hTextRect.W += AlfH
|
||||||
|
hTextRect.Move(hPos.X - hTextRect.W / 2, hPos.Y - hTextRect.H / 2)
|
||||||
|
Paint.Rectangle(hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, 3)
|
||||||
|
Paint.Background = Color.SetAlpha(Color.Black, 180)
|
||||||
|
Paint.Fill
|
||||||
|
Paint.Background = Color.White
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Center)
|
||||||
|
Endif
|
||||||
|
Next
|
||||||
|
For j As Integer = 0 To 360
|
||||||
|
|
||||||
|
' Paint.Background = Color.Green
|
||||||
|
' Paint.Fill
|
||||||
|
Next
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,37 +1,72 @@
|
||||||
' Gambas class file
|
' Gambas class file
|
||||||
|
|
||||||
|
Inherits _Frame
|
||||||
Property Title As String Use $sTitle
|
Property Title As String Use $sTitle
|
||||||
Property Position As Integer Use $iPosition
|
Property Position As Integer Use $iPosition
|
||||||
Property Visible As Boolean Use $bVisible
|
Property Visible As Boolean Use $bVisible
|
||||||
Property {Font} As Font Use $oFont
|
'Property {Font} As Font Use $oFont
|
||||||
|
Property SymbolStyle As String Use $sSymbolStyle
|
||||||
|
Property SymbolOutlineColor As Integer Use $iSymbolOutlineColor
|
||||||
|
Property ShowPercent As Boolean Use $bShowPercent
|
||||||
|
Property InterlineColor As Integer Use $iInterlineColor
|
||||||
|
Property InterlineWidth As Float Use $fInterlineWidth
|
||||||
|
Property Font As Font Use $oFont
|
||||||
|
Property TitleFont As Font Use $oTitleFont
|
||||||
|
'Property Background As Integer Use $iBackground
|
||||||
|
'Property Border As Border Use $hBorder
|
||||||
|
Property TitleColor As Integer Use $iTitleColor
|
||||||
|
Property Color As Integer Use $iColor
|
||||||
|
Property Spacing As Integer Use $iSpace
|
||||||
|
Property TitleSpacing As Integer Use $iTitleSpace
|
||||||
|
Property Width As Integer Use $iWidth
|
||||||
|
Property Frame As _Frame Use $hFrame
|
||||||
Event foo
|
Event foo
|
||||||
|
Private $iBackground As Integer
|
||||||
|
|
||||||
Public Sub _new()
|
Public Sub _new()
|
||||||
|
|
||||||
'$bVisible = True
|
'$bVisible = True
|
||||||
$oFont = New Font
|
$oFont = New Font
|
||||||
$iPosition = Align.Left
|
$iPosition = Align.Left
|
||||||
|
$oTitleFont = New Font
|
||||||
|
$iBackground = -1
|
||||||
|
$hFrame = New _Frame
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Integer) As Rectf
|
Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Integer) As Rectf
|
||||||
|
|
||||||
Dim hChart As Chart = _GetParent()
|
Dim hChart As Chart = _GetParent()
|
||||||
Dim hRect As New Rectf
|
Dim hRect As New Rectf
|
||||||
|
Dim hInnerRect As Rect
|
||||||
|
Dim hTextRect As Rectf
|
||||||
Dim W As Float
|
Dim W As Float
|
||||||
Dim aLabels As String[] = hChart.Labels
|
Dim aLabels As String[] = hChart.Labels
|
||||||
Dim s As String
|
Dim s As String
|
||||||
Dim H As Float
|
Dim H As Float
|
||||||
Dim f, j As Float
|
Dim f, j, Tot As Float
|
||||||
Dim i As Integer
|
Dim i As Integer
|
||||||
|
Dim hPercentRect As RectF
|
||||||
|
Dim hBorder As New Border
|
||||||
|
Dim fSpace As Float = $iSpace * hChart._fProportionnal
|
||||||
|
Dim fTitleSpace As Float = $iTitleSpace * hChart._fProportionnal
|
||||||
|
|
||||||
|
' If $hBorder Then
|
||||||
|
' hBorder = $hBorder.Copy()
|
||||||
|
' Else
|
||||||
|
' hBorder = New Border
|
||||||
|
' Endif
|
||||||
|
|
||||||
|
'Paint.save
|
||||||
Paint.font = $oFont
|
Paint.font = $oFont
|
||||||
Paint.Font.Size *= hChart._fProportionnal
|
Paint.Font.Size *= hChart._fProportionnal
|
||||||
|
'hBorder.Padding = 30
|
||||||
H = Paint.Font.H
|
H = Paint.Font.H
|
||||||
|
' Paint.Rectangle(X, Y, Width, Height)
|
||||||
|
' Paint.Background = Color.Red
|
||||||
|
' Paint.Stroke
|
||||||
|
|
||||||
Paint.LineWidth = 1 * hChart._fProportionnal
|
Paint.LineWidth = 1 * hChart._fProportionnal
|
||||||
Select Case $iPosition
|
Select Case $iPosition
|
||||||
|
@ -44,13 +79,24 @@ Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Intege
|
||||||
|
|
||||||
hRect.Height = H * 3.5
|
hRect.Height = H * 3.5
|
||||||
hRect.W = H * 2 + f + aLabels.Max * (H * 1.2 + H / 2) ', Width - H * 2)
|
hRect.W = H * 2 + f + aLabels.Max * (H * 1.2 + H / 2) ', Width - H * 2)
|
||||||
|
If $iWidth > 0 Then hRect.W = Max(hRect.W, $iWidth * hChart._fProportionnal)
|
||||||
hRect.X = (Width + -hRect.W) / 2
|
hRect.X = (Width + -hRect.W) / 2
|
||||||
If $iPosition = Align.top Then
|
If $iPosition = Align.top Then
|
||||||
hRect.Y = Y + H
|
hRect.Y = Y + H
|
||||||
|
|
||||||
Else
|
Else
|
||||||
hRect.Y = Height - hRect.H - H
|
hRect.Y = Y + Height - hRect.H - H
|
||||||
Endif
|
Endif
|
||||||
|
hBorder.Padding = Max(hBorder.Padding, 10)
|
||||||
|
i = hBorder.LeftPadding + hBorder.LeftWidth
|
||||||
|
hRect.X = hRect.X - i
|
||||||
|
hRect.Width = hRect.Width + i + hBorder.RightPadding + hBorder.Width
|
||||||
|
i = hBorder.TopPadding + hBorder.TopWidth
|
||||||
|
hRect.Y = hRect.Y - i
|
||||||
|
hRect.H = hRect.H + i + hBorder.BottomPadding + hBorder.BottomWidth
|
||||||
|
|
||||||
|
hInnerRect = hBorder.GetRect(hRect, True)
|
||||||
|
|
||||||
Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H)
|
Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H)
|
||||||
Paint.Stroke
|
Paint.Stroke
|
||||||
hRect.H += H
|
hRect.H += H
|
||||||
|
@ -63,11 +109,8 @@ Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Intege
|
||||||
f = hRect.X + H / 2
|
f = hRect.X + H / 2
|
||||||
j = h * 1.5
|
j = h * 1.5
|
||||||
For Each s In aLabels
|
For Each s In aLabels
|
||||||
Paint.Rectangle(f, hRect.Y + j, H, H)
|
DrawSymbol($sSymbolStyle, f, hRect.Y + j, H, H, hChart.Colors[i Mod hChart.Colors.Count], $iSymbolOutlineColor)
|
||||||
Paint.Background = hChart.Colors[i Mod hChart.Colors.Count]
|
|
||||||
Paint.Fill(True)
|
|
||||||
Paint.Background = Color.Black
|
Paint.Background = Color.Black
|
||||||
Paint.Stroke
|
|
||||||
f += H * 1.2
|
f += H * 1.2
|
||||||
Paint.DrawText(s, f, hRect.Y + j + H / 1.3)
|
Paint.DrawText(s, f, hRect.Y + j + H / 1.3)
|
||||||
f += Paint.TextSize(s).W + H / 2
|
f += Paint.TextSize(s).W + H / 2
|
||||||
|
@ -75,43 +118,109 @@ Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Intege
|
||||||
Next
|
Next
|
||||||
|
|
||||||
Case Else
|
Case Else
|
||||||
|
|
||||||
|
'compute the largest label
|
||||||
For Each s In aLabels
|
For Each s In aLabels
|
||||||
|
hRect.W = Max(Paint.TextSize(s).W, f)
|
||||||
f = Max(Paint.TextSize(s).W, f)
|
|
||||||
|
|
||||||
Next
|
Next
|
||||||
f = Max(Paint.TextSize($sTitle).W, f)
|
'generate the rect
|
||||||
hRect.H = aLabels.Count * H * 1.2 + H
|
'Test if the Title is larger than the largest label
|
||||||
hRect.W = H * 3 + f
|
|
||||||
hRect.Y = (Height - hRect.H) / 2
|
|
||||||
If $sTitle Then hRect.H = hRect.H + H
|
|
||||||
|
|
||||||
|
'take the title into account
|
||||||
|
If $sTitle Then
|
||||||
|
Paint.Font = $oTitleFont
|
||||||
|
Paint.Font.Size = Paint.Font.Size * hChart._fProportionnal
|
||||||
|
hRect.W = Max(Paint.TextSize($sTitle).W, hRect.W)
|
||||||
|
Paint.Font = $oTitleFont
|
||||||
|
Paint.Font.Size = $oTitleFont.Size * hChart._fProportionnal
|
||||||
|
hRect.H = Paint.Font.H + fTitleSpace
|
||||||
|
Endif
|
||||||
|
|
||||||
|
If $iWidth > 0 Then hRect.W = Max(hRect.W, $iWidth * hChart._fProportionnal)
|
||||||
|
hRect.H = hRect.H + aLabels.Count * (H + fSpace) - fSpace
|
||||||
|
|
||||||
|
'Add the border and padding size to the legend size
|
||||||
|
|
||||||
|
'hBorder.Padding = Max(hBorder.Padding, 10)
|
||||||
|
'hBorder.Padding = hBorder.Padding * hChart._fProportionnal
|
||||||
|
'hBorder.Width = hBorder.Width * hChart._fProportionnal
|
||||||
|
'hBorder.Radius = hBorder.Radius * hChart._fProportionnal
|
||||||
|
With $hFrame
|
||||||
|
i = .Border.LeftPadding + .Border.LeftWidth
|
||||||
|
hRect.Width = hRect.Width + i + .Border.RightPadding + .Border.Width
|
||||||
|
i = hBorder.TopPadding + hBorder.TopWidth
|
||||||
|
hRect.H = hRect.H + i + .Border.BottomPadding + .Border.BottomWidth
|
||||||
If $iPosition = Align.Left Then
|
If $iPosition = Align.Left Then
|
||||||
hRect.X = X + H
|
hRect.X = X + H
|
||||||
Else
|
Else
|
||||||
hRect.X = Width - hRect.W - H
|
hRect.X = Width - hRect.W - H
|
||||||
Endif
|
Endif
|
||||||
|
hRect.Y = Y + (Height - hRect.H) / 2
|
||||||
|
|
||||||
Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H)
|
End With
|
||||||
Paint.Stroke
|
$hFrame.Rect = hRect
|
||||||
|
'get the interior rect
|
||||||
|
$hFrame._PaintBefore()
|
||||||
|
hInnerRect = $hFrame._GetRect()
|
||||||
|
|
||||||
f = hRect.Y + H * 1.5
|
'clip the drawing
|
||||||
|
'hBorder.Clip(hRect)
|
||||||
|
' If $hBorder Then
|
||||||
|
' Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H)
|
||||||
|
' Paint.Background = IIf($iBackground = -1, Color.Transparent, $iBackground)
|
||||||
|
' Paint.Fill
|
||||||
|
' hBorder.Paint(hRect)
|
||||||
|
' Endif
|
||||||
|
|
||||||
|
'compute the title position
|
||||||
|
f = hInnerRect.Y
|
||||||
If $sTitle Then
|
If $sTitle Then
|
||||||
|
f += fTitleSpace
|
||||||
Paint.Font.Bold = True
|
Paint.Font.Bold = True
|
||||||
Paint.dRAWText($sTitle, hRect.X, hRect.Y, hRect.W, H, Align.Center)
|
Paint.Background = IIf($iTitleColor = -1, Color.Transparent, $iTitleColor)
|
||||||
|
Paint.dRAWText($sTitle, hInnerRect.X, hInnerRect.Y, hInnerRect.W, H, Align.Center)
|
||||||
Paint.Font.bold = False
|
Paint.Font.bold = False
|
||||||
f = f + H
|
f += Paint.Font.H
|
||||||
Endif
|
Endif
|
||||||
|
|
||||||
For Each s In aLabels
|
Paint.LineWidth = 1
|
||||||
Paint.Rectangle(hRect.X + H / 2, f - H * 0.8, H, H)
|
|
||||||
Paint.Background = hChart.Colors[i Mod hChart.Colors.Count]
|
'Compute total of value for percentages
|
||||||
Paint.Fill(True)
|
For Each j In hChart.Datas[0].Values
|
||||||
Paint.Background = Color.Black
|
Tot = Tot + j
|
||||||
Paint.Stroke()
|
Next
|
||||||
Paint.DrawText(s, hRect.X + 2 * H, f)
|
'get the minimal percentage label rect
|
||||||
f += H * 1.2
|
hPercentRect = Paint.TextSize("000 %")
|
||||||
Inc i
|
|
||||||
|
|
||||||
|
Paint.font = $oFont
|
||||||
|
Paint.Font.Size = Paint.Font.Size * hChart._fProportionnal
|
||||||
|
|
||||||
|
For i = 0 To aLabels.Max
|
||||||
|
s = aLabels[i]
|
||||||
|
hTextRect = Paint.TextSize(s)
|
||||||
|
DrawSymbol($sSymbolStyle, hInnerRect.X, f, H, H, hChart.Colors[i Mod hChart.Colors.Count], Color.Transparent)
|
||||||
|
Paint.Background = $iColor
|
||||||
|
hTextRect.Move(hInnerRect.X + H * 1.5, f)
|
||||||
|
Paint.DrawText(s, hTextRect.X, hTextRect.Y, hTextRect.W, hTextRect.H, Align.Left)
|
||||||
|
|
||||||
|
'Show percentages
|
||||||
|
If $bShowPercent Then
|
||||||
|
hPercentRect.Move(hTextRect.Right, hTextRect.Top)
|
||||||
|
hPercentRect.W = hInnerRect.Right - H / 2 - hPercentRect.Left
|
||||||
|
Paint.DrawText(Format(Floor(hChart.Datas[0].Values[i] / Tot * 100), "0") & " %", hPercentRect.X, hPercentRect.Y, hPercentRect.W, hPercentRect.H, align.Right)
|
||||||
|
Endif
|
||||||
|
'Break before drawing last separator
|
||||||
|
If i = aLabels.Max Then Break
|
||||||
|
'Draw separator
|
||||||
|
Paint.AntiAlias = False
|
||||||
|
Paint.LineWidth = $fInterlineWidth
|
||||||
|
Paint.Background = $iInterlineColor
|
||||||
|
Paint.MoveTo(hInnerRect.X, hTextRect.Bottom + fSpace / 2)
|
||||||
|
Paint.LineTo(hInnerRect.Right, hTextRect.Bottom + fSpace / 2)
|
||||||
|
Paint.stroke
|
||||||
|
Paint.AntiAlias = True
|
||||||
|
f += H + fSpace
|
||||||
Next
|
Next
|
||||||
|
|
||||||
hRect.W += H
|
hRect.W += H
|
||||||
|
@ -119,31 +228,56 @@ Public Sub _Paint(X As Integer, Y As Integer, Width As Integer, Height As Intege
|
||||||
|
|
||||||
|
|
||||||
End Select
|
End Select
|
||||||
|
$hFrame._Paintafter
|
||||||
Return hRect
|
Return hRect
|
||||||
|
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
||||||
Public Sub GetRect(X As Integer, Y As Integer, Width As Integer, Height As Integer) As Rectf
|
Private Sub DrawSymbol(sSymbol As String, X As Float, Y As Float, W As Float, H As Float, iColor As Integer, iOutlineColor As Integer)
|
||||||
|
|
||||||
|
Select Case sSymbol
|
||||||
|
|
||||||
|
Case "circle"
|
||||||
|
Paint.Ellipse(X, Y, W, H)
|
||||||
|
Case "diam"
|
||||||
|
Paint.MoveTo(X + W / 2, Y)
|
||||||
|
Paint.RelLineTo(W / 2, H / 2)
|
||||||
|
Paint.RelLineTo(-W / 2, H / 2)
|
||||||
|
Paint.RelLineTo(-W / 2, -H / 2)
|
||||||
|
Paint.ClosePath
|
||||||
|
Case Else
|
||||||
|
Paint.Rectangle(X, Y, W, H, 1)
|
||||||
|
|
||||||
|
End Select
|
||||||
|
|
||||||
|
|
||||||
|
Paint.Background = iColor
|
||||||
|
Paint.Fill(True)
|
||||||
|
Paint.Background = iOutlineColor
|
||||||
|
Paint.Stroke
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
||||||
Private Function Font_Read() As Font
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End
|
|
||||||
|
|
||||||
Private Sub Font_Write(Value As Font)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End
|
|
||||||
|
|
||||||
|
|
||||||
Public Sub _GetParent() As Chart
|
Public Sub _GetParent() As Chart
|
||||||
|
|
||||||
Return Object.Parent(Me)
|
Return Object.Parent(Me)
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Private Function Width_Read() As Integer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
Private Sub Width_Write(Value As Integer)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End
|
||||||
|
|
|
@ -4,8 +4,8 @@ Inherits _ChartStyle
|
||||||
Property Read Symbols As String[] Use $aSymbols
|
Property Read Symbols As String[] Use $aSymbols
|
||||||
Private $oXFont As New Font
|
Private $oXFont As New Font
|
||||||
Private $oYFont As New Font
|
Private $oYFont As New Font
|
||||||
Private $fXMaxValue As Float = 100.0
|
Private $fXMaxValue As Float = 10.0
|
||||||
Private $fYMaxValue As Float = 100.0
|
Private $fYMaxValue As Float = 10.0
|
||||||
Private $fXMinValue As Float
|
Private $fXMinValue As Float
|
||||||
Private $fYMinValue As Float
|
Private $fYMinValue As Float
|
||||||
Private $fXStep As Float = 1.0
|
Private $fXStep As Float = 1.0
|
||||||
|
@ -217,7 +217,7 @@ Public Function _GetParam(X As Integer, Y As Integer, Width As Integer, Height A
|
||||||
aLabels = New String[]
|
aLabels = New String[]
|
||||||
|
|
||||||
If hChart.Datas.Count = 1 Then
|
If hChart.Datas.Count = 1 Then
|
||||||
For i = 0 To j
|
For i = 0 To j - 1
|
||||||
If i > hChart.Labels.Max Then
|
If i > hChart.Labels.Max Then
|
||||||
aLabels.Add("")
|
aLabels.Add("")
|
||||||
Else
|
Else
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
Property Text As String Use $sText
|
Property Text As String Use $sText
|
||||||
Property {Font} As Font Use $oFont
|
Property {Font} As Font Use $oFont
|
||||||
Property Visible As Boolean Use $bVisible
|
Property Visible As Boolean Use $bVisible
|
||||||
|
Property {Color} As Integer Use $iColor
|
||||||
|
Event foo
|
||||||
|
|
||||||
Public Sub _new()
|
Public Sub _new()
|
||||||
|
|
||||||
|
@ -12,7 +14,20 @@ Public Sub _new()
|
||||||
End
|
End
|
||||||
|
|
||||||
|
|
||||||
Public Sub Paint()
|
Public Sub _Paint(W As Integer) As Float
|
||||||
|
Dim hChart As Chart = GetParent()
|
||||||
|
Dim H As Float
|
||||||
|
Paint.Font = $oFont
|
||||||
|
Paint.Font.Size = Paint.Font.Size * hChart._fProportionnal
|
||||||
|
H = Paint.Font.H * 1.5
|
||||||
|
Paint.Background = $iColor
|
||||||
|
Paint.DrawText($sText, 0, 0, W, H, Align.Center)
|
||||||
|
Return H
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Private Sub GetParent() As Chart
|
||||||
|
Return Object.Parent(Me)
|
||||||
|
|
||||||
End
|
End
|
||||||
|
|
77
comp/src/gb.chart2/.src/_Frame.class
Normal file
77
comp/src/gb.chart2/.src/_Frame.class
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
' Gambas class file
|
||||||
|
|
||||||
|
Property Border As Border Use $hBorder
|
||||||
|
Property Name As String Use $sName
|
||||||
|
Property Background As Integer Use $iBackground
|
||||||
|
Property Rect As Rectf Use $hRect
|
||||||
|
Property Shadow As Float Use $fShadow
|
||||||
|
Property ShadowColor As Integer Use $iShadowColor
|
||||||
|
Private $hInnerShadow As Rectf
|
||||||
|
'Private $iBackground As Integer
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub _new(Optional sStyle As String)
|
||||||
|
|
||||||
|
$hBorder = New Border
|
||||||
|
$hRect = RectF(0, 0, 10, 10)
|
||||||
|
$fShadow = 5
|
||||||
|
$iShadowColor = -1
|
||||||
|
$iBackground = -1
|
||||||
|
$hBorder.padding = 20
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub _GetRect() As Rect
|
||||||
|
|
||||||
|
Return $hBorder.GetRect($hRect, True)
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub _PaintBefore()
|
||||||
|
If $fShadow Then
|
||||||
|
Paint.save
|
||||||
|
|
||||||
|
$hInnerShadow = RectF($hRect.X + $fShadow, $hRect.Y + $fShadow, $hRect.W - $fShadow, $hRect.H - $fShadow)
|
||||||
|
$hBorder.Clip($hInnerShadow)
|
||||||
|
|
||||||
|
Paint.Rectangle($hInnerShadow.X, $hInnerShadow.Y, $hInnerShadow.Width, $hInnerShadow.Height)
|
||||||
|
Paint.Background = $iShadowColor
|
||||||
|
Paint.Fill
|
||||||
|
Paint.Restore
|
||||||
|
$hInnerShadow.Translate(-$fShadow, -$fShadow)
|
||||||
|
Else
|
||||||
|
$hInnerShadow = $hRect.Copy()
|
||||||
|
Endif
|
||||||
|
Paint.Save
|
||||||
|
$hBorder.Clip($hInnerShadow)
|
||||||
|
'Paint.Clip()
|
||||||
|
Paint.Rectangle($hInnerShadow.X, $hInnerShadow.Y, $hInnerShadow.Width, $hInnerShadow.Height)
|
||||||
|
Paint.Background = IIf($iBackground = -1, Color.Transparent, $iBackground)
|
||||||
|
Paint.Fill
|
||||||
|
End
|
||||||
|
|
||||||
|
Public Sub _PaintContent()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub _PaintAfter()
|
||||||
|
|
||||||
|
$hBorder.Paint($hInnerShadow)
|
||||||
|
Paint.Restore
|
||||||
|
End
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub Paint()
|
||||||
|
|
||||||
|
_PaintBefore
|
||||||
|
_PaintAfter
|
||||||
|
|
||||||
|
End
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue