////// Mix ////// void preMix(){ for (int i = 0; i propReg) twoWider = true; else twoWider = false ; img3 = createImage(regWidth,regHeight, RGB); switch ( refInsert) { case 101 : //fram sourceImage = 2 ; Frame(1); reFrame(); break ; case 107 : //"stretch" for (int i= 0 ; i< regWidth ; i++){ for (int j= 0 ; j< regHeight ; j++){ rex[i][j] = 1; int x = (i*img2.width)/img3.width ; int y = (j*img2.height)/img3.height ; pixelColor = img2.get(x,y) ; img3.set(i,j,pixelColor); }} break; case 102 : //complement case 104 : //homoth if (refInsert == 102){ //complement for (int k = 0; k< img3.width ; k++){ for (int l = 0; l< img3.height ; l ++){ color colorFill= color(128,128,128); img3.set(k , l , colorFill); }}} if (refInsert == 104){ //homoth for (int k = 0; k< img3.width ; k++){ for (int l = 0; l< img3.height ; l ++){ rex[k][l] = 0 ; }}} if (twoWider == true){ //the original document is wider int img3newH = (img2.height*img3.width)/img2.width; offsetStarty = (img3.height - img3newH)/2 ; //println("img2.width " + String.valueOf(img2.width) + " " + "img2.height " + String.valueOf(img2.height)); //println("img3.width " + String.valueOf(img3.width) + " " + "img3.height " + String.valueOf(img3.height) + " img3NewH " + String.valueOf(img3newH)); //println("offsetStarty " + String.valueOf(offsetStarty)); for (int i = 0 ; i< img3.width ; i++){ for (int j = offsetStarty ; j< img3.height - offsetStarty ; j++){ int x = (i*img2.width)/img3.width ; int y = ( (j- offsetStarty)*img2.width)/img3.width ; if(refInsert == 104) rex[i][j] = 1; img3.set(i,j, img2.get(x,y)) ; }}} else { //the original document is higher int img3newW = (img2.width*img3.height)/img2.height ; offsetStartx = (img3.width - img3newW)/2 ; for (int i = offsetStartx ; i< img3.width - offsetStartx ; i++){ for (int j = 0; j< img3.height ; j++) { //int x = ((i - offsetStartx)*img3.width)/img3.height ; int x = ((i - offsetStartx)*img2.height)/img3.height ; int y = (j*img2.height)/img3.height ; if(refInsert == 104) rex[i][j] = 1; img3.set(i,j, img2.get(x,y)) ; }}} break; case 103 : //crop if(twoWider == true) { int img2newW = (img3.width*img2.height)/img3.height ; offsetStartx = (img2.width - img2newW)/2 ; //offsetStartx = max(0, min(img2.width - img2newW, cutXX - img2newW/2)) ; for (int i = 0 ; i< img3.width ; i++){ for (int j = 0 ; j< img3.height ; j++){ int x = offsetStartx + (i*img2newW)/img3.width ; int y = ( j*img2newW)/img3.width ; img3.set(i,j, img2.get(x,y)) ; }}} else { int img2newH = (img3.height*img2.width)/img3.width ; offsetStarty = (img2.height - img2newH)/2 ; for (int i = 0 ; i< img3.width ; i++){ for (int j = 0 ; j< img3.height ; j++){ int x = (i*img2newH)/img3.height; int y = offsetStarty + (j*img2newH)/img3.height ; img3.set( i, j, img2.get(x,y)) ; }}} break; }} void Mix(int frc) {//, int imgSource){//========================================================================= //println("in Mix frc " + String.valueOf(frc)) ; //println("refMixType " + String.valueOf(refMixType)); int x=0; int y=0; int pixelColor = 0; //variables locales pour Mix float red1 = 0; float green1=0; float blue1=0; float red3=0; float green3=0;float blue3=0; float red4=0; float green4=0;float blue4=0; float redr=0; float greenr=0; float bluer =0 ; color cpr = 0; // println("in_Mix frc " + String.valueOf(frc) + " Mix Type " + String.valueOf(refMixType) + " percent " + String.valueOf(percent)); // moveInlay(refMovetype) ; //println("in Mix refMovtype " + String.valueOf(refMovetype)); moved = false ; //TEMPORARY FOR TEST if (moved == false) { xdmix = xd; ydmix = yd; xfmix = xf; yfmix = yf; regWidthmix = xfmix - xdmix ; regHeightmix = yfmix - ydmix ; } int regHoriz = (regWidthmix*frc)/refMaxFrameCount ; int regVert = (regHeightmix*frc)/refMaxFrameCount ; //println(" frc " + String.valueOf(frc) + "/" + String.valueOf(refMaxFrameCount ) // + " regWidthmix " + String.valueOf(regWidthmix) + " regHoriz " + String.valueOf( regHoriz) // + " regHeighthmix " + String.valueOf(regHeightmix) + " regVert " + String.valueOf( regVert)); switch(refMixType){ case 0: //background, not progressive, used for progressions made elsewhere (e.g. move) and for background for (int i=0; i yfmix - regVert ; j--){ if (rex[i][j]==1){ imgy.set(i + xdmix , j + ydmix , img3.get(i,j) ) ; }}} break; case 3: //curtain_E from left to right for (int i= 0 ; i < regHoriz ; i++){ for (int j= 0 ; j< yfmix ; j++){ if (rex[i][j]==1){ imgy.set(i + xdmix , j + ydmix , img3.get(i,j) ) ; }}} break; case 4: //curtain_W (from right to left) for (int i = regWidthmix ; i > regWidthmix - regHoriz ; i-- ){ for (int j= 0 ; j< regHeightmix; j++){ if (rex[i][j]==1){ imgy.set(i + xdmix , j + ydmix , img3.get(i,j) ) ; }}} break; case 10 : NplusUn (); break; //nplusun case 101 : // fading case 102 : // blink1_2 case 103 : // blink1_4 case 104 : // blink3_5 case 111 : //sine_vib case 121 : //loop_prop case 122 : //loop_prop_inf case 123 : //tempo_blink switch(refMixType){ case 101 : break; //fading on framecount case 102 : if (loopCount%2 == 0 ) percentint = 100; else percentint = 0; // println("in case 102 percentint " + String.valueOf(percentint)); break; case 103 : if (loopCount%4 == 0 ) percentint = 100; else percentint = 0; // println("in case 103 percentint " + String.valueOf(percentint)); break; case 104 : if (loopCount%5 <3 ) percentint = 100; else percentint = 0; //println("in case 104 percentint " + String.valueOf(percentint)); break; case 111 : float a = 0.0; float inc = TWO_PI/25.0; a = a + loopCount*inc ; percentint = 50 + (int) (sin(a)*50) ; break; case 121 : percentint = (100*loopCount)/max(1, loopMaxCount); break; //loop_prop , proportionel on loop Count case 122 : percentint = (100*(loopMaxCount - loopCount))/max(1, loopMaxCount); break; //lopp_prop_inv, inversely proportional on loop Count case 123 : //tempo_blink if((loopCount + blinkPhase)%blinkBar < blinkHigh ) percentint = 100; else percentint = 0; //println("in tempo_blink blinkbar " + String.valueOf(loopCount%blinkBar)); break; } if ((refMixType == 101)&&(frc > refMaxFrameCount -1)&&(isinLoop == false)) percentint = 100; //println("percentint " + String.valueOf(percentint)); for (int i= 0 ; i< img3.width ; i++){ for (int j= 0 ; j< img3.height ; j++){ if (rex[i][j]==1){ switch (refInsert){ case 107 : x = (i*regWidthmix)/img3.width ; y = (j*regHeightmix)/img3.height ; break; case 104 : x = i; y = j ; break; case 103 : x = (i*img.width)/img3.width ; y = (j*img.height)/img3.height ; break; } red1 = red( get(x+xdmix + offsetStartx,y+ydmix + offsetStarty)); green1 = green(get(x+xdmix + offsetStartx,y+ydmix + offsetStarty)); blue1 = blue( get(x+xdmix + offsetStartx,y+ydmix + offsetStarty)); red3 = red( img3.get(i,j)); green3 = green(img3.get(i,j)); blue3 = blue( img3.get(i,j)); redr = ((100 - percentint)*red1)/100 + (percentint*red3)/100 ; greenr = ((100 - percentint)*green1)/100 + (percentint*green3)/100; bluer = ((100 - percentint)*blue1)/100 + (percentint*blue3)/100; cpr = color(redr, greenr, bluer); if(twoWider == true) img.set(x + xdmix, y + ydmix+ offsetStarty,cpr); else img.set(x + xdmix + offsetStartx, y + ydmix, cpr); }}} break ; } //println("refBlend " + String.valueOf(refBlend)); Report(10 + refBlend, 1); Affich(); } void moveInlay(int int1){// int1 is refMovetype // println("in moInlay, percent " + String.valueOf(percent)); moved = true; xdmix = xd; ydmix = yd; xfmix = xf; yfmix = yf; regWidthmix = xfmix - xdmix ; regHeightmix = yfmix - ydmix ; switch (int1){ case 0: break; case 1 : xdmix = - regWidthmix + (int) (percent*img.width); xfmix = xdmix + regWidthmix ; break; //coming from left, reaching the end case 2 : xdmix = - regWidthmix + (int) (percent*(img.width+regWidthmix)); xfmix = xdmix + regWidthmix ; break; //emerging from left, disappearing at right case 3 : ydmix = - regHeightmix + (int) (percent*img.height); yfmix = ydmix + regHeightmix ; break; //coming from left, reaching the end case 4 : ydmix = - regHeightmix + (int) (percent*(img.height+regHeightmix)); yfmix = ydmix + regHeightmix ; break; //emerging from left, disappearing at right case 5 : xdmix = - regWidthmix + (int) (percent*(img.width+regWidth)); xfmix = xdmix + regWidthmix ; //emerging from left high corner, disappearing low right corner ydmix = - regHeightmix + (int) (percent*(img.height+regHeightmix)); yfmix = ydmix + regHeightmix ; break; case 6 : float a = 0.0; float inc = TWO_PI/25.0; a = a + frC*inc ; xdmix = img.width/2 + (int) (cos(a)*50); xfmix = xdmix + regWidthmix ; ydmix = img.height/2 + (int) (sin(a)*50); yfmix = ydmix + regHeightmix ; break; case 7 : a = 0.0; inc = TWO_PI/25.0; a = a + frC*inc ; xdmix = - regWidthmix + (int) (percent*img.width); xfmix = xdmix + regWidthmix ; ydmix = img.height/2 + (int) (sin(a)*50); yfmix = ydmix + regHeightmix ; break; }} void NplusUn (){} /* Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. */