Matboard Cutting Calculator

You can share your experience with HMG. Share with some screenshots/project details so that others will also be benefited.

Moderator: Rathinagiri

User avatar
esgici
Posts: 4543
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Contact:

Re: Matboard Cutting Calculator

Post by esgici »

kforce wrote: Esgici // I don't know where the "exe" or "prg" is for "hbformat", I would love to use it. (Let me know !)
Hi Kurt

hbformat is a Harbour utility written by one of community guru : Alexender Kresin.

hbformat.exe in Harbour\bin folder in the standart HMG and Harbour installation. And source (*.prg etc) is in Harbour\contrib\hbformat in the Harbour distribution.
I was still working on the 2 functions that were commented out. I have fixed both and will be in the next update
I will wait.
I will come back and ask for "HELP". I am currently packing for a two week photo excursion to capture
"California's version of fall color in the "Eastern Sierra's" so it might be a few weeks before I get to
fix-update the code or check in here at the forum.
We will wait you and wish easiness and success in the your photo affair.

Happy HMG'ing :D
Viva INTERNATIONAL HMG :D
User avatar
kforce
Posts: 16
Joined: Wed Sep 21, 2016 2:00 pm
Location: USA, CA., Santa Clarita
Contact:

Re: Matboard Cutting Calculator

Post by kforce »

Delayed a few days, looks like Friday !
So I coded today

I have up-loaded the new source file, and put up new screen-captures

List of (Improvements / Changes)

Set Navigation Extended (* Rathinagiri)
On Key Escape (Reviewing code samples, a quick exit, I liked it)
Added Menu with {Exit, About, Help, Extra Features} (* Rathinagiri)
Fields marked for better clarity (* Rathinagiri)
Larger and bold buttons (* Rathinagiri)
Auto calculate after mandatory, minimum data received. (* Rathinagiri)
Help File (Just a must have)

* Project drawing made larger and drawing will automatically
switch between portrait and landscape orientation when values warrant.
// Length >0

* Fixed, and included the 2 excluded functions from last version.
(Now 3 options for a report)

// esgici //
I still haven't played with hbformat but thank you for letting me find it.
I really need to document the code, so others know what I am doing. This
will take time, and it is the not fun part.
I would rather play, read, experiment, watch TV, almost anything other
than document my own code.

After my adventure, maybe !!

PS: Is there a way to null/(blank-out) a "NUMERIC TEXTBOX" field. If I reset value
to 0, it show 0, they don't look like when the window first opens. null, blank, empty clean.

Kurt
Last edited by kforce on Tue Sep 27, 2016 10:33 pm, edited 1 time in total.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Matboard Cutting Calculator

Post by Rathinagiri »

Wonderful improvements Kurt.

Thanks for implementing my suggestions.

Here are my suggestions:

I have used EditBox control to show long text to the users. If you use RichEditBox (see samples\controls\richeditbox ), you can include a complete paragraph with proper formating.
I have used HyperLink control for email and web address.
Mandatory fields are marked bold and red.
Added tooltip for the first textbox control.

Hope you like that!

Code: Select all

*******************************************************************************
*
*
*    Kmat - A matboard cutting calculator
*    Copyright (C) 2016, Kurt Ebert
*
*    This program is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the license, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program.  If not, see {<http:*www.gnu.org/licenses/>}
*
*    Web   : www.kurtebertphoto.com/kmat/
*    Email : kurt@kurtebertphoto.com
*
*
*******************************************************************************
*
* Kmat Version 2.70 -- (2016.9.26)
*
*******************************************************************************

#include "hmg.ch"

DECLARE WINDOW kmat_lic
DECLARE WINDOW kmat_help
DECLARE WINDOW kmat_extra


*******************************************************************************


FUNCTION Main()

   Public Kcalc
   Kcalc := 0

   Set Navigation Extended

   DEFINE WINDOW Form_1 AT 50,50 WIDTH 935 HEIGHT 775 NOMAXIMIZE NOSIZE TITLE "Kmat - Matboard Calculator  /  Version 2.70" MAIN
   END WINDOW

   ON KEY ESCAPE OF FORM_1 ACTION Form_1.Release


   DEFINE WINDOW kmat_lic AT 100,100 WIDTH 524 HEIGHT 417 TITLE 'License' NOSHOW NOAUTORELEASE

       DEFINE BUTTON Button_1
       ROW	335
       COL	211
       CAPTION 'Close'
       ACTION	ThisWindow.Hide
       END BUTTON
      cStr := " Kmat -- Matboard Calculator" + HB_OSNEWLINE()
      cStr := cStr + "Copyrite (C) 2016, Kurt Ebert"+ HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "This program is free software: you can redistribute it and/or modify" + HB_OSNEWLINE()
      cStr := cStr + "it under the terms of the GNU General Public License as published by" + HB_OSNEWLINE()
      cStr := cStr + "the Free Software Foundation, version 3 of the license." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "This program is distributed in the hope that it will be useful," + HB_OSNEWLINE()
      cStr := cStr + "but WITHOUT ANY WARRANTY; without even the implied warranty of" + HB_OSNEWLINE()
      cStr := cStr + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See" + HB_OSNEWLINE()
      cStr := cStr + "the GNU General Public License for more details." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "You should have received a copy of the GNU General Public License" + HB_OSNEWLINE()
      cStr := cStr + "along with this program. If not, see {<http://www.gnu.org/licenses/>}" + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Contact Information" + HB_OSNEWLINE()
      cStr := cStr + "" 
      @ 10, 10  editbox e1 width 500 height 270 value cStr readonly
      @ 285, 10 hyperlink ip1 width 300 value "Email: kurt@kurtebertphoto.com" address "kurt@kurtebertphoto.com" handcursor
      @ 315, 10 hyperlink ip2 width 300 value "www.kurtebertphoto.com/kmat" address "http://kurtebertphoto.com/kmat" handcursor

   END WINDOW



   DEFINE WINDOW kmat_help AT 100,100 WIDTH 524 HEIGHT 592 TITLE 'Help' NOSHOW NOAUTORELEASE
 
       DEFINE BUTTON Button_2
       ROW	513
       COL	211
       CAPTION 'Close'
       ACTION	ThisWindow.Hide
       END BUTTON

      cStr := "First 4 fields are mandatory to cut a matboard." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Length is the longer side of the mat or print." + HB_OSNEWLINE()
      cStr := cStr + "Width fields must be <= length." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "For the first 4 fields only: If values are < 50 they," + HB_OSNEWLINE()
      cStr := cStr + "are interpreted as inch (In), else millimeters (mm)." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Mandatory  entry fields are marked Red" + HB_OSNEWLINE()
      cStr := cStr + "Optional   entry fields are followed by (Blank)" + HB_OSNEWLINE()
      cStr := cStr + "Calculated entry fields are followed by '~'" + HB_OSNEWLINE()
      cStr := cStr + "Calculated entry fields are (Read-Only)" + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "From 5th field down, fields require millimeters (mm)." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "If portrait offset is > 0 and width off set is 0," + HB_OSNEWLINE()
      cStr := cStr + "project drawing will switch to portrait rendering, else" + HB_OSNEWLINE()
      cStr := cStr + "rendering will be landscape orientation." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Photo name field has max length of 30" + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Calculated fields are conversion values," + HB_OSNEWLINE()
      cStr := cStr + "recommended offset values, and matboard cutting results." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Matboard cutting results are in millimeters (mm)." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "Cutting values look inverted compared to art-photo project," + HB_OSNEWLINE()
      cStr := cStr + "because you cut and mark from the back of the matboard." + HB_OSNEWLINE()
      cStr := cStr + "Imagine flipping the matboard over. It will look like the project picture." + HB_OSNEWLINE()
      cStr := cStr + "" + HB_OSNEWLINE()
      cStr := cStr + "I have two additional reporting methods as simi-hidden features." + HB_OSNEWLINE()
      cStr := cStr + "See Help --> Extra Features." 
      
      @ 10, 10  editbox e1 width 500 height 500 value cStr readonly

   END WINDOW



    DEFINE WINDOW kmat_extra AT 100,100 WIDTH 575 HEIGHT 384 TITLE 'Extra Features' NOSHOW NOAUTORELEASE
 
       DEFINE BUTTON Button_3
          ROW	305
          COL	222
          CAPTION 'Close'
          ACTION	ThisWindow.Hide
       END BUTTON
       cStr := "I have included two extra features in the program." + HB_OSNEWLINE()
       cStr := cStr + "They are semi-hidden, but fully functional." + HB_OSNEWLINE() + HB_OSNEWLINE()
       cStr := cStr + "The first is launched by the small dot between the Mat-1 and Mat-2 results." + HB_OSNEWLINE()
       cStr := cStr + "A text report called 'kmat.txt', will be generated in the installation folder." + HB_OSNEWLINE() + HB_OSNEWLINE()
       cStr := cStr + "If the program editor 'Akelpad.exe' is in the same folder, it will open Akelpad," + HB_OSNEWLINE()
       cStr := cStr + "with the report. If saving many reports, the files are extremely small." + HB_OSNEWLINE()
       cStr := cStr + "Most text editors if installed in the same directory and renamed to 'Akelpad.exe'"  + HB_OSNEWLINE()
       cStr := cStr + "would launch and open the report. Even if an editor is not present a report" + HB_OSNEWLINE()
       cStr := cStr + "will be generated. If not renamed it will be over-writen, by the next report." + HB_OSNEWLINE() + HB_OSNEWLINE()
       cStr := cStr + "The second is launched by the small dot between the Mat-2 and Mat-3 results" + HB_OSNEWLINE()
       cStr := cStr + "This take a screen-shot of the Kmat window, converts to a PDF, ask for windows" + HB_OSNEWLINE()
       cStr := cStr + "printer, and will let you print or save the screen-shot." + HB_OSNEWLINE()
       cStr := cStr + "It's nice because it shows a picture of the art-photo project, however it has" + HB_OSNEWLINE()
       cStr := cStr + "two downsides. First it uses more ink or toner to print a report, and second" + HB_OSNEWLINE()
       cStr := cStr + "if archiving files they are much larger than the above text report method." 
       
       @ 10, 10 EDITBOX e1 width 550 height 294 value cStr readonly 
          

   END WINDOW



   DEFINE MAIN MENU OF Form_1
      DEFINE POPUP "File" 
         MENUITEM "Exit" ACTION Form_1.Release
      END POPUP 
      DEFINE POPUP "About" 
         MENUITEM "License" ACTION kmat_lic.Show
      END POPUP 
      DEFINE POPUP "Help" 
         MENUITEM "Help" ACTION kmat_help.Show
         MENUITEM "Extra Features" ACTION kmat_extra.Show
      END POPUP 
   END MENU



   @ 32,10 LABEL L1 PARENT Form_1 WIDTH 190 RIGHTALIGN VALUE "Matboard  Width (Inch or mm)" bold fontcolor { 255 , 0, 0 }
   @ 30,210 TEXTBOX V1 PARENT Form_1 WIDTH 60 NUMERIC tooltip 'If < 50 taken as inches else mm'
   @ 62,10 LABEL L2 PARENT Form_1 WIDTH 190 RIGHTALIGN VALUE "Matboard Length (Inch or mm)" bold fontcolor { 255 , 0, 0 }
   @ 60,210 TEXTBOX V2 PARENT Form_1 WIDTH 60 NUMERIC 
   @ 102,10 LABEL L3 PARENT Form_1 WIDTH 190 RIGHTALIGN VALUE "Photo Width    (Inch or mm)" bold fontcolor { 255 , 0, 0 }
   @ 100,210 TEXTBOX V3 PARENT Form_1 WIDTH 60 NUMERIC
   @ 132,10 LABEL L4 PARENT Form_1 WIDTH 190 RIGHTALIGN VALUE "Photo Length   (Inch or mm)" bold fontcolor { 255 , 0, 0 }
   @ 130,210 TEXTBOX V4 PARENT Form_1 WIDTH 60 NUMERIC ON LOSTFOCUS Matcalc()
   @ 172,30 LABEL L5 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE "    Base Mat  Overlap  (mm)"
   @ 170,210 TEXTBOX V5 PARENT Form_1 WIDTH 60 NUMERIC  
   @ 202,30 LABEL L6 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE " Mat1 to Mat2  Setback (mm)"
   @ 200,210 TEXTBOX V6 PARENT Form_1 WIDTH 60 NUMERIC  
   @ 232,30 LABEL L7 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE " Mat2 to Mat3  Setback (mm)"
   @ 230,210 TEXTBOX V7 PARENT Form_1 WIDTH 60 NUMERIC 
   @ 272,30 LABEL L8 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE "Width Offset Landscape (mm)"
   @ 270,210 TEXTBOX V8 PARENT Form_1 WIDTH 60 NUMERIC  
   @ 302,30 LABEL L9 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE "Length Offset Portrait (mm)"
   @ 300,210 TEXTBOX V9 PARENT Form_1 WIDTH 60 NUMERIC 
   @ 482,35 LABEL L10 PARENT Form_1 WIDTH 50 RIGHTALIGN VALUE "Photo:"
   @ 480,90 TEXTBOX V10 PARENT Form_1 WIDTH 180 

   @ 30,355 BUTTON B1 PARENT Form_1 CAPTION "Calculate" WIDTH 100 BOLD ONCLICK Matcalc()
   @ 30,560 BUTTON B3 PARENT Form_1 CAPTION "View : Print" WIDTH 100 BOLD ONCLICK Pdfprt()
   @ 159,844 BUTTON B4 PARENT Form_1 CAPTION "" WIDTH 5 Height 5 NOTABSTOP ONCLICK TxtPrt()
   @ 310,844 BUTTON B5 PARENT Form_1 CAPTION "" WIDTH 5 Height 5 NOTABSTOP ONCLICK Screen_Prt()

   @ 342,30 LABEL L20 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE "Width - Landscape OC  (mm)"
   @ 340,210 TEXTBOX V20 PARENT Form_1 WIDTH 60 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 345,276 Label A5  PARENT Form_1 WIDTH 10 VALUE "~"
   @ 372,30 LABEL L30 PARENT Form_1 WIDTH 170 RIGHTALIGN VALUE "Length - Portrait OC  (mm)"
   @ 370,210 TEXTBOX V30 PARENT Form_1 WIDTH 60 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 375,276 Label A6  PARENT Form_1 WIDTH 10 VALUE "~"
 
   @ 412,30 LABEL L40 PARENT Form_1 WIDTH 100 RIGHTALIGN VALUE "Art-Mat (W:mm)"
   @ 410,145 TEXTBOX V45 PARENT Form_1 WIDTH 55 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 410,215 TEXTBOX V40 PARENT Form_1 WIDTH 55 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 415,276 Label A7  PARENT Form_1 WIDTH 10 VALUE "~"
   @ 442,30 LABEL L50 PARENT Form_1 WIDTH 100 RIGHTALIGN VALUE "Art-Mat (L:mm)"
   @ 440,145 TEXTBOX V55 PARENT Form_1 WIDTH 55 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 440,215 TEXTBOX V50 PARENT Form_1 WIDTH 55 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 445,276 Label A8  PARENT Form_1 WIDTH 10 VALUE "~"
 
   @ 32,750 LABEL L100 PARENT Form_1 WIDTH 70 VALUE  "Mat-1  W1"
   @ 30,820 TEXTBOX V100 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 30,876 Label 1005 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 62,750 LABEL L101 PARENT Form_1 WIDTH 70 VALUE  "Mat-1  W2"
   @ 60,820 TEXTBOX V101 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 60,876 Label 1015 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 92,750 LABEL L102 PARENT Form_1 WIDTH 70 VALUE  "Mat-1  L1"
   @ 90,820 TEXTBOX V102 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 90,876 Label 1025 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 122,750 LABEL L103 PARENT Form_1 WIDTH 70 VALUE "Mat-1  L2"
   @ 120,820 TEXTBOX V103 PARENT Form_1 WIDTH 50NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 120,876 Label 1035 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 182,750 LABEL L104 PARENT Form_1 WIDTH 70 VALUE "Mat-2  W1"
   @ 180,820 TEXTBOX V104 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 180,876 Label 1045 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 212,750 LABEL L105 PARENT Form_1 WIDTH 70 VALUE "Mat-2  W2"
   @ 210,820 TEXTBOX V105 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 210,876 Label 1055 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 242,750 LABEL L106 PARENT Form_1 WIDTH 70 VALUE "Mat-2  L1"
   @ 240,820 TEXTBOX V106 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 240,876 Label 1065 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 272,750 LABEL L107 PARENT Form_1 WIDTH 70 VALUE "Mat-2  L2"
   @ 270,820 TEXTBOX V107 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 270,876 Label 1075 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 332,750 LABEL L108 PARENT Form_1 WIDTH 70 VALUE "Mat-3  W1"
   @ 330,820 TEXTBOX V108 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 330,876 Label 1085 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 362,750 LABEL L109 PARENT Form_1 WIDTH 70 VALUE "Mat-3  W2"
   @ 360,820 TEXTBOX V109 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 360,876 Label 1095 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 392,750 LABEL L110 PARENT Form_1 WIDTH 70 VALUE "Mat-3  L1"
   @ 390,820 TEXTBOX V110 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 390,876 Label 1105 PARENT Form_1 WIDTH 10 VALUE "~"
   @ 422,750 LABEL L111 PARENT Form_1 WIDTH 70 VALUE "Mat-3  L2"
   @ 420,820 TEXTBOX V111 PARENT Form_1 WIDTH 50 NUMERIC RIGHTALIGN NOTABSTOP READONLY
   @ 420,876 Label 1115 PARENT Form_1 WIDTH 10 VALUE "~"

   DRAW RECTANGLE IN WINDOW Form_1 AT 530,380 TO 680,630 PENCOLOR {0,0,0} PENWIDTH 2 
   DRAW LINE IN WINDOW Form_1 AT 550,380 TO 550,630
   DRAW LINE IN WINDOW Form_1 AT 650,380 TO 650,630
   DRAW LINE IN WINDOW Form_1 AT 530,430 TO 680,430
   DRAW LINE IN WINDOW Form_1 AT 530,580 TO 680,580

   @ 505,405 LABEL L201 PARENT Form_1 WIDTH 300 VALUE "    W1 - Mark from top of mat down "
   @ 686,403 LABEL L202 PARENT Form_1 WIDTH 300 VALUE "   W2 - Mark from bottom of mat up"
   @ 586,329 LABEL L203 PARENT Form_1 WIDTH 50 VALUE "L1-Left"
   @ 586,639 LABEL L204 PARENT Form_1 WIDTH 50 VALUE "L2-Right"

   @ 530,730 LABEL L205 PARENT Form_1 WIDTH 200 VALUE "Place matboard with it's"
   @ 545,730 LABEL L206 PARENT Form_1 WIDTH 200 VALUE "  length -- longer side"                
   @ 560,730 LABEL L207 PARENT Form_1 WIDTH 200 VALUE "            Horizontal"  
   @ 590,730 LABEL L209 PARENT Form_1 WIDTH 200 VALUE "      * See Drawing *"
   @ 620,725 LABEL L211 PARENT Form_1 WIDTH 200 VALUE "Measure, mark, draw, cut"
   @ 635,725 LABEL L212 PARENT Form_1 WIDTH 200 VALUE "from the back of matboard"

   @ 530,95 LABEL L215 PARENT Form_1 WIDTH 200 VALUE "Use Width Offset to"
   @ 545,95 LABEL L216 PARENT Form_1 WIDTH 200 VALUE "Optical Center-Bottom Weight"                          
   @ 560,95 LABEL L217 PARENT Form_1 WIDTH 200 VALUE "Landscape Photo Presentation" 
   @ 590,95 LABEL L219 PARENT Form_1 WIDTH 200 VALUE "Use Length Offset to"                            
   @ 605,95 LABEL L220 PARENT Form_1 WIDTH 200 VALUE "Optical Center-Bottom Weight" 
   @ 620,95 LABEL L221 PARENT Form_1 WIDTH 200 VALUE "Portrait Photo Presentation" 
   @ 650,95 LABEL L223 PARENT Form_1 WIDTH 200 VALUE "Suggested Optical Center"
   @ 665,95 LABEL L224 PARENT Form_1 WIDTH 200 VALUE "Values Calculated Only"

   DRAW RECTANGLE IN WINDOW Form_1 AT 85,310 TO 364,702 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {255,255,255}
   DRAW RECTANGLE IN WINDOW Form_1 AT 117,352 TO 312,660 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT 125,360 TO 304,652 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {80,80,80}
   DRAW LINE IN WINDOW Form_1 AT 145,385 TO 284,632 PENCOLOR {255,153,0} PENWIDTH 1
   DRAW LINE IN WINDOW Form_1 AT 284,385 TO 145,632 PENCOLOR {255,153,0} PENWIDTH 1

   ACTIVATE WINDOW Form_1
   RETURN NIL



*******************************************************************************



   FUNCTION Matcalc()
   

   if  Form_1.V1.value>0 .and. Form_1.V2.value>0 .and. Form_1.V3.value>0 .and. Form_1.V4.value>0

   Kcalc := 1

   Public cm, matw, matl, picw, picl, overlap, m12, m23, offw, offl
   Public rabit, matw_I, matl_I, picw_I, picl_I, matwidth, matlength, picwidth, piclength
   Public K1, K2, K3, K4, K5, U1, U2, U3, R1, R2, R3, R4, R5, T1, T2, T3
   Public x, y, x2, y2, vMax, S1, S2, xx2, yy2, xx, yy
   Public W3, W4, W5, W6, W7, W8, L3, L4, L5, L6, L7, L8
   Public yp, xxp, yyp, x2p, y2p, xx2p, yy2p
   Public Kname

   matwidth  := Form_1.V1.value
   matlength := Form_1.V2.value 
   picwidth  := Form_1.V3.value
   piclength := Form_1.V4.value
   overlap   := Form_1.V5.value
   m12       := Form_1.V6.value 
   m23       := Form_1.V7.value
   offw      := Form_1.V8.value
   offl      := Form_1.V9.value
   Kname     := Form_1.V10.value
   cm        := 25.40
   rabit     := 12


   if matwidth < 50 
   matw   := cm*matwidth
   matw_I := matwidth
   else
   matw   := matwidth
   matw_I := round((matwidth/cm),2)
   endif

   if matlength < 50
   matl := cm*matlength
   matl_I := matlength
   else
   matl := matlength
   matl_I := round((matlength/cm),2)
   endif

   if picwidth < 50
   picw   := cm*picwidth
   picw_I := picwidth
   else
   picw   := picwidth
   picw_I := round((picwidth/cm),2)
   endif

   if piclength < 50
   picl := cm*piclength
   picl_I := piclength
   else
   picl := piclength
   picl_I := round((piclength/cm),2)
   endif

   vMax  :=(392/matl)
   x     := 80
   y     := 310
   xx    := x+(matw*vmax)
   yy    := y+(matl*vmax)
 
   yp    := y+(392-(matw*vmax))/2
   xxp   := x+(matl*vmax)
   yyp   := yp+(matw*vmax)

   s1    := ((Matw-Picw)/2)
   s2    := ((Matl-Picl)/2)
 
   x2    := x+(((S1)+(overlap)-(Offw))*vmax)
   y2    := y+(((S2)+(overlap)+(Offl))*vmax)
   xx2   := x+(((s1+picw)-(overlap)-(Offw))*vmax)
   yy2   := y+(((S2+picl)-(overlap)+(Offl))*vmax)

   x2p   := x+(((S2)+(overlap)-(offl))*vmax)
   y2p   := yp+(((S1)+(overlap))*vmax)
   xx2p  := x+(((S2+picl)-(overlap)-(Offl))*vmax)
   yy2p  := yp+(((S1+picw)-(overlap))*vmax)

   K1    := (matw-rabit)+(picw-(2*overlap))
   K2    := (matl-rabit)-(picl-(2*overlap))
   K3    := 4*(matw-rabit)
   K4    := K1*K2
   K5    := K4/K3
   U1    := (matl-rabit)-(picl-(2*overlap))
   U2    := U1/2
   U3    := Round((U2-K5),0)
   R1    := (matl-rabit)+(picl-(2*overlap))
   R2    := (matw-rabit)-(picw-(2*overlap))
   R3    := 4*(matl-rabit) 
   R4    := R1*R2
   R5    := R4/R3
   T1    := (matw-rabit)-(picw-(2*overlap))
   T2    := T1/2
   T3    := round((T2-R5),0)

   W3=(((matw-picw)+2*Overlap)/2)-offw
   W4=(((matw-picw)+2*Overlap)/2)+offw
   L3=(((matl-picl)+2*Overlap)/2)-offl
   L4=(((matl-picl)+2*Overlap)/2)+offl

   if m12 > 0
   W5=W3-m12
   L5=L3-m12
   W6=W4-m12
   L6=L4-m12
   else
   W5=0
   W6=0
   L5=0
   L6=0
   Form_1.V6.value := 0
   endif

   if m23 > 0 .and. m12> 0
   W7=W5-m23
   L7=L5-m23
   W8=W6-m23
   L8=L6-m23
   else
   W7=0
   W8=0
   L7=0
   L8=0
   Form_1.V7.value := 0
   endif

   if m23 > 0 .and. m12 = 0 
   Form_1.V7.value := 0
   endif

   if matw > matl 
   Form_1.V1.value := 0
   endif

   if picw > picl  
   Form_1.V3.value := 0
   endif

   Kname = ltrim(trim(Kname))
   if len(Kname) > 30
   Kname = substr(Kname,1,30)
   endif
   Form_1.V10.value :=  Kname


   Form_1.V20.value  := T3
   Form_1.V30.value  := U3
   Form_1.V40.value  := round(matw,0)
   Form_1.V45.value  := round(picw,0)
   Form_1.V50.value  := round(matl,0)
   Form_1.V55.value  := round(picl,0)
   Form_1.V100.value := round(w3,0)
   Form_1.V101.value := round(w4,0)
   Form_1.V102.value := round(l3,0)
   Form_1.V103.value := round(l4,0)
   Form_1.V104.value := round(w5,0)
   Form_1.V105.value := round(w6,0)
   Form_1.V106.value := round(l5,0)
   Form_1.V107.value := round(l6,0)
   Form_1.V108.value := round(w7,0)
   Form_1.V109.value := round(w8,0)
   Form_1.V110.value := round(l7,0)
   Form_1.V111.value := round(l8,0)



   if W3< 0 .or. W4< 0 .or. W5< 0 .or. W6< 0 .or. W7< 0 .or. W8< 0 .or. L3< 0 .or. L4< 0 .or. L5< 0 .or. L6< 0 .or. L7< 0 .or. L8< 0
   Kcalc := 0

   W3 := 0
   W4 := 0
   W5 := 0
   W6 := 0
   W7 := 0
   W8 := 0
   L3 := 0
   L4 := 0
   L5 := 0
   L6 := 0
   L7 := 0
   L8 := 0

   Form_1.V100.value := round(w3,0)
   Form_1.V101.value := round(w4,0)
   Form_1.V102.value := round(l3,0)
   Form_1.V103.value := round(l4,0)
   Form_1.V104.value := round(w5,0)
   Form_1.V105.value := round(w6,0)
   Form_1.V106.value := round(l5,0)
   Form_1.V107.value := round(l6,0)
   Form_1.V108.value := round(w7,0)
   Form_1.V109.value := round(w8,0)
   Form_1.V110.value := round(l7,0)
   Form_1.V111.value := round(l8,0)

   ERASE WINDOW Form_1
  
   DRAW RECTANGLE IN WINDOW Form_1 AT 530,380 TO 680,630 PENCOLOR {0,0,0} PENWIDTH 2 
   DRAW LINE IN WINDOW Form_1 AT 550,380 TO 550,630
   DRAW LINE IN WINDOW Form_1 AT 650,380 TO 650,630
   DRAW LINE IN WINDOW Form_1 AT 530,430 TO 680,430
   DRAW LINE IN WINDOW Form_1 AT 530,580 TO 680,580

   DRAW RECTANGLE IN WINDOW Form_1 AT 85,310 TO 364,702 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {255,255,255}
   DRAW RECTANGLE IN WINDOW Form_1 AT 117,352 TO 312,660 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT 125,360 TO 304,652 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {80,80,80}
   DRAW LINE IN WINDOW Form_1 AT 145,385 TO 284,632 PENCOLOR {255,153,0} PENWIDTH 1
   DRAW LINE IN WINDOW Form_1 AT 284,385 TO 145,632 PENCOLOR {255,153,0} PENWIDTH 1

   else

   ERASE WINDOW Form_1
  
   DRAW RECTANGLE IN WINDOW Form_1 AT 530,380 TO 680,630 PENCOLOR {0,0,0} PENWIDTH 2 
   DRAW LINE IN WINDOW Form_1 AT 550,380 TO 550,630
   DRAW LINE IN WINDOW Form_1 AT 650,380 TO 650,630
   DRAW LINE IN WINDOW Form_1 AT 530,430 TO 680,430
   DRAW LINE IN WINDOW Form_1 AT 530,580 TO 680,580

   if  matw>0 .and. matl>0 .and. picw>0 .and. picl>0 .and. picw<matw .and. picl<matl .and. picw<=picl .and. matw<=matl

   if offl > 0 .and. offw = 0
   DRAW RECTANGLE IN WINDOW Form_1 AT x,yp TO xxp,yyp PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {255,255,255}
   if m23 > 0 .and. m12> 0
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12+m23)*vmax))-1, (y2p-((m12+m23)*vmax))-1 TO (xx2p+((m12+m23)*vmax))+1, (yy2p+((m12+m23)*vmax))+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12+m23)*vmax)), (y2p-((m12+m23)*vmax)) TO (xx2p+((m12+m23)*vmax)), (yy2p+((m12+m23)*vmax)) PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12+m23)*vmax))+1, (y2p-((m12+m23)*vmax))+1 TO (xx2p+((m12+m23)*vmax))-1, (yy2p+((m12+m23)*vmax))-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {180,180,180}
   endif
   if m12 > 0
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12)*vmax))-1, (y2p-((m12)*vmax))-1 TO (xx2p+((m12)*vmax))+1, (yy2p+((m12)*vmax))+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {210,210,210}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12)*vmax)), (y2p-((m12)*vmax)) TO (xx2p+((m12)*vmax)), (yy2p+((m12)*vmax)) PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {210,210,210}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2p-((m12)*vmax))+1, (y2p-((m12)*vmax))+1 TO (xx2p+((m12)*vmax))-1, (yy2p+((m12)*vmax))-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {210,210,210}
   endif
   DRAW RECTANGLE IN WINDOW Form_1 AT x2p-1,y2p-1 TO xx2p+1,yy2p+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {80,80,80} 
   DRAW RECTANGLE IN WINDOW Form_1 AT x2p,y2p TO xx2p,yy2p PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {80,80,80} 
   DRAW RECTANGLE IN WINDOW Form_1 AT x2p+1,y2p+1 TO xx2p-1,yy2p-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {80,80,80} 
   else
    * Full Mat Size
   DRAW RECTANGLE IN WINDOW Form_1 AT x,y TO xx,yy PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {255,255,255}
    * 3rd Mat
      if m23 > 0 .and. m12> 0
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12+m23)*vmax))-1, (y2-((m12+m23)*vmax))-1 TO (xx2+((m12+m23)*vmax))+1, (yy2+((m12+m23)*vmax))+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12+m23)*vmax)), (y2-((m12+m23)*vmax)) TO (xx2+((m12+m23)*vmax)), (yy2+((m12+m23)*vmax)) PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12+m23)*vmax))+1, (y2-((m12+m23)*vmax))+1 TO (xx2+((m12+m23)*vmax))-1, (yy2+((m12+m23)*vmax))-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {180,180,180}
   endif
    * 2nd Mat 
   if m12 > 0
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12)*vmax))-1, (y2-((m12)*vmax))-1 TO (xx2+((m12)*vmax))+1, (yy2+((m12)*vmax))+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {210,210,210}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12)*vmax)), (y2-((m12)*vmax)) TO (xx2+((m12)*vmax)), (yy2+((m12)*vmax)) PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {210,210,210}
   DRAW RECTANGLE IN WINDOW Form_1 AT (x2-((m12)*vmax))+1, (y2-((m12)*vmax))+1 TO (xx2+((m12)*vmax))-1, (yy2+((m12)*vmax))-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {210,210,210}
   endif 
    * Base - Main Mat
   DRAW RECTANGLE IN WINDOW Form_1 AT x2-1,y2-1 TO xx2+1,yy2+1 PENCOLOR {128,128,128} PENWIDTH 1 FILLCOLOR {80,80,80}
   DRAW RECTANGLE IN WINDOW Form_1 AT x2,y2 TO xx2,yy2 PENCOLOR {255,255,255} PENWIDTH 1 FILLCOLOR {80,80,80}
   DRAW RECTANGLE IN WINDOW Form_1 AT x2+1,y2+1 TO xx2-1,yy2-1 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {80,80,80}
   endif

   else

   Kcalc  := 0
   matw   := 0
   matl   := 0
   picw   := 0
   picl   := 0
   matw_I := 0
   matl_I := 0 

   W3 := 0
   W4 := 0
   W5 := 0
   W6 := 0
   W7 := 0
   W8 := 0
   L3 := 0
   L4 := 0
   L5 := 0
   L6 := 0
   L7 := 0
   L8 := 0

   ERASE WINDOW Form_1
  
   DRAW RECTANGLE IN WINDOW Form_1 AT 530,380 TO 680,630 PENCOLOR {0,0,0} PENWIDTH 2 
   DRAW LINE IN WINDOW Form_1 AT 550,380 TO 550,630
   DRAW LINE IN WINDOW Form_1 AT 650,380 TO 650,630
   DRAW LINE IN WINDOW Form_1 AT 530,430 TO 680,430
   DRAW LINE IN WINDOW Form_1 AT 530,580 TO 680,580

   DRAW RECTANGLE IN WINDOW Form_1 AT 85,310 TO 364,702 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {255,255,255}
   DRAW RECTANGLE IN WINDOW Form_1 AT 117,352 TO 312,660 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {180,180,180}
   DRAW RECTANGLE IN WINDOW Form_1 AT 125,360 TO 304,652 PENCOLOR {0,0,0} PENWIDTH 1 FILLCOLOR {80,80,80}
   DRAW LINE IN WINDOW Form_1 AT 145,385 TO 284,632 PENCOLOR {255,153,0} PENWIDTH 1
   DRAW LINE IN WINDOW Form_1 AT 284,385 TO 145,632 PENCOLOR {255,153,0} PENWIDTH 1

   endif
   endif
   endif 

   RETURN NIL


 ************************************************************************************************

   FUNCTION Screen_prt()
   *
   *  PRINTWINDOW ( cWindowName , lPreview , ldialog , nRow , nCol , nWidth , nHeight ) ***
   *  SAVEWINDOW  ( cWindowName , cFileName , nRow , nCol , nWidth , nHeight )          ***
   *
   if Kcalc > 0 
   * SAVEWINDOW ("Form_1", "Kmat.bmp")
   PRINTWINDOW ("Form_1", .t., .t.)
   endif
   RETURN NIL



 ************************************************************************************************



   FUNCTION Txtprt()
   local padx
   padx := 7
   *
   if Kcalc > 0
   set alternate to "Kmat.txt"
   set alternate on
   ?
   ?
   if len(ltrim(trim(Kname))) > 0
      pady := (75-len(ltrim(trim(Kname))))/2
   ? space(pady), ltrim(trim(Kname))
   else
   ?
   endif
   ? space(5), "_____________________________________________________________"
   ?
   ? space(10),  "  Matboard Width (inch/mm) :", space(1), alltrim(str(matw_I)),space(padx-len (alltrim(str(matw_I)))), alltrim(str(round(matw,0)))
   ? space(10),  " Matboard Length (inch/mm) :", space(1), alltrim(str(matl_I)),space(padx-len (alltrim(str(matl_I)))), alltrim(str(round(matl,0)))
   ?  
   ? space(10),  " Art-Photo Width (inch/mm) :", space(1), alltrim(str(picw_I)),space(padx-len (alltrim(str(picw_I)))), alltrim(str( round(picw,0)))
   ? space(10),  "Art-Photo Length (inch/mm) :", space(1), alltrim(str(picl_I)),space(padx-len (alltrim(str(picl_I)))), alltrim(str( round(picl,0)))
   ?
   ? space(10),  "     Base Mat Overlap (mm) :", space(1), alltrim(str(overlap)) 
   *
   if m12 <> 0 
   ? space(10),  " Mat1 to Mat2 Setback (mm) :", space(1), alltrim(str(m12)) 
   else
   ? space(10),  " Mat1 to Mat2 Setback (mm) :", space(1),""
   endif  
   *
   if m23 <> 0   
   ? space(10),  " Mat2 to Mat2 Setback (mm) :", space(1), alltrim(str(m23))      
   else
   ? space(10),  " Mat2 to Mat2 Setback (mm) :", space(1), ""
   endif
   ?
   if offw <> 0
   ? space(10),  "  Photo Width Offset  (mm) :", space(1), alltrim(str(offw))
   else
   ? space(10),  "  Photo Width Offset  (mm) :", space(1), ""
   endif
   if offl <> 0    
   ? space(10),  "  Photo Length Offset (mm) :", space(1), alltrim(str(offl))     
   else
   ? space(10),  "  Photo Length Offset (mm) :", space(1), ""
   endif
   ? 
   ? space(10),  "  Photo Width Optical Cntr :", space(1),  alltrim(str(t3)) 
   ? space(10),  " Photo Length Optical Cntr :", space(1),  alltrim(str(u3)) 
   ? space(5), "_____________________________________________________________"
   ?
   ? space(29),  "Mat1 W1 :", space(1), ltrim(str(round(w3,0))) 
   ? space(29),  "Mat1 W2 :", space(1), ltrim(str(round(w4,0)))
   ? space(29),  "Mat1 L1 :", space(1), ltrim(str(round(l3,0)))
   ? space(29),  "Mat1 L2 :", space(1), ltrim(str(round(l4,0)))
   *
   if w5>0 .and. w6>0 .and. l5>0 .and. l6>0
   ?
   ? space(29), "Mat2 W1 :", space(1), ltrim(str(round(w5,0)))
   ? space(29), "Mat2 W2 :", space(1), ltrim(str(round(w6,0)))
   ? space(29), "Mat2 L1 :", space(1), ltrim(str(round(l5,0)))
   ? space(29), "Mat2 L2 :", space(1), ltrim(str(round(l6,0)))
   endif
   *
   if w7>0 .and. w8>0 .and. l7>0 .and. l8>0
   ?
   ? space(29), "Mat3 W1 :", space(1), ltrim(str(round(w7,0)))
   ? space(29), "Mat3 W2 :", space(1), ltrim(str(round(w8,0)))
   ? space(29), "Mat3 L1 :", space(1), ltrim(str(round(l7,0)))
   ? space(29), "Mat3 L2 :", space(1), ltrim(str(round(l8,0)))
   endif
   *
   ? space(5), "_____________________________________________________________"
   ?
   ?
   ?
   set alternate off
   set alternate to
   if file ("AkelPad.Exe")
   Execute file "AkelPad.exe" Parameters "Kmat.txt"
   endif
   endif
   RETURN NIL



************************************************************************************************
 

   
   FUNCTION PdfPrt()
   if Kcalc > 0
    SELECT PRINTER DEFAULT TO PdfRpt PREVIEW
     If PdfRpt
      START PRINTDOC 
       START PRINTPAGE 
         @ 23,108 Print ltrim(trim(Kname)) Center Font "Lucenda Console" Size 11
         @ 25,108 Print "____________________________________________________________" Center Font "Lucenda Console" Size 11
         *  
         @ 33,103 Print "Matboard  Width -- (In, mm)" Font "Lucenda Console" Size 11 Right
         @ 33,108 print ":" Font "Lucenda Console" Size 11
         @ 33,123 Print alltrim(str(matw_I)) Font "Lucenda Console" Size 11 Right 
         @ 33,143 Print alltrim(str(round(matw,0))) Font "Lucenda Console" Size 11 Right
         @ 38,103 Print "Matboard  Length -- (In, mm)" Font "Lucenda Console" Size 11 Right
         @ 38,108 print ":" Font "Lucenda Console" Size 11
         @ 38,123 Print alltrim(str(matl_I)) Font "Lucenda Console" Size 11 Right 
         @ 38,143 Print alltrim(str(round(matl,0))) Font "Lucenda Console" Size 11 right 
         * 
         @ 46,103 Print "Art-Photo  Width -- (In, mm)" Font "Lucenda Console" Size 11 Right
         @ 46,108 print ":" Font "Lucenda Console" Size 11
         @ 46,123 Print alltrim(str(picw_I)) Font "Lucenda Console" Size 11 Right 
         @ 46,143 Print alltrim(str(round(picw,0))) Font "Lucenda Console" Size 11 Right 
         @ 51,103 Print "Art-Photo  Length -- (In, mm)" Font "Lucenda Console" Size 11 Right
         @ 51,108 print ":" Font "Lucenda Console" Size 11
         @ 51,123 print alltrim(str(picl_I)) Font "Lucenda Console" Size 11 Right 
         @ 51,143 Print alltrim(str(round(picl,0))) Font "Lucenda Console" Size 11 Right
         *
         @ 59,103 Print "Base Mat  Overlap -- (mm)" Font "Lucenda Console" Size 11 Right
         @ 59,108 print ":" Font "Lucenda Console" Size 11
         @ 59,123 Print alltrim(str(overlap)) Font "Lucenda Console" Size 11  Right
         *
         @ 64,103 Print "Mat1 to Mat2 Setback - (mm)" Font "Lucenda Console" Size 11 Right
         @ 64,108 print ":" Font "Lucenda Console" Size 11
         if m12 <> 0
         @ 64,123 Print alltrim(str(m12)) Font "Lucenda Console" Size 11  Right
         else
         @ 64,123 Print "" Font "Lucenda Console" Size 11 Right
         endif 
         @ 69,103 Print "Mat2 to Mat3 Setback - (mm)" Font "Lucenda Console" Size 11 Right
         @ 69,108 print ":" Font "Lucenda Console" Size 11
         if m23 <> 0
         @ 69,123 Print alltrim(str(m23)) Font "Lucenda Console" Size 11 Right
         else
         @ 69,123 Print "" Font "Lucenda Console" Size 11 Right
         endif
         @ 77,103 Print "Photo Width  Offset -- (mm)" Font "Lucenda Console" Size 11 Right 
         @ 77,108 print ":" Font "Lucenda Console" Size 11
         if offw <> 0
         @ 77,123 Print alltrim(str(offw)) Font "Lucenda Console" Size 11 Right 
         else
         @ 77,123 Print "" Font "Lucenda Console" Size 11  Right
         endif
         @ 82,103 Print "Photo Length  Offset -- (mm)" Font "Lucenda Console" Size 11 Right
         @ 82,108 print ":" Font "Lucenda Console" Size 11
         if offl <> 0
         @ 82,123 Print alltrim(str(offl)) Font "Lucenda Console" Size 11 Right
         else
         @ 82,123 Print "" Font "Lucenda Console" Size 11 Right
         endif
         @ 90,103 Print "Photo Width  Optical Center" Font "Lucenda Console" Size 11 Right
         @ 90,108 print ":" Font "Lucenda Console" Size 11
         @ 90,123 Print alltrim(str(t3)) Font "Lucenda Console" Size 11 Right      
         @ 95,103 Print "Photo Length Optical Center" Font "Lucenda Console" Size 11 Right
         @ 95,108 print ":" Font "Lucenda Console" Size 11
         @ 95,123 Print alltrim(str(u3)) Font "Lucenda Console" Size 11 Right
         @ 99,108 Print "____________________________________________________________" Center Font "Lucenda Console" Size 11
         *
         @110,103 Print "Mat.1 -- W.1" Font "Lucenda Console" Size 11 Right
         @110,108 print ":" Font "Lucenda Console" Size 11
         @110,123 Print alltrim(str(round(w3,0))) Font "Lucenda Console" Size 11 Right
         @115,103 Print "Mat.1 -- W.2" Font "Lucenda Console" Size 11 Right
         @115,108 print ":" Font "Lucenda Console" Size 11
         @115,123 Print alltrim(str(round(w4,0))) Font "Lucenda Console" Size 11 Right
         @120,103 Print "Mat.1 --- L.1" Font "Lucenda Console" Size 11 Right
         @120,108 print ":" Font "Lucenda Console" Size 11
         @120,123 Print alltrim(str(round(l3,0))) Font "Lucenda Console" Size 11 Right
         @125,103 Print "Mat.1 --- L.2" Font "Lucenda Console" Size 11 Right
         @125,108 print ":" Font "Lucenda Console" Size 11
         @125,123 Print alltrim(str(round(l4,0))) Font "Lucenda Console" Size 11 Right
         *
         if w5>0 .and. w6>0 .and. l5>0 .and. l6>0
         @135,103 Print "Mat.2 -- W.1" Font "Lucenda Console" Size 11 Right
         @135,108 print ":" Font "Lucenda Console" Size 11
         @135,123 Print alltrim(str(round(w5,0))) Font "Lucenda Console" Size 11 Right
         @140,103 Print "Mat.2 -- W.2" Font "Lucenda Console" Size 11 Right
         @140,108 print ":" Font "Lucenda Console" Size 11
         @140,123 Print alltrim(str(round(w6,0))) Font "Lucenda Console" Size 11 Right
         @145,103 Print "Mat.2 --- L.1" Font "Lucenda Console" Size 11 Right
         @145,108 print ":" Font "Lucenda Console" Size 11
         @145,123 Print alltrim(str(round(l5,0))) Font "Lucenda Console" Size 11 Right
         @150,103 Print "Mat.2 --- L.2" Font "Lucenda Console" Size 11 Right
         @150,108 print ":" Font "Lucenda Console" Size 11
         @150,123 Print alltrim(str(round(l6,0))) Font "Lucenda Console" Size 11 Right
         Endif
         * 
         if w7>0 .and. w8>0 .and. l7>0 .and. l8>0 
         @160,103 Print "Mat.3 -- W.1" Font "Lucenda Console" Size 11 Right
         @160,108 print ":" Font "Lucenda Console" Size 11
         @160,123 Print alltrim(str(round(w7,0))) Font "Lucenda Console" Size 11 Right
         @165,103 Print "Mat.3 -- W.2" Font "Lucenda Console" Size 11 Right
         @165,108 print ":" Font "Lucenda Console" Size 11
         @165,123 Print alltrim(str(round(w8,0))) Font "Lucenda Console" Size 11 Right
         @170,103 Print "Mat.3 --- L.1" Font "Lucenda Console" Size 11 Right
         @170,108 print ":" Font "Lucenda Console" Size 11
         @170,123 Print alltrim(str(round(l7,0))) Font "Lucenda Console" Size 11 Right
         @175,103 Print "Mat.3 --- L.2" Font "Lucenda Console" Size 11 Right
         @175,108 print ":" Font "Lucenda Console" Size 11
         @175,123 Print alltrim(str(round(l8,0))) Font "Lucenda Console" Size 11 Right
         Endif 
     END PRINTPAGE             
   END PRINTDOC
  Endif
 Endif 
RETURN NIL 

************************************************************************************************
* End
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
kforce
Posts: 16
Joined: Wed Sep 21, 2016 2:00 pm
Location: USA, CA., Santa Clarita
Contact:

Re: Matboard Cutting Calculator

Post by kforce »

Uploaded new version with small changes.
Added HyperLink for email and web. (This was an improvement)
Mandatory fields are now bold but not red. (I like the way it looks now)
Changed the trigger value for switching between landscape and portrait mode.
It flips to portrait when ever the port-offset is > 0, (a small change but better)
This made it necessary to update some of the math functions, so don't just change
the "IF statement" in the last version of code !!.
Now version (2.72)
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Matboard Cutting Calculator

Post by Rathinagiri »

That is so nice.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
esgici
Posts: 4543
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Contact:

Re: Matboard Cutting Calculator

Post by esgici »

kforce wrote:Uploaded new version with small changes.
...
Hi Kurt, where is it ?

If you changed your first upload by new one, IMO this isn't a good way. More, essentially modifying sent posts has many drawback.

( Don't worry about capacity of forum )

Please don't alter your old posts for any reason unless you have a compulsory one; and if occurred please notify this to people ( if they are really your friends ;) ).


Happy HMG'ing :D
Viva INTERNATIONAL HMG :D
User avatar
kforce
Posts: 16
Joined: Wed Sep 21, 2016 2:00 pm
Location: USA, CA., Santa Clarita
Contact:

Re: Matboard Cutting Calculator

Post by kforce »

Yes I updated the code on the first forum entry and noted the date and version number change.
I also added a link to the updated screen-shots.
Removed the old screen-capture and code, to save space.
*
The rules here are 180, from another forum where they want the first entry to be up
to date and not use any extra storage space
*
New version as of yesterday -- ( 2.72 )
Kmat_Source.zip
(19.41 KiB) Downloaded 309 times
Kurt
User avatar
esgici
Posts: 4543
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Contact:

Re: Matboard Cutting Calculator

Post by esgici »

kforce wrote:Yes I updated the code on the first forum entry and noted the date and version number change.
I also added a link to the updated screen-shots.
Removed the old screen-capture and code, to save space.
*
The rules here are 180, from another forum where they want the first entry to be up
to date and not use any extra storage space
*
New version as of yesterday -- ( 2.72 )
Kmat_Source.zip

Kurt
Thanks

No rule, but tradition and friendly approach ( with some exceptions ;) ).

Don't worry about forum storage space. Our boss ( owner of forum ) is too generous and forum management software is smart: AFAIK seasoned items (especially images and executable files) will be removed when new space required.

Happy HMG'ing :D
Viva INTERNATIONAL HMG :D
User avatar
kforce
Posts: 16
Joined: Wed Sep 21, 2016 2:00 pm
Location: USA, CA., Santa Clarita
Contact:

Re: Matboard Cutting Calculator

Post by kforce »

New Version 2.80 / 10.26.16
Kmat_280_Source.zip
(1.09 MiB) Downloaded 293 times
Added photographs in the art-work area for better visual sensation.
From user feedback added an auto orientation override button.
I also figure that some will prefer not to see photos, so I have a button to
temporarily hide photo or if you do not like seeing pictures at all.
You can rename one photo or remove them. Program will run just like
the last version prior to adding pictures.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Matboard Cutting Calculator

Post by Rathinagiri »

Thank you for the new version. I would go through.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
Post Reply