LAF ScriptSlider?



  • @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"

    panslider.gif

    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
    pansliderWpointer.gif

    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 😂
    pansliderWpointerAndSearchLight.gif

    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 ☺ 👏



  • @ulrik So Clever:

        if (obj.text == "Pan")
    

    Well Done Sir 👍 👏



  • @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 from obj in the custom LAF
    The skew is rarely necessary since value and valueNormalized 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 is getSkewFactor

    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 😂
    pansliderWpointerAndSearchLight.gif

    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 😄 @Christoph-Hart merge merge merge 😄



  • @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);
    });
    


  • @d-healey Sorry but I don't understand what was the problem... Everything seems fine here...



  • @ustk If you use it with the attack knob of an ADSR for example the skew is totally off.


Log in to reply
 

12
Online

1.4k
Users

4.4k
Topics

40.7k
Posts