Author: rolf
Date: 2007-08-09 03:31:42 -0400 (Thu, 09 Aug 2007)
New Revision: 83711
Added:
trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.response
trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.vb
Log:
Added test case for bug #82383.
Added: trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.response
===================================================================
--- trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.response 2007-08-09
07:24:53 UTC (rev 83710)
+++ trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.response 2007-08-09
07:31:42 UTC (rev 83711)
@@ -0,0 +1,2 @@
+-r:System.Drawing.dll,System.Windows.Forms.dll
+-target:library
\ No newline at end of file
Property changes on: trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.response
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.vb
===================================================================
--- trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.vb 2007-08-09 07:24:53 UTC
(rev 83710)
+++ trunk/mono-basic/vbnc/vbnc/tests/Bugs/bug-82382.vb 2007-08-09 07:31:42 UTC
(rev 83711)
@@ -0,0 +1,454 @@
+Imports System
+Imports System.ComponentModel
+Imports System.Diagnostics
+Imports System.Drawing
+Imports System.Drawing.Drawing2D
+Imports System.Globalization
+Imports System.Math
+Imports System.Resources
+Imports System.Windows.Forms
+
+Public Class MainForm
+ Inherits Form
+
+ Public Sub New()
+ MyBase.New()
+
+ InitializeComponent()
+
+ Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ End Sub
+
+ Shared Sub Main
+ Application.Run (New MainForm ())
+ End Sub
+
+ 'Form overrides dispose to clean up the component list.
+ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing Then
+ If Not (components Is Nothing) Then
+ components.Dispose()
+ End If
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As IContainer
+
+ Friend WithEvents Button1 As Button
+ Friend WithEvents Timer1 As Timer
+ Friend WithEvents RImage1 As RImage
+ Friend WithEvents angle As NumericUpDown
+ Friend WithEvents ComboBox1 As ComboBox
+ Friend WithEvents CheckBox1 As CheckBox
+ <DebuggerStepThrough()> Private Sub InitializeComponent()
+ Me.components = New Container
+ Dim resources As ResourceManager = New
ResourceManager(GetType(MainForm))
+ Me.Button1 = New Button
+ Me.Timer1 = New Timer(Me.components)
+ Me.RImage1 = New RImage
+ Me.angle = New NumericUpDown
+ Me.ComboBox1 = New ComboBox
+ Me.CheckBox1 = New CheckBox
+ CType(Me.angle, ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'Timer1
+ '
+ Me.Timer1.Interval = 50
+ '
+ 'RImage1
+ '
+ Me.RImage1.BackColor = Color.Transparent
+ Me.RImage1.BorderStyle = BorderStyle.FixedSingle
+ Me.RImage1.Direction = RImage.DirectionEnum.Clockwise
+ Me.RImage1.Image = CType(resources.GetObject("RImage1.Image"),
Image)'Icon.ToBitmap ()
+ Me.RImage1.Location = New Point(48, 64)
+ Me.RImage1.Name = "RImage1"
+ Me.RImage1.Rotation = 0
+ Me.RImage1.ShowThrough = False
+ Me.RImage1.Size = New Size(186, 96)
+ Me.RImage1.SizeMode = PictureBoxSizeMode.CenterImage
+ Me.RImage1.TabIndex = 2
+ Me.RImage1.TabStop = False
+ Me.RImage1.TransparentColor = Color.Transparent
+ Me.Controls.Add(Me.RImage1)
+ '
+ 'Button1
+ '
+ Me.Button1.BackColor = SystemColors.ActiveCaption
+ Me.Button1.Location = New Point(48, 64)
+ Me.Button1.Name = "Button1"
+ Me.Button1.Size = New Size(186, 96)
+ Me.Button1.TabIndex = 1
+ Me.Button1.Text = "Button1"
+ Me.Controls.Add(Me.Button1)
+ '
+ 'angle
+ '
+ Me.angle.Location = New Point(8, 8)
+ Me.angle.Maximum = New Decimal(New Integer() {360, 0, 0, 0})
+ Me.angle.Minimum = New Decimal(New Integer() {1, 0, 0, -2147483648})
+ Me.angle.Name = "angle"
+ Me.angle.Size = New Size(72, 22)
+ Me.angle.TabIndex = 3
+ Me.Controls.Add(Me.angle)
+ '
+ 'ComboBox1
+ '
+ Me.ComboBox1.Items.AddRange(New Object() {"Normal", "AutoSize",
"Center", "Stretch"})
+ Me.ComboBox1.Location = New Point(96, 8)
+ Me.ComboBox1.Name = "ComboBox1"
+ Me.ComboBox1.Size = New Size(168, 24)
+ Me.ComboBox1.TabIndex = 4
+ Me.ComboBox1.Text = "Center"
+ Me.Controls.Add(Me.ComboBox1)
+ '
+ 'CheckBox1
+ '
+ Me.CheckBox1.Location = New Point(80, 32)
+ Me.CheckBox1.Name = "CheckBox1"
+ Me.CheckBox1.Size = New Size(128, 24)
+ Me.CheckBox1.TabIndex = 5
+ Me.CheckBox1.Text = "Show Through"
+ Me.Controls.Add(Me.CheckBox1)
+ '
+ 'MainForm
+ '
+ Me.AutoScaleBaseSize = New Size(6, 15)
+ Me.BackColor = SystemColors.Control
+ Me.ClientSize = New Size(292, 180)
+ Me.Location = new Point (200, 100)
+ Me.StartPosition = FormStartPosition.Manual
+ Me.Text = "bug #82370"
+ CType(Me.angle, ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Private Sub MainForm_Load(ByVal sender As Object, ByVal e As EventArgs)
Handles MyBase.Load
+ Dim instructionsForm As InstructionsForm = New InstructionsForm
()
+ instructionsForm.Show ()
+ End Sub
+
+ Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles Button1.Click
+ RImage1.Rotation = 45
+ End Sub
+
+ Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs)
Handles Timer1.Tick
+ If RImage1.Rotation = 350 Then
+ RImage1.Rotation += 10
+ If RImage1.Direction = RImage.DirectionEnum.Clockwise Then
+ RImage1.Direction = RImage.DirectionEnum.Counter_Clockwise
+ RImage1.ShowThrough = True
+ Else
+ RImage1.Direction = RImage.DirectionEnum.Clockwise
+ RImage1.ShowThrough = False
+ End If
+ Exit Sub
+ End If
+ RImage1.Rotation += 10
+ End Sub
+
+ Private Sub NumericUpDown1_ValueChanged(ByVal sender As Object, ByVal e As
EventArgs) Handles angle.ValueChanged
+ If angle.Value > 359.9 Then
+ angle.Value = 0
+ Exit Sub
+ End If
+ If angle.Value < 0.0 Then
+ angle.Value = 359
+ Exit Sub
+ End If
+ RImage1.Rotation = angle.Value
+ End Sub
+
+ Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e
As EventArgs) Handles ComboBox1.SelectedIndexChanged
+ Select Case ComboBox1.Text
+ Case "Normal"
+ RImage1.SizeMode = PictureBoxSizeMode.Normal
+ Case "AutoSize"
+ RImage1.SizeMode = PictureBoxSizeMode.AutoSize
+ Case "Stretch"
+ RImage1.SizeMode = PictureBoxSizeMode.StretchImage
+ Case "Center"
+ RImage1.SizeMode = PictureBoxSizeMode.CenterImage
+ End Select
+ End Sub
+
+ Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As
EventArgs) Handles CheckBox1.CheckedChanged
+ RImage1.ShowThrough = CheckBox1.Checked
+ End Sub
+End Class
+
+Public Class InstructionsForm
+ Inherits Form
+
+ Public Sub New ()
+ '
+ ' _tabControl
+ '
+ _tabControl = new TabControl ()
+ _tabControl.Dock = DockStyle.Fill
+ Controls.Add (_tabControl)
+ '
+ ' _bugDescriptionText1
+ '
+ _bugDescriptionText1 = new TextBox ()
+ _bugDescriptionText1.Dock = DockStyle.Fill
+ _bugDescriptionText1.Multiline = true
+ _bugDescriptionText1.Text = String.Format
(CultureInfo.InvariantCulture, _
+ "Expected result on start-up:{0}{0}" _
+ + "1. The image is displayed in the center of the
PictureBox.{0}{0}" _
+ + "2. The button is not displayed.", _
+ Environment.NewLine)
+ '
+ ' _tabPage1
+ '
+ _tabPage1 = new TabPage ()
+ _tabPage1.Text = "#1"
+ _tabPage1.Controls.Add (_bugDescriptionText1)
+ _tabControl.Controls.Add (_tabPage1)
+ '
+ ' _bugDescriptionText2
+ '
+ _bugDescriptionText2 = new TextBox ()
+ _bugDescriptionText2.Dock = DockStyle.Fill
+ _bugDescriptionText2.Multiline = true
+ _bugDescriptionText2.Text = String.Format
(CultureInfo.InvariantCulture, _
+ "Steps to execute:{0}{0}" _
+ + "1. Check the Show Through checkbox.{0}{0}" _
+ + "2. Uncheck the Show Through checkbox.{0}{0}" _
+ + "3. Check the Show Through checkbox.{0}{0}" _
+ + "Expected result:{0}{0}" _
+ + "1. On step 1 and 3, the button is displayed underneath the " _
+ + "image.{0}{0}" _
+ + "1. On step 2, the button is not displayed.", _
+ Environment.NewLine)
+ '
+ ' _tabPage2
+ '
+ _tabPage2 = new TabPage ()
+ _tabPage2.Text = "#2"
+ _tabPage2.Controls.Add (_bugDescriptionText2)
+ _tabControl.Controls.Add (_tabPage2)
+ '
+ ' InstructionsForm
+ '
+ ClientSize = new Size (300, 230)
+ Location = new Point (650, 100)
+ StartPosition = FormStartPosition.Manual
+ Text = "Instructions - bug #82376"
+ End Sub
+
+ Private _bugDescriptionText1 As TextBox
+ Private _bugDescriptionText2 As TextBox
+ Private _tabControl As TabControl
+ Private _tabPage1 as TabPage
+ Private _tabPage2 as TabPage
+End Class
+
+Public Class RImage
+ Inherits PictureBox
+
+ Private _degree As Integer = 0
+ Private _sizemode As PictureBoxSizeMode
+ Private _transColor As Color
+ Private _direction As DirectionEnum = DirectionEnum.Clockwise
+ Private _showThrough As Boolean
+
+ Public Sub New()
+ MyBase.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ End Sub
+
+ <Description("Space not filled in by image shows the controls beneath
it.")> Public Property ShowThrough() As Boolean
+ Get
+ Return _showThrough
+ End Get
+ Set(ByVal Value As Boolean)
+ _showThrough = Value
+ Me.Invalidate()
+ End Set
+ End Property
+
+ <Description("Controls the direction of the rotation.")> Public Property
Direction() As DirectionEnum
+ Get
+ Return _direction
+ End Get
+ Set(ByVal Value As DirectionEnum)
+ _direction = Value
+ Me.Invalidate()
+ End Set
+ End Property
+
+ <Description("The angle of rotation (in degrees).")> Public Property
Rotation() As Integer
+ Get
+ Return _degree
+ End Get
+ Set(ByVal Value As Integer)
+ _degree = ValidRotation(Value)
+ Me.Invalidate()
+ End Set
+ End Property
+
+ <Description("The color in the image to make transparent.
Web->Transparent is none.")> Public Property TransparentColor() As Color
+ Get
+ Return _transColor
+ End Get
+ Set(ByVal Value As Color)
+ _transColor = Value
+ Me.Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property SizeMode() As PictureBoxSizeMode
+ Get
+ Return _sizemode
+ End Get
+ Set(ByVal Value As PictureBoxSizeMode)
+ _sizemode = Value
+ Me.Invalidate()
+ End Set
+ End Property
+
+ Private Function ValidRotation(ByVal Value As Integer) As Integer
+ If Value >= 0 And Value < 360 Then
+ Return Value
+ End If
+ If Value >= 360 Then
+ Value -= 360
+ ElseIf Value < 0 Then
+ Value += 360
+ End If
+ Value = ValidRotation(Value)
+ Return Value
+ End Function
+
+ Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
+ If MyBase.Image Is Nothing Then
+ Dim b As Brush
+ b = New SolidBrush(Me.BackColor)
+ pe.Graphics.FillRectangle(b, 0, 0, MyBase.Width, MyBase.Height)
+ Exit Sub
+ End If
+ Dim bm_in As New Bitmap(MyBase.Image)
+
+ Dim wid As Single = bm_in.Width
+ Dim hgt As Single = bm_in.Height
+
+ Dim corners As Point() = { _
+ New Point(0, 0), _
+ New Point(wid, 0), _
+ New Point(0, hgt), _
+ New Point(wid, hgt)}
+
+ Dim cx As Single = wid / 2
+ Dim cy As Single = hgt / 2
+ Dim i As Long
+ For i = 0 To 3
+ corners(i).X -= cx
+ corners(i).Y -= cy
+ Next
+
+ Dim theta As Single = CSng((_degree) * _direction) * PI / 180
+
+ Dim sin_theta As Single = Sin(theta)
+ Dim cos_theta As Single = Cos(theta)
+
+ Dim X As Single
+ Dim Y As Single
+ For i = 0 To 3
+ X = corners(i).X
+ Y = corners(i).Y
+ corners(i).X = (X * cos_theta) - (Y * sin_theta)
+ corners(i).Y = (Y * cos_theta) + (X * sin_theta)
+ Next
+
+ Dim xmin As Single = corners(0).X
+ Dim ymin As Single = corners(0).Y
+ For i = 1 To 3
+ If xmin > corners(i).X Then xmin = corners(i).X
+ If ymin > corners(i).Y Then ymin = corners(i).Y
+ Next
+ For i = 0 To 3
+ corners(i).X -= xmin
+ corners(i).Y -= ymin
+ Next
+ Dim bm_out As New Bitmap(CInt(-2 * xmin), CInt(-2 * ymin))
+ Dim bgr As Graphics = Graphics.FromImage(bm_out)
+ Dim rg As Region = CreateTransRegion(corners)
+ Dim tp As Point = corners(3)
+ ReDim Preserve corners(2)
+ bgr.DrawImage(bm_in, corners)
+
+ Dim gr_out As Graphics = pe.Graphics
+ gr_out.FillRectangle(New SolidBrush(Me.BackColor), 0, 0, Me.Width,
Me.Height)
+ bm_in.MakeTransparent(_transColor)
+ If _sizemode = PictureBoxSizeMode.StretchImage Then
+ Dim maxW As Integer = tp.X
+ Dim maxH As Integer = tp.Y
+ For t As Integer = 0 To 2
+ If maxW < corners(t).X Then maxW = corners(t).X
+ If maxH < corners(t).Y Then maxH = corners(t).Y
+ Next
+ 'get hscale
+ Dim hscale As Double = Me.Width / maxW
+ 'get vscale
+ Dim vscale As Double = Me.Height / maxH
+ 'convert points
+ corners(0) = New Point(corners(0).X * hscale, corners(0).Y *
vscale)
+ corners(1) = New Point(corners(1).X * hscale, corners(1).Y *
vscale)
+ corners(2) = New Point(corners(2).X * hscale, corners(2).Y *
vscale)
+ gr_out.DrawImage(bm_out, 0, 0, Me.Width, Me.Height)
+ Dim np(3) As Point
+ np(0) = corners(0)
+ np(1) = corners(1)
+ np(2) = corners(2)
+ np(3) = New Point(tp.X * hscale, tp.Y * vscale)
+ rg = CreateTransRegion(np)
+ ElseIf _sizemode = PictureBoxSizeMode.CenterImage Then
+ Dim wadd As Integer = CInt((Me.Width / 2) - (bm_out.Width / 2))
+ Dim hadd As Integer = CInt((Me.Height / 2) - (bm_out.Height / 2))
+ corners(0) = New Point(corners(0).X + wadd, corners(0).Y + hadd)
+ corners(1) = New Point(corners(1).X + wadd, corners(1).Y + hadd)
+ corners(2) = New Point(corners(2).X + wadd, corners(2).Y + hadd)
+ gr_out.DrawImage(bm_in, corners)
+ Dim np(3) As Point
+ np(0) = corners(0)
+ np(1) = corners(1)
+ np(2) = corners(2)
+ np(3) = New Point(tp.X + wadd, tp.Y + hadd)
+ rg = CreateTransRegion(np)
+ Else
+ gr_out.DrawImage(bm_in, corners)
+ End If
+ If _sizemode = PictureBoxSizeMode.AutoSize Then
+ MyBase.Width = bm_out.Width
+ MyBase.Height = bm_out.Height
+ End If
+ Me.Region = Nothing
+ If _showThrough Then
+ Me.Region = rg
+ End If
+ End Sub
+
+ Private Function CreateTransRegion(ByVal points() As Point) As Region
+ Dim m_p(3) As Point
+ m_p(0) = points(0)
+ m_p(1) = points(1)
+ m_p(2) = points(3)
+ m_p(3) = points(2)
+ Dim p_types(3) As Byte
+ For i As Integer = 0 To 3
+ p_types(i) = CByte(PathPointType.Line)
+ Next
+ Dim path As New GraphicsPath(m_p, p_types)
+ Dim p_region As New Region(path)
+ Return p_region
+ End Function
+
+ Public Enum DirectionEnum
+ Counter_Clockwise = -1
+ Clockwise = 1
+ End Enum
+End Class
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches