HISE Logo Forum
    • Categories
    • Register
    • Login

    Paint Routine Graphics and Mouse Callback in a Function

    Scheduled Pinned Locked Moved General Questions
    6 Posts 3 Posters 333 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • FortuneF
      Fortune
      last edited by Fortune

      I need a common function that controls a Panel's Paint Routine Graphics and Mouse Callback depending on different cases. I tried to check the values with switch-case but it doesn't work. What am I missing?

      inline function organizer(painter)
      {	
      	switch (painter)
      	{
      		case BluePaint :
      		PaniterPnl.setPaintRoutine(function(g, h)
      		{ 
      		    g.setColour(this.data.hover ? Colours.steelblue : Colours.blue); 
      		    g.fillRect([0, 0, this.getWidth(), this.getHeight()]);
      			
      			g.setColour(this.data.hover ? Colours.navy : Colours.black); 	
      			g.setFont("Arial", 30);	   
      			g.drawAlignedText("Blue Case Accepted", [0, 0, this.getWidth(), this.getHeight()], "centred");   		        
      		});
      		
      		PaniterPnl.setMouseCallback(function(event)
      		{
      				if (event.clicked)
      				 {		
      					Engine.openWebsite("https://www.blue.com");
      				 }
      		       
      		    this.data.hover = event.hover;
      		    this.repaint();
      		    
      		});			
      		break;
      		
      		
      		
      		case YellowPaint :
      		PaniterPnl.setPaintRoutine(function(g, h)
      		{ 
      		    g.setColour(this.data.hover ? Colours.lightyellow : Colours.yellow); 
      		    g.fillRect([0, 0, this.getWidth(), this.getHeight()]);
      			
      			g.setColour(this.data.hover ? Colours.navy : Colours.black); 	
      			g.setFont("Arial", 30);	   
      			g.drawAlignedText("Yellow Case Accepted", [0, 0, this.getWidth(), this.getHeight()], "centred");   		        
      		});
      		
      		PaniterPnl.setMouseCallback(function(event)
      		{
      				if (event.clicked)
      				 {		
      					Engine.openWebsite("https://www.yellow.com");
      				 }
      		       
      		    this.data.hover = event.hover;
      		    this.repaint();
      		    
      		});
      		break;		
      	
      	}	
      }
      
      HiseSnippet 1453.3oc4X80aaaCDWJIpqRscXEnOLrGFHzCCJ.Yt1tccEtnnMwIYMaKoF08OaXXnfVh1lHRjFRzw0KHeW1mj8YZeC1tiTxRNwwyKnsOrY3XadGOd+t+QcW5jJCYYYxTKa2WNcDyx9lNcmJTCaOjxEVGrqk8cb1mGyxlloXID16nIihYV6LcDMKiEYYau92g6z1cCK8q+7I6PiohPVIIKqWK4grejmvUkT67zefGGuOMh8RdRkce+mdPnTzVFKGCnZcm5VingGSGvNhhaaMGK6qsWDWIS6pnJVlk8F6Hil1cnbhvr+Wyy38.PBKZX0ENHC48kwQHhQpVsGxii5TX8YVvozozWrtwWbGmC4Q7YzK8IellAoThp9C60lGdqOG7ZTEd0q.uE.I6JPZCCjtsS2vT9HUIGDO2v4.ghk1mFNenwrWq0tgmSaIrCgpVB8X19ovhYRDbu502h.er4i77.WelhbBMkriRIZPdLoPvALUaYxHo.VD3q45iRvEwbAizerHTwkBhTn4ghkJiCBKjYK3TiGy1z6TOWd+f7EtxzATA+2XoA6.D5.dXEbpmAG7RUbsLjpVEsoww8fTjf40LhMuyaPMWpA0bIFTy+8FzOyhikSVMSp4xLolWlI0AzDDE6HhqXWznHfNKNvujs+VjFPP9gXLtXef5frnQrTEmkAoDIee2mez4D5T+I7H0P+VMeHHt+PFevPkeqFO.W0SlFwR6B1peqx0ufFwGmYn.GThoR1uEYdBMyoPQeTg8BhQ7aGygesE4YxSXojuhraJcv.tXf+Yn8WBOsAfN2WHGqfHVPQDKXvVjgPXg3QbcI4u7VfzGJGmwl4qmIN6Dv8nCqPbkXVVKDQEKBBvtjSccguv+Hm4Ub93Gpg7rZQTEs1PM3eLwHrd0iJ2RJaDB7fMMzLXyaAodyxkz6mkBnBTa1DtJbHojnKh0PZFiLqHhzBgn6p6tvcCtL7KDSCLoiXnJ37l0SHFFY0fGJvh6A5jzZFMb4lOp5I0Gtn+ErPUvu.Qb3s97fZf2f4VAaVR3Y57qfM+Uvefh6Z9b0vhfdxz4fADTAbT8L1Wh0aamxoXx88fpADgEaHJkNY6X9.AK5kr2gElng0FcqaGFxFoXQfTqrM.I2gPvOEjBfAoZtHpuyxswEDlVddoNPYv7hyO0N9SKbdtt6IfxGVMnTW7FVuLPQA9CUpQYst6cmLYhNfUCtVyuvqio0EQuB3tBo2yssJo3EzKLaiQ2KkQOFYN6sNAtxklebRgiwv0TsVqj8XH7eizXiK8+AIxlf1GyT4Y4wHH8bOy06LOyqJsObjTwdtHP+DEfO47r52eg7xeneLb6+hXicMmtLACDiS5wRq1lBtQnUx46O04x6OsZ6ygl1FprQo3.HX+bHZbYMUak2qAzK6Z4nB1pR2I6ml2I6NiUJovhCMr9IN5F3rz.t57CVqrvMWfvu5fcg.M1OcNbJa6AnsK6DX3DS20tN6xxNVIGAJZVCZV1W+eDwuCbi1dftlV7CET5ASp3fOCwR2DEb7WKJGRlFoPJeYNEd1gxDPazT8QXar5UFBMMP3OtHDttio9+8.HtgAD2pXFDrKSMFtoSYc+47EcfeLSyet8407uWn4YMFhTst.0lUIW134EoZZ+rJ846vzx9KbtrNLggRuv.WvndxnwwT07y+gC8ly.J5lanKbvJAb4zzpCE+danvUEh21oC1j3hw3ZK.iXM5G.LlOJ8sb1qee3Ymk.bCm8+oOLyMaYZOXvgTUJGyFOZbRWHGJjAZW.4r3kd1qg41l00w0nGnKSDoW7WvqblMJpDPlMJXZkPCSkuMzbuDNr900T.LIz+eJbcNDWSlcaliS8Z0sR3Q72FFhl+WC2XtXYZdEj4dWAYt+UPlu4JHyCtBx7sWAYd3RkA+W1r8XkLwTN.D5rm9AC116InPlkNKz5uACnyOhB
      
      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @Fortune
        last edited by d.healey

        @Fortune

        You can't dynamically assign callback functions. You need to use a different approach.

        You need to assign your callbacks in on init after you get a reference to the panel. Any if/switch statements need to be placed inside the callbacks.

        Since it looks like all your paint routines are the same, except you are changing the colour, you could instead change the panel's colours and trigger a repaint from your switch statement. That way you don't have to write the same thing multiple times.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        FortuneF 1 Reply Last reply Reply Quote 1
        • FortuneF
          Fortune @d.healey
          last edited by

          @d-healey Ok I understand, Thank you.
          Colors, text and also the button links are changing depending on the case.
          I will try to do it with a trigger 👍

          FortuneF 1 Reply Last reply Reply Quote 0
          • FortuneF
            Fortune @Fortune
            last edited by

            @Fortune I couldn't find a simple way to use the simple if else checks inside the paint routines for these multiple situations :(

            orangeO 1 Reply Last reply Reply Quote 0
            • orangeO
              orange @Fortune
              last edited by orange

              @Fortune

              You just need to assign some starting values to the paint routine and mouse callback (no matter what they are in this case, since the panel is hidden on init), then you can change them as you wish ;)

              HiseSnippet 1506.3oc2X02aaSDF+ba8X1rgXR6OP7WmhPHWoRZR1XTkpwZaZKq.sKZYrwDBMcw9hyoZeWj8kjEl5m.9RvGE9Hw2.34tyN1tMsqD1PBrhZy87xc+dd0OW5lH7ooohDjkyylMhhrtkcuYb4vNCILN5n8QV209PVDMcVpjFioulDOJhh1a1HRZJM.YYs52njzxYMj94OdzdjHB2mVPBgdtf4S+dVLSVPs6NeGKJ5PR.8Yr3RRe+cNxWv6HhDiATspcCzHh+ojP5IDkXqXirtwAALoHomjHooHq01SDLq2PwTtQ9myRY8APBKZh5Aajg7ghn.EhUTQcFxhB5la8oHXW5V3KV03Ktq8wr.1b5E9jOVy.WnQY+g0JUg2pUfWyxvqQI3s.HYUBRqYfzcr64mvFIK3nvyGZeDWRSFP7qFZLxhV4Wcs6H.I3x5wjSoGl.Klqg28ZzXCL7m0210Eb8oR7DRBdOoj2D+PbthgTYGQ7HAGV3USysFnAiGw3T7fwbeISvwBtlkRqDQjmetJa.aZzX55tuw0gMvyr.KRBIb1uPS7fS2w8L.AW44UOUQUu0cHQQ8gLCupmnxHNmUz5JshVWtUz5usUz7saEstJqn0hshtv1CQqt7nRlBIH.nSi7pUvt1F3lPvbKUrLWN3vfrkQzDIilBg93us2SN4bJ8lZSYAxg0Z2ZKP8ZCorvgxZsa9.0p9hj.ZROv.q0tX8SIArwoFJvFEapXq0FWkPqLJfcJllasfZ3ZchXv21.+XwDZB9yw6mPBCY7P.N0lXpQ.wFPhRomo7GatI9khwXNkFfkBLXVXBNUR.6hGhAmET0AwN2BCSa5PMq7ohwfPTu73qW3F3gPPD65DZBFJn5IGxRqGPjj5C0X5QXCiz5PyOZTeHXiaOmlZ45aicwvSX8APyrmR8kd+DXsvG8dAQ+Wn7qdqWP3wZeq25+LnqiCN6wUahUg9whwoz4IHywNcBDUyx.wlU08U9RZv53C3fKjVGB27WP6mB6lWsgR4nz1at4zoSqOiphC0gDZHsGa.+4M6GhMapd01EhjPGobldJEy.7EKblWJnkkl..0w0orgAcByqqjIJWnKHP5TlzeHtPKGv9bfP9dJmdGRJEV5C+C2.2F9piy0OLqjVEpcLt6+4Q7hcZYh5Z0ul4cbxjYU..jInxaJsGGJTcV1MgQTEx2S0GUEdxDHHgLc2HVHmF7L5qUsfx8m3c88oijz.PqqM5gRSeH0HAzRmETJAVcdmkYcKH.c0Iy5PjAyKQRsJtjkROO17VRpqHVQh8b54liwX5mPImpXZ9n5DoqipjX17emDyHUnvTFWJyvP3+5Imk7p+OJ8rRO220InyyNUl0YvvGtlmRixbhPReB2S+JCfO97rFLXg7xZRGA8xWDa0T6IWkhd7ww8oIkGYRIHLJa04isu74iKO9tuYblRBJ3GAgvm.t8KandT1LPvrzqjgJPTodR5OJaR58FKkBNhACL+A15IIQZ.W99KnqsxsVfx+vQ6CgY077YvoXbLf19zIvkiLS26XuOM8ToXDbPyGaDYcy2JhecwA9Y6Lq7BITXA2XxV02GoGxqf6K2wLnWAkudGV5whX3TIIv1XaYYr9qMTZUBJ+d3hfxMsMU4uC.ysLf4142IRMMrFK2xtn5VAHaKWPS8dzE9R9IeiOwxbRyO4a7aYwrhAXUTQWfZqxjKFP9hTMiIWld0IgQVep8kMILZRdofsAnW79fvMQEAiiHxpWOUcm7LFPMYk6Dpt2GGZRMq7c1emcm0qKDuicW0.eKFiqr.LpJgeOfwra5ea6CFL.dUYA.Wy9ve78y05QloABOlHSXpjySFG2CRo7ovoygTXUOQqUTo5l0Mxi+8n7.8h+DdxX1LuvPwrYNSTLwOQ7JeSaK0ukvM0T.Lw0+LJN1GqVim2ry1tQ8FnXV.6U99Jy+KfFpKVmVKgN2aIz49KgNe4RnyCVBc9pkPmstRcT+hR6NVJhMkC.gtGneugk0AbBjYoyBQ+EPic633
              

              develop Branch / XCode 13.1
              macOS Monterey / M1 Max

              FortuneF 1 Reply Last reply Reply Quote 1
              • FortuneF
                Fortune @orange
                last edited by

                @orange Whoohoo I didn't know if that is possible. Thank you so much, man!

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                21

                Online

                1.8k

                Users

                11.9k

                Topics

                104.0k

                Posts