CREATE CURSOR hwfFields (fieldName varchar(32), x0 int, y0 int, x1 int, y1 int)
INSERT INTO hwfFields VALUES ("Date", 214, 74, 316, 101)
INSERT INTO hwfFields VALUES ("701", 98, 190, 149, 218)
INSERT INTO hwfFields VALUES ("46002", 481, 372, 566, 399)
INSERT INTO hwfFields VALUES ("Observations", 30, 567, 616, 804)
LOCAL hlf AS Highlighter
m.hlf = CREATEOBJECT("Highlighter")
m.hlf.Show()
READ EVENTS
DEFINE CLASS Highlighter AS form
Height = 568
Width = 618
hwfWidth = 0
hwfHeight = 0
hwfLeftMargin = 0
hwfTopMargin = 0
hwfXYRatio = 1
ADD OBJECT handwrittenForm AS image WITH ;
Stretch = 1, ;
BorderStyle = 1, ;
Anchor = 15, ;
Height = 528, ;
Left = 24, ;
Top = 20, ;
Width = 428
ADD OBJECT highlighter AS shape WITH ;
DrawMode = 9, ;
FillStyle = 0, ;
Visible = .F., ;
FillColor = RGB(255,255,128)
ADD OBJECT fieldHighlightning AS comboBox WITH ;
RowSourceType = 2, ;
RowSource = "hwfFields", ;
Style = 2, ;
Anchor = 8, ;
Height = 24, ;
Left = 464, ;
Top = 68, ;
Width = 144
PROCEDURE Destroy
CLEAR EVENTS
ENDPROC
PROCEDURE Resize
This.fieldHighlightning.InteractiveChange()
ENDPROC
PROCEDURE Ratios ()
LOCAL Ratio AS Number, XRatio AS Number, YRatio AS Number
This.hwfXYRatio = MIN(This.handwrittenForm.Width / This.hwfWidth, This.handwrittenForm.Height / This.hwfHeight)
IF This.handwrittenForm.Width > (This.hwfWidth * This.hwfXYRatio)
This.hwfLeftMargin = (This.handwrittenForm.Width - This.hwfWidth * This.hwfXYRatio) / 2
ELSE
This.hwfLeftMargin = 0
ENDIF
IF This.handwrittenForm.Height > (This.hwfHeight* This.hwfXYRatio)
This.hwfTopMargin = (This.handwrittenForm.Height - This.hwfHeight * This.hwfXYRatio) / 2
ELSE
This.hwfTopMargin = 0
ENDIF
ENDPROC
PROCEDURE handwrittenForm.Init
LOCAL HTTP AS WinHttp.WinHttpRequest
m.HTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
m.HTTP.Open("Get", "https://www.nist.gov/sites/default/files/images/2019/04/27/sd19.jpg", .F.)
m.HTTP.Send()
This.PictureVal = m.HTTP.Responsebody
LOCAL original AS Image
m.original = CREATEOBJECT("image")
m.original.PictureVal = This.PictureVal
Thisform.hwfWidth = m.original.Width
Thisform.hwfHeight = m.original.Height
Thisform.hwfLeftMargin = 0
Thisform.hwfTopMargin = 0
ENDPROC
PROCEDURE fieldHighlightning.Init
This.ListIndex = 1
This.InteractiveChange()
ENDPROC
PROCEDURE fieldHighlightning.InteractiveChange
SELECT hwfFields
GO (This.ListIndex)
Thisform.Ratios()
WITH Thisform.highlighter AS Shape
.Visible = .F.
.Left = Thisform.handwrittenForm.Left + hwfFields.x0 * Thisform.hwfXYRatio
.Top = Thisform.handwrittenForm.Top + hwfFields.y0 * Thisform.hwfXYRatio
.Width = (Thisform.handwrittenForm.Left + hwfFields.x1 * Thisform.hwfXYRatio) - .Left
.Height = (Thisform.handwrittenForm.Top + hwfFields.y1 * Thisform.hwfXYRatio) - .Top
.Left = .Left + Thisform.hwfLeftMargin
.Top = .Top + Thisform.hwfTopMargin
.Visible = .T.
ENDWITH
ENDPROC
ENDDEFINE