Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Anhuarcin
    3. Best
    A
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 4
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: MAJOR UPDATE // NEW: Online Knob Builder for HISE!! // Factory/User Preset System

      @Chazrox

      I loved it! Are you planning to add a button creator as well?
      MadeWithRoxKNFH_snapshot.png

      const var MadeWithRoxKNFH = Content.createLocalLookAndFeel();
      
      MadeWithRoxKNFH.registerFunction("drawRotarySlider", function(g, obj)
      {
          var a = obj.area;
          var range = obj.max - obj.min;
          var stableSize = a[2] * (1.0 - 2.0 * 0.15);
          var ox = a[0] + (a[2] - stableSize) / 2;
          var oy = a[1] + (a[2] - stableSize) / 2;
          var cx = ox + stableSize / 2;
          var cy = oy + stableSize / 2;
          var sw = stableSize / 200.0;
          var startOffset = 2.5;
          var totalSweep = 2.0 * startOffset;
          var endOffset = -startOffset + totalSweep * (obj.value - obj.min) / range;
      
          // ============ COLOUR CONTROL ============
          // -- Skirt --
          var cSkirtFlat = 0xff121212;
          var cSkirtHover = 0xffFFFFFF;
          // -- Arc Track --
          var cArcTrackOuter = 0x00000000;
          var cArcTrackBackground = 0xff000000;
          // -- Arc Value Basic --
          var cArcBasicGlow = 0x4d007BFF;
          var cArcBasicLow = 0xff004FA3;
          var cArcBasicHigh = 0xff2D61C8;
          // -- Body 1 --
          var cFace1Top = 0xff555558;
          var cFace1Bot = 0xff2A2A2E;
          var cFace1Hover = 0xffFFFFFF;
          var cFace1Outline = 0x4d000000;
      
          // -- skirt --
          var skirtR = stableSize * 0.49;
          var skirtcx = cx + 0 * sw;
          var skirtcy = cy + 0 * sw;
          g.setColour(cSkirtFlat);
          g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]);
          g.beginLayer(false);
          g.setColour(cSkirtFlat);
          g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]);
          var skirtnp = Content.createPath();
          skirtnp.addRoundedRectangle([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2], skirtR);
          g.applyMask(skirtnp, [skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2], false);
          g.rotate(endOffset, [skirtcx, skirtcy]);
          g.addNoise({"alpha": 0.03, "monochromatic": false, "area": [skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]});
          g.rotate(-endOffset, [skirtcx, skirtcy]);
          g.endLayer();
          if (obj.hover || obj.clicked) {
              g.setColour(Colours.withAlpha(cSkirtHover, 0.03));
              g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]);
          }
      
          // -- ARC TRACK --
          var trkW = 0.45 * 2;
          var Ktrk = Content.createPath();
          Ktrk.addArc([(1.0-trkW)/2, (1.0-trkW)/2, trkW, trkW], -startOffset, startOffset);
          var arTrk = Ktrk.getBounds(stableSize); arTrk[0]+=ox; arTrk[1]+=oy + stableSize * 0;
          g.setColour(cArcTrackOuter);
          g.drawPath(Ktrk, arTrk, {Thickness: stableSize * 0.08 + 0 * sw, EndCapStyle: "rounded", JointStyle: "curved"});
          g.setColour(cArcTrackBackground);
          g.drawPath(Ktrk, arTrk, {Thickness: stableSize * 0.08, EndCapStyle: "rounded", JointStyle: "curved"});
      
          // -- ARC BASIC (gradient) --
          var basW = 0.45 * 2;
          var basR = stableSize * 0.45;
          var Kbas = Content.createPath();
          Kbas.addArc([(1.0-basW)/2, (1.0-basW)/2, basW, basW], -startOffset, endOffset);
          var arBas = Kbas.getBounds(stableSize); arBas[0]+=ox; arBas[1]+=oy + stableSize * 0;
          var basGlowW = stableSize * 0.08 + stableSize * 0.08 * 20 / 10;
          g.setColour(cArcBasicGlow);
          g.drawPath(Kbas, arBas, {Thickness: basGlowW, EndCapStyle: "rounded", JointStyle: "curved"});
          var gx1 = cx + basR * Math.sin(-startOffset);
          var gy1 = cy - basR * Math.cos(-startOffset) + stableSize * 0;
          var gx2 = cx + basR * Math.sin(startOffset);
          var gy2 = cy - basR * Math.cos(startOffset) + stableSize * 0;
          g.setGradientFill([cArcBasicLow, gx1, gy1, cArcBasicHigh, gx2, gy2, false]);
          g.drawPath(Kbas, arBas, {Thickness: stableSize * 0.08, EndCapStyle: "rounded", JointStyle: "curved"});
      
          // -- face1 --
          var face1R = stableSize * 0.41;
          var face1cx = cx + 0 * sw;
          var face1cy = cy + 0 * sw;
          g.setGradientFill([cFace1Top, face1cx, face1cy - face1R + (2 * face1R * (0.5 - 0.5)), cFace1Bot, face1cx, face1cy + face1R + (2 * face1R * (0.5 - 0.5)), false]);
          g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]);
          g.beginLayer(false);
          g.setGradientFill([cFace1Top, face1cx, face1cy - face1R + (2 * face1R * (0.5 - 0.5)), cFace1Bot, face1cx, face1cy + face1R + (2 * face1R * (0.5 - 0.5)), false]);
          g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]);
          var face1np = Content.createPath();
          face1np.addRoundedRectangle([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], face1R);
          g.applyMask(face1np, [face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], false);
          g.rotate(endOffset, [face1cx, face1cy]);
          g.addNoise({"alpha": 0.04, "monochromatic": false, "area": [face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]});
          g.rotate(-endOffset, [face1cx, face1cy]);
          g.endLayer();
          if (obj.hover || obj.clicked) {
              g.setColour(Colours.withAlpha(cFace1Hover, 0.07));
              g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]);
          }
          g.setColour(cFace1Outline);
          g.drawEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], 1);
      
      });
      
      posted in Scripting
      A
      Anhuarcin