drawing a Barcode without a Barcode font
Matthias Rebbe
matthias_livecode_150811 at m-r-d.de
Fri Jul 20 05:24:49 EDT 2018
Mike
you´re awesome. That is already an almost complete solution to my question. Never had expected that. Thank you very much.
I´ve made some little changes. One among of them is:
To have all the separate bars of the barcode in a group, i changed the lines where the grc is cloned
to for example copy grc “narrowB” to grp “barcode2of5”
Here´s now my code to convert the nNnNN…. string to Barcode
local tLast
on mouseup
if there is a grp "barcode2of5" then delete grp "barcode2of5"
-- now change the width of the template graphics
put "2" into tNarrow
put "4" into tWide
set the width of grc "narrowC" to tNarrow
set the width of grc "narrowB" to tNarrow
set the width of grc "wideC" to tWide
set the width of grc "wideB" to tWide
put "0" into tHorAdjust -- allows to put a gap beween the separate bars.
put "60,286" into tBarTopLeft -- defines where the first bar is placed
put empty into tLast
put fld "2of5" into tChars -- the field with your wNnnW string
set the casesensitive to true -- to differentiate case of course
create grp "barcode2of5"
repeat for each char tChar in tChars
switch tChar
case "N"
-- checks the char, and clones the matching bar.
--if its the first time through, places it at astart location
-- then uses the id of the most recent bar forplacement purposes
--clone grc "narrowB"
copy grc "narrowB" to grp "barcode2of5"
if tLast is empty then
set the topleft of the last grc to tBarTopLeft
else
set the topleft of the last grc to horAdjust(tHorAdjust)
end if
break
case "n"
--clone grc "narrowC"
copy grc "narrowC" to grp "barcode2of5"
if tLast is empty then
set the topleft of the last grc to tBarTopLeft
else
set the topleft of the last grc to horAdjust(tHorAdjust)
end if
break
case "W"
--clone grc "wideB"
copy grc "wideB" to grp "barcode2of5"
if tLast is empty then
set the topleft of the last grc to tBarTopLeft
else
set the topleft of the last grc to horAdjust(tHorAdjust)
end if
break
case "w"
--clone grc "widec"
copy grc "widec" to grp "barcode2of5"
if tLast is empty then
set the topleft of the last grc to tBarTopLeft
else
set the topleft of the last grc to horAdjust(tHorAdjust)
end if
break
end switch
put the short id of the last grc into tLast -- the id of the most recently placed bar
end repeat
set the height of grp "barcode2of5" to 69
set the width of grp "barcode2of5" to 360
end mouseup
--This function allows a horizontal adjustment of the single bars.
function horAdjust tHorAdjust
put the topright of grc id tLast into tTMP
set the itemdelimiter to ","
add tHorAdjust to item 1 of tTMP
return tTMP
end horAdjust
Again, thank you very much for your help.
Regards,
Matthias
> Am 20.07.2018 um 01:01 schrieb Mike Bonner via use-livecode <use-livecode at lists.runrev.com>:
>
> Not sure if it will work for your purpose, but as a test I created for
> graphic lines, 1 narrow black, 1 wider black, duplicated them and set the
> blendlevel of the copies so that they're transparent.
>
> Grcs are named narrowB, wideB, narrowC and wideC (b for black, c for clear)
>
> Then used the following code (and your example string from above with the
> WWnNw stuff) to generate a barcode.
>
> on mouseup
> put empty into tLast
> put field 1 into tChars -- the field with your wNnnW string
> set the casesensitive to true -- to differentiate case of course
> repeat for each char tChar in tChars
> switch tChar
> case "N" -- checks the char, and clones the matching bar.
> --if its the first time through, places it at a
> start location
> -- then uses the id of the most recent bar for
> placement purposes
> clone grc "narrowB"
> if tLast is empty then
> set the topleft of the last grc to 10,50
> else
> set the topleft of the last grc to the topright of grc id
> tLast
> end if
> break
> case "n"
> clone grc "narrowC"
> if tLast is empty then
> set the topleft of the last grc to 10,50
> else
> set the topleft of the last grc to the topright of grc id
> tLast
> end if
> break
> case "W"
> clone grc "wideB"
> if tLast is empty then
> set the topleft of the last grc to 10,50
> else
> set the topleft of the last grc to the topright of grc id
> tLast
> end if
> break
> case "w"
> clone grc "widec"
> if tLast is empty then
> set the topleft of the last grc to 10,50
> else
> set the topleft of the last grc to the topright of grc id
> tLast
> end if
> break
>
> end switch
> put the short id of the last grc into tLast -- the id of the most
> recently placed bar
> end repeat
> end mouseup
>
> Spacing and line size might need to be tweaked, but it seems like this
> would be relatively straight forward.
>
> On Thu, Jul 19, 2018 at 4:30 PM Bob Sneidar via use-livecode <
> use-livecode at lists.runrev.com> wrote:
>
>> I think the trick will be drawing large graphics one at a time and
>> properly spaced at several times their finished size, perhaps off screen,
>> then getting a snapshot of the result and scaling it down. Not sure how
>> picky the readers will be.
>>
>> Bob S
>>
>>
>>> On Jul 19, 2018, at 15:06 , Matthias Rebbe via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>>
>>> Currently i am using a special 2of5i barcode font. The font .has only
>> four characters (bars) in its set.
>>> The code displays a
>>> narrow space (blank) bar when the character is n
>>> narrow black bar when N
>>> wide space when w
>>> wide black bar when W
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list