Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #37926

Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary?

Newsgroups comp.lang.javascript
Date 2019-12-05 13:31 -0800
References <7b6d7cb9-be87-41fc-8020-5988e9c6fac3@googlegroups.com>
Message-ID <a827656d-032a-48d1-98a0-ff5b2e5a4707@googlegroups.com> (permalink)
Subject Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary?
From Jonas Thörnvall <jonas.thornvall@gmail.com>

Show all headers | View raw


Den torsdag 5 december 2019 kl. 18:09:41 UTC+1 skrev Jonas Thörnvall:
> I realise i "probably?" draw element that are outside canvas, and should use splice to remove those. But i am doing the "printout" in one swoop and am unsure howto splice it?
> 
> BACKOFFSET.splice(midiEv,1)
> 
> AND
> 
> track[rectrack].midiMess.splice(midiEv,1)
> 
> Should take care of removing a element that is found to be drawn outside canvas.
> 
> But then where to put the check conditions and what is it, probably should be just before drawn out?
> 
> if (6+scrollBarPos-BACKOFFSET[midiEv]>"canvasWidth")???
> 
> Well i try and come back on subject, another question how do one check it works, the elements is drawn outside canvas?
> 
> Probably just check array length but there is new incoming elements during playup so it is hard to see what is going on?

I think it could be that backoffset is just a buffered copy of an on note "not the actual note on", and i am not that keen to backtrack which actual note on it was. 

But if someone knows the answer howto i am all ears.
I thought i was past this function by now LoL 

> 
>   function pianoSCROLL(){
> 	console.log("pianoSCROLL");	
> 	console.log("TRACK="+rectrack+" midiMess length="+track[rectrack].midiMess.length);
> 	nbrOfEV = track[rectrack].midiMess.length;
> 	
> 	var x=0;
> 	 while (x<nbrOfEV){
> 	   midiEv=x;
> 	   //INSIDE KEY PRESSED
> 	   if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
> 		  ctm.fillStyle = pcolor[track[rectrack].midiMess[midiEv].data1];
> 		  ctm.fillRect(56,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight);
> 		  //When ***A NEW*** key pressed a startvoint relative the scrollbar created ***FRONTOFFSET***
> 		  if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
> 		  rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
>        }
>        //INSIDE KEY RELEASED
> 	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
> 		keyreleased[midiEv]=true;	
> 		for (var q=midiEv-1;q>=0;q--){
> 			if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 				barLength[q]=rightSide[q]-50;
> 				BACKOFFSET[q]=FRONTOFFSET[q]+barLength[q];
> 				keyreleased[q]=true;
> 				break;
>     		}
> 		}
>        } 
> 	   //INSIDE MOVE BAR
> 	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==true){
> 		z=midiEv+1;
> 	    while(z<nbrOfEV){
> 		  if(track[rectrack].midiMess[z].data1==track[rectrack].midiMess[midiEv].data1){
> 			ctm.fillStyle = "#000a4d";
> 			ctm.fillRect(scrollBarPos-BACKOFFSET[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8))-1,barLength[midiEv]+50 ,keyHeight+2);
> 			ctm.fillStyle = pcolor[track[rectrack].midiMess[midiEv].data1];
> 			ctm.fillRect(6+scrollBarPos-BACKOFFSET[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), barLength[midiEv]+50,keyHeight);
> 			break;
> 		  }
> 		z++;
> 		}
> 	   } 
> 	  x++;
> 	 }
> 	}

Well for some reason they protest when removed from arrays...
But i managed to do the second best, i do now drawthem out.

   function pianoSCROLL(){
	console.log("pianoSCROLL");	
	console.log("TRACK="+rectrack+" midiMess length="+track[rectrack].midiMess.length);
	nbrOfEV = track[rectrack].midiMess.length;
	
	var x=0;
	 while (x<nbrOfEV){
	   midiEv=x;
	   //INSIDE KEY PRESSED
	   if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
		  ctm.fillStyle = pcolor[track[rectrack].midiMess[midiEv].data1];
		  ctm.fillRect(56,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight);
		  //When ***A NEW*** key pressed a startvoint relative the scrollbar created ***FRONTOFFSET***
		  if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
		  rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
       }
       //INSIDE KEY RELEASED
	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
		keyreleased[midiEv]=true;	
		for (var q=midiEv-1;q>=0;q--){
			if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
				barLength[q]=rightSide[q]-50;
				BACKOFFSET[q]=FRONTOFFSET[q]+barLength[q];
				keyreleased[q]=true;
				break;
    		}
		}
       } 
	   //INSIDE MOVE BAR
	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==true){
		z=midiEv+1;
	    while(z<nbrOfEV){
		  if(track[rectrack].midiMess[z].data1==track[rectrack].midiMess[midiEv].data1){
			
			//Removal before next drawout
			
			
			
			if (6+scrollBarPos-BACKOFFSET[midiEv]>Mwidth+15){
				//BACKOFFSET.splice(midiEv,1);
				//track[rectrack].midiMess.splice(midiEv,1);
			
			
			} else {
				ctm.fillStyle = "#000a4d";
				ctm.fillRect(scrollBarPos-BACKOFFSET[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8))-1,barLength[midiEv]+50 ,keyHeight+2);
		    	ctm.fillStyle = pcolor[track[rectrack].midiMess[midiEv].data1];
				ctm.fillRect(6+scrollBarPos-BACKOFFSET[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), barLength[midiEv]+50,keyHeight);
				break;
			}

			
		  }
		z++;
		}
	   } 
	  x++;
	 }
	}

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-12-05 09:09 -0800
  Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-12-05 13:31 -0800
  Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-12-05 13:45 -0800
  Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? luserdroog <luser.droog@gmail.com> - 2019-12-05 18:56 -0800
    Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-12-05 19:39 -0800
      Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? luserdroog <luser.droog@gmail.com> - 2019-12-05 19:59 -0800
        Re: Remove canvas "Array Element note" as its fully drawnout beyond/outside canvas boundary? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-12-05 23:22 -0800

csiph-web