LAF ScriptSlider?
-
@ulrik Thank You
But I Mean, How The LAF Knobs Can Act In Pan Scenarios.
The One You Posted Above Goes From Left To Right.
Have You Made Any Left To Center, Center To Right Knobs?
Like This One:
-
@Natan Ok, no I have not tried to make that kind of Pan Knob, I guess you have to use 2 arcs and separate Pan from other LAF Knobs that use only 1 arc.
at the moment the property "mode" is not available as I can see @ustk ?
I think I would write "pan" as the suffix in the pan knobs, and use the
if (obj.suffix == "pan")
to separate them from other knobs, you could try it.
-
@ulrik Ok I tried, no need for 2 arcs in this one, however this lacks knob pointer
This will work as a regular Slider, for it to work as a pan slider you have to set the text and mode property to "Pan"
HiseSnippet 1438.3ocuWstaaaCEVJIpawaYHEXO.b9WNsNNxdMcCHKa14hKLZRpacZ6FJJJXjnr3hDo.EUa7FJvdQ56xdP1Cw9+9Q2gjVVRNNoEYWDJBJO23G+NGxywCEbORZJWXYu5oSRHV1etynILY39gXJyZvAfbmi50GMDyr1aRBNMk3aYau7CTpsWcEK82e9C6givLORgHKqmwodjinwTYgzgceHMJpO1mbJMtj02q6.ONaedDOCfxxNtVIXuywiImfUlsjik8sNzmJ4hQRrjjZYuxdb+IiB4ugYr+YzT5YQD0h1Vif.YD2mG4qPrRp09gzH+g4G4TKHJCKHfkMDvW5bL0mNSdAQrtVApvix7g8RWG7ZWFdtKDdtKBd1kf2JF3camQdBZhrPiBaely.ljHBvPJnLrL1Zsze7IN6yAKXxVw3yI8EvhYdz39ttMQa65twNqUasZPhHUhdMVfhvAncQGxFSYjVdBBbzdPD+LbjIrGw4m2i42mPhZXbU4TB3R9dY7YHVFN0fs1BgdBWhESPoQTehvHZP.JCPLBmhvpRMzHsxlnThDIIWHQXlOJl6SPIBdBQHojTjjipCFWesZ.PaIHioovIpeFySR4rF08E32X1LS3p2DEjqbbSD+rediZ+5Z0PvmB3BLaLA.OHGHoKPaZ9eT1NFaL+EfaJDRIXtOEyJbWK8QAAJHuKpSqsq3lxBrv6zPp24LHuAl31pyNUT9bpuLDTztkKr4cf+dmJ9LONNFxjnzLAAMgmgDDMYEBTDv2ekwpjVdQDrPy9U70CG4kEAIGsGDfcMmGTffGqk4kIDPND.WTFo.mfoyNjaV9Le2oHtrr6fZn3PcHJ3yM1RS0Whe.yffVu97XEseHw6bDMPG.c4vt6lm5U1.ZZbIUaXzMMAaHCrueOgWiWTISrEpSSzBkXRH2shxqTwKahfaQynmbFu3jjeZR.VViTMsjVnL+XXnquC4tQgtRGCCcoopipCf3XHc2BeVZguaryLieagejnTxb6w2+QrGOQsGyb4Ji7GJL6Wujq0JEfhz7fRIXZJJkGSjgT1XCxkg.uUJoWro+elhqTxuIbG1c6qHoaN2yQbuc9Zd0c0dvqjfoIsFSj6wyX9lTIFD+hNur5U2wsfswzmTazYiMKxsZbq.nA6gQQzjTxrvTnsp2TII1rrcgIpmM0OYmzbF7zuVlin4dV5CG7NUCduH5XFw+THO2.3lhX2DU2CdxQP7qeoGrPGQGGJYP4Poc6ApGs.O5Cm4Fuv8hs2NP+ouJp9GHwU+U4.TYwVET7UQd0dqxh7dGHN6Dtj7HVCn8QsUqAUyyqJHXg5TsEE7nHhXgpUiDItNGavxhOS0VzbKO2PX1fpCe3b0CeTd1HOSW5RFxYCXT4iRHrqZhIqos1UCmLEUfoR8nIewzQSLcasn9pgGG16jW8vS1yRC4YC78aOrq0SGb.VhyCDDygyZsCxNf7ZX7QyLOq5b.I8bIOQaabBmoPf85eDa6Ey1x0mzcRw.mOs6aTWvK.DtaHQUgUVR9kKP1s.IuWItnpVI8wO9wZop2r.d2QMlbo5dkIu6cu6uTlDS88iHC4oTURs7fxp4ZxcNt7X0+zuCygTZYWX9ljQzegTdx6zrf.5Ep70Qv70WZdQXpUtupSe0QYUyuOUgBMkmYTMWHCP4jx6x+34aWXwzGIbusyPpzKbw3coEfWnn5+Z7N8WKrlygAADOYAXWwo+O9u6OMXgP4I7LI7XHz7Wnx9NmjEOBJ47H.RXLn4HHydI0EVyZW0ZEyLB5VoW7d3apx1p01SU1NWoUL1Svekm4Zt52i7oZI.lX5eV1pNGqViZme61wAZHppzouxySQEaBXew9z4F3yWeC74d2.e19F3y8uA97M2.e91q0G0uPsWljGatl.BFdn9UVa6CYXnJSWQZ82.r+XSdB
If we could have LAF Slider to read the mode property it would be great :)
-
@ulrik With pointer
HiseSnippet 1530.3ocuWstaaaCEVNMZXwaYHEXO.b9WNsNNxt0sCHKa14hKLpSpabZ2FBJJnknr3hDo.Eca7FJvdQ56xdj1+2O5NjzxRx1IsH6hPfQ34F+32g7vCGH3tjjDtvpzFmOMlXU5KsGNkICNL.SYV8NBja2uSWz.Ly5fow3jDhmUoR24IJ0k1XcK82e9CGfCwLWRlHKqWxotj9zHpLS5f1OkFF1E6QNmFky5G1tmKmcHOjOAfxcrcrhwtWhGSNEqLaMaqRe1wdTIWLThkjDqRqe.2a5v.9aYF6eIMgNJjnFzvZHDHi3t7POEhURsNLfF5MHcImXAQYPFAbGCA701mP8nykmQDaoUfx7HOeTZsaBdMxCOmUBOmUAuR4f25F3cW6gtBZrLSiBaegcOljH7wPJHOrL1Zs1VaXeHGrfIqGgujzU.Cl6Q0G43TC0xwY681r7lkgDQhD8Fr.Eh8Q6iNlMlxH0cEDXo8jP9HbnIr847K6v75RHgUMtpbJFbIctL9L.KClYvt6hPmwkXwTTRH0iHLh54il.HFgSPX0VMzPsxZnDhDIIWIQXlGJh6QPwBdLQHojDjjip.FWYyx.PqKHioIvJp6DlqjxYUq3Ivu0LYlvUoFxOU43ZH9neY6x+1lkQvmB3BLaLA.OHGHoqP6X9OJaOiMleA3l.gTBl6QwrL20ReluuBx6iZVuUA2TVfEtmGPcujA4MvDm5M2qfxej5IC.EMp6.SdS326UvmEwwIPlDkLQPPS4SPBhlrB.JB36uwXUbc2PBVnY+B95hCcmDBIGsGDfcMqGjufGok4NQHfbH.tvIjLbBlNeQtS9078mg37xtGpphC0gHiO2dWMUuD+.lAAsRkEwJ5v.h6kHpuN.5sC6ueZpWYCno5Rp11naVB1PFXOuNB2pWTHSrKpYMzJkXRH2ufxqUwqpgfSQyomTFOakjtZhAVViTMsjjoLcYXnquC4rcltbKCCcoop9U.PbBjtqiGkj4616M232k4GILgrvb78eBywYp4XtKWaj+Xg4vJ4bsbt.jkl6kKASSPI7HhLfxFaPtL.3sbI8rI8+yTbgs76.mgcZcMIcy5dAh6cKtmWcVsCTkDLMt9Xh7.9DlmIUhAwWz7UEO5NtNLMl6I0FMZrYPpUiq6CWvdbXHMNgLOLYZK5MURhLCajYhprotjcbs4vSWsLEQKTV5iG7lECdmP5XFw6bHOWE3lrXWCUwEJ4HHdUVpfEpOcbfjAaGxMaOQUzB7nKrlqdgyUsZ4q+zGEU+ARbzeEV.EFraFEeyjWFTFvop6NScZDbyCqOdJQTUJTm9RUH3ptApNe6QMzE4oQ8dvED7pUwlNW83G66qVFEQ5YpMKDuyHtRnfZHo5hgeVM2r7FreswRy4Jr5A0V1wlKKqQKfKykcgUpgGfJPuSIN89VDmcJWRdFqJbka4MJCU.VTku+J0oZkPvCCUAcEpUsQJtIGqxlDMR0JgoxXpgP+TEaXy95aXKe+jtlNaxYHm0iQkOKlvtttLsl0NjpgtYnBLUpam6ql0NmoCEKpmpg6AcN80O8zCrzPNqI4JssdQuivRbZffXNXd6PfriHuAZ41zm3F1GQRtTxi01FEyYJDTZqOgo8p4S4VSaOMa9eQ62pJJNWvuiaGPTmJyKIsfDH6y.IePINqRfR5ye9y0RU04Ad2V8zhb0JTl792+9+RYRD0yKjLfmPUI07OtP0KXpyQ4eJxO+GPua4F1F5ILdH8WI4esRxDee5Up7Ue3MIK0iMzoO2S0cTw1+Uu4YlBEZx2mspWZFfxo4mk+wuIXkal9Dg6csGPktAqFuqsB7Bap9uFuydg0l1G66C0rx.651c+o+ceN0JgBTuTBWf.MLITYe6SmDMD1x4R.jvXPCEfrRqoNvZF6nFqXlgPgM8fO.eyT1PMtzLkMRUZEgcE7W6ZNlqdC2mqk.XhoeJ6F1mnFiZjd511Fpsp1oSesqqhJ1Av9p8o4svmGbK74g2BeZcK74Q2Bed7svmu8F8Q8p9NSj7HywDPvfi0UYKU5XFF1ko2QZ82v1UGpo
-
@ulrik ...and search light
HiseSnippet 1541.3ocuXstaaaCEVJMpXwaYnEXO.b9WNsNNxt0sCHKaw4hKLpSpabZ2JBJJnknr3hDo.Eca7FJvdQ56Rej1+2O5NjzxRxwosK6hPPP34F+32g7vCy.A2ijlxEV1qc5zDhk8W4LbJSFteHlxr5c.H2oemtnAXl0dSSvooDeKa6a7HkZ60V0R+8G+3d3HLyijKxx54bpGoOMlJykNX2GSih5h8ImRiKX882smGmsOOhOAfxMbbsRvdmiGSNFqLaEGK6adnOUxECkXII0xd0839SGFxeCyX+yoozQQD0flVCg.YD2kG4qPrRp09gzH+AYK4TKHJCxIfaXHfuw4HpOct7bh3VZEnbOJxG1q7wfWyhvycovycYvyt.7V0.ua6LzSPSj4ZTX6Kc5wjDQ.FRAEgkwVqUNdMm84fELYiX74jtBXvbOp8.W25n1ttar85UVuBjHRknWiEnHb.ZGzgrwTFogmf.KsGEwGgiLgsOmedGleWBIplwUkSIfKYykwmAXY3LC1ZKD5DtDKlhRin9DgQTu.zD.wHbJBq1pgFpUVGkRjHI4BIBy7QwbeBJQvSHBIkjhjbTUv3pqWA.ZCAYLMEVQcmv7jTNqVUeA9MlIyDtp0QAYJGWGwG8KaT42VuBB9T.WfYiI.3A4.IcAZSyeQYaarw7a.toPHkf49TLK2cszmDDnf7NnVMZWxMkEXg2ogTuyYPdCLwsQqsKo7mn9xPPQyFtvj2B98cJ4yh33HHShRmHHno7IHAQSVg.EA782ZrJogWDAKzreIe8vQdShfji1CBvtl0CJPvi0x7lHDPND.WzDRNNASmuH2r3Z9tyPbQY2AUSwg5PjymarklpuD+.lAAsZ0EwJZ+Ph24HZfN.5sC6rSVpWYCno1kTsgQ2rDrgLv99cDd0NqTlXKTq5nkJwjPtaIkWohWVGAmhlSOYLd9JIa0j.rrFoZZIMWY1xvPWeOxcibcEVFF5RSU8qBf3HHc2.OJM22M1dtwuM2ORTJYg43G9LliSTywbWtxH+oBy9UK3ZkBAHOM2qPBllhR4wDYHkM1fbYHvaER54S5+mo3Ra42DNC619JR5l08BD2aWbOu5rZGnJIXZRiwD4d7ILeSpDChOq0KKezcbCXZL2SpMZzXyfLqF2H.tf8vnHZRJYdXx0V1apjDaF1L2DUYScI6j5ygmtZYFhVnrzmN3sJG7NQzwLh+oPdtFvM4wtNppGTxQP7qVdUmuGY.mpt1JKbifh9r93oDQMoPswOSgfqtHt17LSczYEWA5z+BBd4xVHtW7vGFD35ZtbLmgOQkmH9mP7jPsrHRsEC+rxc4TFrUo4klykX08peYGacYYMaC6FKPrvJ0vCWpTOpOcbnjAGjVfbf6Y9aSKORcMAji5BbPsybunc6.8mt3m5GPhq9qTfJMXqhwb4aWq7VkEY2Vi3ri4RxSX0fKrqrVEn9whpBBVpNUiHBdTjhWVhZUSnhOli0XShGoZDwTWMyPnarxs64b0s6UraTOSeQELjy5wnxmjPXWUOpVyZlR0N3LTAlJ0MC90yZFzzeiE0W0t9fNG+pGe7dVZHm2h8Kdu0y5c.VhyBDDyAyalBjc.40PC6ltLWy4.R54Rdh113DNSg.6a8YLsWLeJu0zcmlO+Oa22nJoNWvui2Mjn1YVTRV4LP1MAIePINuNhR5Se5S0RU2R.7ti5gIEpznL4cu6c+oxjXpueDY.OkpRpEeZhpSxLmiK9PlW7dnyuBC2E5nLYH8WIEeqS5jf.5Ep7Ue3EMWpCc3cBbeUuUke7f5ESyTnPSwtzUchy.TNs3r7O9EEKcyzmIbusy.pzKb43ckkfWXS0+03c16yV24vf.nraNXW0o6O+u6iwVJTfR9RnHJztkPk8cNdR7PXKmGAPBiAsi.xrWQcf0L1UMVwLCgZy5Ae.9loroZr8LkMyTZEi8D7W4YNlqdA3Wnk.XhoeH7ZNGoFiZlc51wAtdPsSm9JOOEUrIf8k6SqqgO26Z3y8uF9z9Z3yCtF97vqgOe2G0G0+SfNSj7XywDPvfC0UYssOjggcY5cjV+ETMTxJG
-
@ulrik HAha. You, Killin It Man, Thank You So Much
-
-
@ustk said in LAF ScriptSlider?:
@ulrik The skew factor is not a public component property, it is calculated behind the scene. It's calculated to take the
middlePosition
property into account. Therefore you can only access it only fromobj
in the custom LAF
The skew is rarely necessary sincevalue
andvalueNormalized
should cover all the needs, but I had a special use case where I needed it, so it might be the reason I put it in the custom LAF I don't really remember to be honest... The associated function isgetSkewFactor
Do you have an example of a rotary knob using skew factor?
-
@ulrik Ulrik
Have You Noticed The Message In Console With The Latest Version Of Hise.It Says Something About K.clear();
I Guess This Version Doesn't Like That Line!!! -
@Natan No, what do you mean?
-
@ulrik said in LAF ScriptSlider?:
@ulrik ...and search light
HiseSnippet 1541.3ocuXstaaaCEVJMpXwaYnEXO.b9WNsNNxt0sCHKaw4hKLpSpabZ2JBJJnknr3hDo.Eca7FJvdQ56Rej1+2O5NjzxRxwosK6hPPP34F+32g7vCy.A2ijlxEV1qc5zDhk8W4LbJSFteHlxr5c.H2oemtnAXl0dSSvooDeKa6a7HkZ60V0R+8G+3d3HLyijKxx54bpGoOMlJykNX2GSih5h8ImRiKX882smGmsOOhOAfxMbbsRvdmiGSNFqLaEGK6adnOUxECkXII0xd0839SGFxeCyX+yoozQQD0flVCg.YD2kG4qPrRp09gzH+AYK4TKHJCxIfaXHfuw4HpOct7bh3VZEnbOJxG1q7wfWyhvycovycYvyt.7V0.ua6LzSPSj4ZTX6Kc5wjDQ.FRAEgkwVqUNdMm84fELYiX74jtBXvbOp8.W25n1ttar85UVuBjHRknWiEnHb.ZGzgrwTFogmf.KsGEwGgiLgsOmedGleWBIplwUkSIfKYykwmAXY3LC1ZKD5DtDKlhRin9DgQTu.zD.wHbJBq1pgFpUVGkRjHI4BIBy7QwbeBJQvSHBIkjhjbTUv3pqWA.ZCAYLMEVQcmv7jTNqVUeA9MlIyDtp0QAYJGWGwG8KaT42VuBB9T.WfYiI.3A4.IcAZSyeQYaarw7a.toPHkf49TLK2cszmDDnf7NnVMZWxMkEXg2ogTuyYPdCLwsQqsKo7mn9xPPQyFtvj2B98cJ4yh33HHShRmHHno7IHAQSVg.EA782ZrJogWDAKzreIe8vQdShfji1CBvtl0CJPvi0x7lHDPND.WzDRNNASmuH2r3Z9tyPbQY2AUSwg5PjymarklpuD+.lAAsZ0EwJZ+Ph24HZfN.5sC6rSVpWYCno1kTsgQ2rDrgLv99cDd0NqTlXKTq5nkJwjPtaIkWohWVGAmhlSOYLd9JIa0j.rrFoZZIMWY1xvPWeOxcibcEVFF5RSU8qBf3HHc2.OJM22M1dtwuM2ORTJYg43G9LliSTywbWtxH+oBy9UK3ZkBAHOM2qPBllhR4wDYHkM1fbYHvaER54S5+mo3Ra42DNC619JR5l08BD2aWbOu5rZGnJIXZRiwD4d7ILeSpDChOq0KKezcbCXZL2SpMZzXyfLqF2H.tf8vnHZRJYdXx0V1apjDaF1L2DUYScI6j5ygmtZYFhVnrzmN3sJG7NQzwLh+oPdtFvM4wtNppGTxQP7qVdUmuGY.mpt1JKbifh9r93oDQMoPswOSgfqtHt17LSczYEWA5z+BBd4xVHtW7vGFD35ZtbLmgOQkmH9mP7jPsrHRsEC+rxc4TFrUo4klykX08peYGacYYMaC6FKPrvJ0vCWpTOpOcbnjAGjVfbf6Y9aSKORcMAji5BbPsybunc6.8mt3m5GPhq9qTfJMXqhwb4aWq7VkEY2Vi3ri4RxSX0fKrqrVEn9whpBBVpNUiHBdTjhWVhZUSnhOli0XShGoZDwTWMyPnarxs64b0s6UraTOSeQELjy5wnxmjPXWUOpVyZlR0N3LTAlJ0MC90yZFzzeiE0W0t9fNG+pGe7dVZHm2h8Kdu0y5c.VhyBDDyAyalBjc.40PC6ltLWy4.R54Rdh113DNSg.6a8YLsWLeJu0zcmlO+Oa22nJoNWvui2Mjn1YVTRV4LP1MAIePINuNhR5Se5S0RU2R.7ti5gIEpznL4cu6c+oxjXpueDY.OkpRpEeZhpSxLmiK9PlW7dnyuBC2E5nLYH8WIEeqS5jf.5Ep7Ue3EMWpCc3cBbeUuUke7f5ESyTnPSwtzUchy.TNs3r7O9EEKcyzmIbusy.pzKb43ckkfWXS0+03c16yV24vf.nraNXW0o6O+u6iwVJTfR9RnHJztkPk8cNdR7PXKmGAPBiAsi.xrWQcf0L1UMVwLCgZy5Ae.9loroZr8LkMyTZEi8D7W4YNlqdA3Wnk.XhoeH7ZNGoFiZlc51wAtdPsSm9JOOEUrIf8k6SqqgO26Z3y8uF9z9Z3yCtF97vqgOe2G0G0+SfNSj7XywDPvfC0UYssOjggcY5cjV+ETMTxJG
This Show The Error k.clear();
-
@Natan Not for me
-
@Natan Me neither...
-
@Natan Not here..
-
@ustk said in LAF ScriptSlider?:
@ulrik
textColour
isn't working with the stock slider either so this should have something to do with a bug in the slider wrapper somehow, it's not related to custom LAF. I'm checking if I can do something...Any luck with finding a solution for the
textColour
property? -
@d-healey said in LAF ScriptSlider?:
Do you have an example of a rotary knob using skew factor?
Not on the top of my head...
Any luck with finding a solution for the textColour property?
I'm having a look before making my evening tea :)
-
@d-healey Ok so now the
textColour
property is available from the custom LAF (although it still doesn't work with stock sliders, but who cares...)
Did I earn my tea? :) -
@ustk Yey well done, many much tea for you :D @Christoph-Hart merge merge merge :D
-
@ustk Do you have example of drawing a knob with the correct middle position?
This is what I'm working with:
laf.registerFunction("drawRotarySlider", function(g, obj) { var a = obj.area; var width = obj.area[2]; var height = obj.area[3]; var stroke = 3; var mark = 4; var range = obj.max - obj.min; var startOffset = 2.5; var endOffset = -startOffset + 2.0 * startOffset * (obj.value - obj.min) / range; g.setColour(obj.itemColour1); g.fillEllipse(a); g.setColour(obj.itemColour2); g.drawEllipse([stroke / 2, stroke / 2, width - stroke, height - stroke], stroke); g.rotate(endOffset, [a[2] / 2, a[2] / 2]); g.setColour(obj.textColour); g.fillRoundedRectangle([width / 2 - mark / 2, 0, mark, height / 2.5], 1.5); });
-
laf.registerFunction("drawRotarySlider", function(g, obj) { var a = obj.area; var width = obj.area[2]; var height = obj.area[3]; var stroke = 3; var mark = 4; var range = obj.max - obj.min; var startOffset = Math.PI * 0.25; var fullArc = Math.PI * 1.5; var arcPos = startOffset + fullArc * (obj.value - obj.min) / range; // 0 = starts in the center var intend = width * 0.25; g.setColour(obj.itemColour1); g.fillEllipse(a); g.setColour(obj.itemColour2); g.drawEllipse([stroke / 2, stroke / 2, width - stroke, height - stroke], stroke); var p = Content.createPath(); p.addArc([0, 0, 1.0, 1.0], Math.PI + startOffset + fullArc, Math.PI + startOffset); /// itemColour3 ? g.setColour(0x22FFFFFF); // Annoyingly the path can't scale proportionally so we need to factor this weird number // in to make it non-squashed (change it if you change the intend) // someone with more math ambition could calculate it with a middle-school grade formula... var magicScaler = 1.4; g.drawPath(p, [intend/2 + stroke, intend/2 + stroke, width - intend - 2 * stroke, height - magicScaler * intend - 2 * stroke], intend); g.rotate(arcPos, [a[2] / 2, a[3] / 2]); g.setColour(obj.textColour); g.drawLine(width/2, height/2, intend - stroke + width/2, height - stroke, 4.0); });