Main code:
[code]/*
Created by WilliamK @ Wusik Dot com © 2009
*/
//-----------------------------------------------------------------------------------------------------------
void NewLookAndFeel::stripPinkImage(Image* original, Image** destination, int height, int offsetY)
{
if (height == 0) height = original->getHeight();
int x=0;
int Corners[4] = {0,0,0,0}; // Top-Left X and Y, Bottom-Right X and Y //
Colour cPink = Colour::fromString(T(“ffff00ff”));
for (x=0; x<original->getWidth(); x++) { if (original->getPixelAt(x,offsetY) != cPink) break; Corners[0] = x-1; }
for (x=0; x<height; x++) { if (original->getPixelAt(0,x+offsetY) != cPink) break; Corners[1] = x-1; }
for (x=original->getWidth()-1; x>=0; x--) { if (original->getPixelAt(x,height-1+offsetY) != cPink) break; Corners[2] = x-2; }
for (x=(height-1); x>=0; x--) { if (original->getPixelAt(original->getWidth()-1,x+offsetY) != cPink) break; Corners[3] = x-2; }
/* 0 1 2
3 4 5
6 7 8
*/
// Create Buttons //
int bW = original->getWidth()-2;
int bH = height-2;
#define CreateBT(BT,W,H) destination[BT] = new Image(Image::ARGB,W,H,true);
CreateBT(0, Corners[0], Corners[1]);
CreateBT(1, Corners[2]-Corners[0], Corners[1]);
CreateBT(2, bW-Corners[2], Corners[1]);
//
CreateBT(3, Corners[0], Corners[3]-Corners[1]);
CreateBT(4, Corners[2]-Corners[0], Corners[3]-Corners[1]);
CreateBT(5, bW-Corners[2], Corners[3]-Corners[1]);
//
CreateBT(6, Corners[0], bH-Corners[3]);
CreateBT(7, Corners[2]-Corners[0], bH-Corners[3]);
CreateBT(8, bW-Corners[2], bH-Corners[3]);
// Perform Copies //
int y=0;
int pX = 0;
int pY = 0;
for (int bt=0; bt<9; bt++)
{
switch(bt)
{
case 1: pX = Corners[0]; pY = 0; break;
case 2: pX = Corners[2]; pY = 0; break;
case 3: pX = 0; pY = Corners[1]; break;
case 4: pX = Corners[0]; pY = Corners[1]; break;
case 5: pX = Corners[2]; pY = Corners[1]; break;
case 6: pX = 0; pY = Corners[3]; break;
case 7: pX = Corners[0]; pY = Corners[3]; break;
case 8: pX = Corners[2]; pY = Corners[3]; break;
}
for (y=0; y<destination[bt]->getHeight(); y++)
{
for (x=0; x<destination[bt]->getWidth(); x++)
{
destination[bt]->setPixelAt(x,y,original->getPixelAt(x+1+pX,y+1+pY+offsetY));
}
}
}
}
//-----------------------------------------------------------------------------------------------------------
void NewLookAndFeel::drawImageSquare(Graphics& g,Image** images,int x,int y,int width,int height,float opacity)
{
g.setTiledImageFill(*images[4],x+images[3]->getWidth(),y+images[1]->getHeight(),opacity);
g.fillRect(x+images[3]->getWidth(),y+images[1]->getHeight(),width-images[3]->getWidth()-images[5]->getWidth(), height-images[1]->getHeight()-images[7]->getHeight());
g.setTiledImageFill(*images[1],x+images[0]->getWidth(),y,opacity);
g.fillRect(x+images[0]->getWidth(),y,width-images[0]->getWidth()-images[2]->getWidth(),images[1]->getHeight());
g.setTiledImageFill(*images[7],x+images[6]->getWidth(),y+height-images[7]->getHeight(),opacity);
g.fillRect(x+images[6]->getWidth(),y+height-images[7]->getHeight(),width-images[6]->getWidth()-images[8]->getWidth(),images[7]->getHeight());
g.setTiledImageFill(*images[3],x,y+images[0]->getHeight(),opacity);
g.fillRect(x,y+images[0]->getHeight(),images[3]->getWidth(),height-images[0]->getHeight()-images[6]->getHeight());
g.setTiledImageFill(*images[5],x+width-images[5]->getWidth(),y,opacity);
g.fillRect(x+width-images[5]->getWidth(),y+images[2]->getHeight(),images[5]->getWidth(),height-images[2]->getHeight()-images[8]->getHeight());
g.setTiledImageFill(*images[0],x,y,opacity);
g.fillRect(x,y,images[0]->getWidth(),images[0]->getHeight());
g.setTiledImageFill(*images[2],x+width-images[2]->getWidth(),y,opacity);
g.fillRect(x+width-images[2]->getWidth(),y,images[2]->getWidth(),images[2]->getHeight());
g.setTiledImageFill(*images[6],x,y+height-images[6]->getHeight(),opacity);
g.fillRect(x,y+height-images[6]->getHeight(),images[6]->getWidth(),images[6]->getHeight());
g.setTiledImageFill(*images[8],x+width-images[8]->getWidth(),y+height-images[8]->getHeight(),opacity);
g.fillRect(x+width-images[8]->getWidth(),y+height-images[8]->getHeight(),images[8]->getWidth(),images[8]->getHeight());
}
//-----------------------------------------------------------------------------------------------------------
NewLookAndFeel::NewLookAndFeel()
{
}
//-----------------------------------------------------------------------------------------------------------
NewLookAndFeel::~NewLookAndFeel()
{
setDefaultLookAndFeel (0);
}
juce_ImplementSingleton (NewLookAndFeel)[/code]