Page 1 of 1

removing dashed lines

Posted: Wed Aug 23, 2017 12:24 pm
by Scott_Morrow
After setting line options with

qrtPDF_SetLineOptions tDocRef,"round","miter","0,2",1

I can't work out how to go back to using solid lines.

Quartam PDF Lib 1.1.5
LC 8.1.6 business

Scott Morrow

Re: removing dashed lines

Posted: Wed Aug 23, 2017 8:30 pm
by JanSchenkel
Hi Scott,

That's an excellent question, indeed. And it looks like there's no clean way to revert to a solid line without changing the library source.

So here's the quick work-around:

Code: Select all

qrtPDF_SetLineOptions tDocRef, "round", "miter", "1,0", 0
For a better solution, here's how you can patch the library script:
  1. Update command 'p_qrtPDF_AssertDashes' as follows

    Code: Select all

    private command p_qrtPDF_AssertDashes @pDashes
       if pDashes is "solid" then exit p_qrtPDF_AssertDashes
       replace space with empty in pDashes
       repeat for each item tDash in pDashes
          if tDash is not an integer then throw "qrtPDFErr: invalid dashes"
       end repeat
    end p_qrtPDF_AssertDashes
  2. Update command 'qrtPDF_SetLineOptions' as follows

    Code: Select all

    command qrtPDF_SetLineOptions pDocID, pCap, pJoin, pDashes, pPhase
       p_qrtPDF_AssertDocID pDocID
       p_qrtPDF_AssertCap pCap
       p_qrtPDF_AssertJoin pJoin
       p_qrtPDF_AssertDashes pDashes
       if pPhase is empty or pPhase is "solid" then put 0 into pPhase
       p_qrtPDF_AssertNumber "phase", pPhase
       --
       put pCap into sDocumentsA[pDocID][kp_LineCap]
       put pJoin into sDocumentsA[pDocID][kp_LineJoin]
       put pDashes into sDocumentsA[pDocID][kp_LineDashes]
       put pPhase into sDocumentsA[pDocID][kp_LinePhase]
       switch pCap
          case "butt"
             p_qrtPDF_ATB pDocID, "0 J"
             break
          case "join"
             p_qrtPDF_ATB pDocID, "1 J"
             break
          case "square"
             p_qrtPDF_ATB pDocID, "2 J"
             break
       end switch
       switch pJoin
          case "miter"
             p_qrtPDF_ATB pDocID, "0 j"
             break
          case "round"
             p_qrtPDF_ATB pDocID, "1 j"
             break
          case "bevel"
             p_qrtPDF_ATB pDocID, "2 j"
             break
       end switch
       if pDashes is "solid" then
          p_qrtPDF_ATB pDocID, "[] 0 d"
       else if pDashes is not empty then
          local tDashes
          repeat for each item tDash in pDashes
             put format("%2.f", tDash) & space after tDashes
          end repeat
          delete char -1 of tDashes
          p_qrtPDF_ATB pDocID, format("[%s] %2.f d", tDashes, pPhase)
       end if
    end qrtPDF_SetLineOptions
And then you can revert to a solid line with the following command call:

Code: Select all

qrtPDF_SetLineOptions tDocRef, "round", "miter", "solid"
I'll include the "solid" approach in the next revision of the library.

Cheers,

Jan Schenkel.

Re: removing dashed lines

Posted: Wed Aug 23, 2017 9:45 pm
by Scott_Morrow
Hello Jan,

Wonderful! I eventually figured out the workaround but I will implement your patch. Thanks for this amazing library!

Scott Morrow