[JW Lua] Reading the FontInfo from FCShapeDef - solved
Jan Angermüller
jan at angermueller.com
Wed May 6 10:02:14 CEST 2015
Charles,
thank you very much ! I didn't know the function FCFontInfo:GetNameByID.
That was the missing link :-)
Jan
Am 06.05.2015 um 07:58 schrieb Chris:
> Jan
>
> I realized this script to merge 2 shapes(Missing tags)
> Maybe here can help.
>
>
> --------------------------------------------------------------
> local ind1 = finenv.UI():DisplayShapeDialog(1) -- shape à copier
> if ind1 == 0 then return end
> local ind2 = finenv.UI():DisplayShapeDialog(1) -- shape destination
> if ind2 == 0 then return end
>
> local sd1 = finale.FCShapeDef()
> local sd2 = finale.FCShapeDef()
>
> function parasInstruction(ins)
> -- retourne tous les paras de l'instruction dans une table
> local paras = {}
>
> for ind = 0, ins.Count - 1 do
> local bytes = ins:GetFourbyteData(ind)
> table.insert(paras,bytes)
> end
>
> return paras
> end
>
> function copie(instructions,tag,paras)
> -- ajoute l'instruction (tag) avec ses paras dans "instructions"
>
> if tag == 29551 then -- startobject
> local origin =finale.FCPoint(paras[1],paras[2])
> local lefttop =finale.FCPoint(paras[3],paras[4])
> local rightbottom =finale.FCPoint(paras[5],paras[6])
> instructions:AddStartObject(origin,lefttop,rightbottom,paras[7],paras[8],paras[9])
>
> elseif tag == 29554 then -- startgroup
> local origin =finale.FCPoint(paras[1],paras[2])
> local lefttop =finale.FCPoint(paras[3],paras[4])
> local rightbottom =finale.FCPoint(paras[5],paras[6])
> instructions:AddStartGroup(origin,lefttop,rightbottom,paras[7],paras[8],paras[9])
>
> elseif tag == 25970 then -- endgroup
> instructions:AddEndGroup()
> elseif tag == 27767 then -- linewidth
> instructions:AddLineWidth(paras[1])
> elseif tag == 29543 then -- setgrey
> instructions:AddSetGrey(paras[1])
> elseif tag == 26227 then -- fillsolid
> instructions:AddFillSolid()
> elseif tag == 25456 then -- closepath
> instructions:AddClosePath()
> elseif tag == 25964 then -- ellipse
> instructions:AddEllipse(paras[1],paras[2])
> elseif tag == 29285 then -- rectangle
> instructions:AddRectangle(paras[1],paras[2])
> elseif tag == 25462 then -- curveto
> instructions:AddCurveTo(paras[1])
> elseif tag == 29548 then -- slur
> instructions:AddSlur(paras[1])
> elseif tag == 29556 then -- stroke
> instructions:AddStroke()
> elseif tag == 29540 then -- setdash
> instructions:AddSetDash(paras[1],paras[2])
> elseif tag == 29292 then -- rlineto
> instructions:AddRLineTo(paras[1],paras[2])
> elseif tag == 25202 then -- bracket
> instructions:AddBracket(paras[1])
> elseif tag == 29293 then -- rmoveto
> instructions:AddRMoveTo(paras[1],paras[2])
> elseif tag == 29542 then -- setfont
> local fontinfo = finale.FCFontInfo()
> fontinfo:SetNameByID(paras[1])
> fontinfo.Size = paras[2]
> fontinfo.EnigmaStyles = paras[3]
> instructions:AddSetFont(fontinfo)
> elseif tag == 25699 then -- drawchar
> instructions:AddDrawChar(paras[1])
> elseif tag == 0 then -- Null
> instructions:AddNull()
> else
> print("tag non défini",tag)
> end
> end
>
>
> -- ********* DEBUT DU PROGRAMME ****************
> if sd1:Load(ind1) and sd2:Load(ind2) then
> local instructions1 = sd1:CreateInstructions()
> local instructions2 = sd2:CreateInstructions()
>
> -- créer une nouvelle shape
> local sdNew = finale.FCShapeDef()
> local newInstructions = sdNew:CreateInstructions()
>
> -- copier la 1° (sauf la dernière : Null)
> for ins in each(instructions1) do
> if ins.Tag ~= 0 then -- Null
> copie(newInstructions,ins.Tag,parasInstruction(ins))
> end
> end
>
> -- copier la 2°
> for ins in each(instructions2) do
> copie(newInstructions,ins.Tag,parasInstruction(ins))
> end
>
> -- sauvegarder la nouvelle shape
> sdNew:RebuildInstructions(newInstructions)
> sdNew:SaveNew()
> end
>
> ------------------------------------------------------------------------
>
>
>
> Best regards
>
>
> Chris
>
> _______________________________________________
> JWLua mailing list
> JWLua at jwmusic.nu
> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
--
Jan Angermüller
Jevenstedter Str. 80
22547 Hamburg
Tel. 040 - 28 94 84 82
www.angermueller.com
More information about the JWLua
mailing list