Image midp2ImageBuffer = Image.createImage( fWidth + this.size*2, fHeight + this.size*2);
Image midp2ImageBuffer = Image.createImage( newWidth, newHeight);
	public void drawString(String text, int textColor, int x, int y,			int orientation, Graphics g) 	{		// calculate imagesize		Font font = g.getFont();		int fHeight = font.getHeight();		int fWidth = font.stringWidth( text );		int startX = getLeftX( x, orientation, fWidth );		int startY = getTopY( y, orientation, fHeight, font.getBaselinePosition() );				// additional Margin for the image because of the shadow		int iLeft = this.size-this.xOffset<0 ? 0 : this.size-this.xOffset;		int iTop = this.size-this.yOffset<0 ? 0 : this.size-this.yOffset;				// offset of an invisble area caused by negative (x,y)		int invX=Math.max(0, -(startX-iLeft));		int invY=Math.max(0, -(startY-iTop));				// check whether the string has to be rerendered		if (this.lastText!=text || this.lastTextColor != textColor) {			this.lastText=text;			this.lastTextColor=textColor;						// create Image, Graphics, ARGB-buffer			Graphics bufferG;			Image midp2ImageBuffer = Image.createImage( fWidth + this.size*2, fHeight + this.size*2); // iLeft+iRight=2*size??			bufferG = midp2ImageBuffer.getGraphics();			this.localRgbBuffer = new int[ (fWidth + this.size*2) * (fHeight + this.size*2) ];						// draw pseudo transparent Background			bufferG.setColor( CLEAR_COLOR );			bufferG.fillRect(0,0,fWidth + this.size*2, fHeight + this.size*2);						// draw String on Graphics			bufferG.setFont(font);			bufferG.setColor( textColor );			bufferG.drawString(text,iLeft,iTop, Graphics.LEFT | Graphics.TOP);						// get RGB-Data from Image			midp2ImageBuffer.getRGB(this.localRgbBuffer,0,fWidth + this.size*2, 0, 0, fWidth + this.size*2, fHeight + this.size*2);						// check clearColor			int[] clearColorArray = new int[1]; 			midp2ImageBuffer.getRGB(clearColorArray, 0, 1, 0, 0, 1, 1 );			this.clearColor = clearColorArray[0];						// transform RGB-Data			for (int i=0; i<this.localRgbBuffer.length;i++){				//	 perform Transparency				if  (this.localRgbBuffer[i] == this.clearColor){					this.localRgbBuffer[i] = 0x00000000;				}			}						DrawUtil.dropShadow(this.localRgbBuffer,fWidth + this.size*2,fHeight + this.size*2,this.xOffset, this.yOffset, this.size,this.innerColor, this.outerColor);					}				// draw RGB-Data		g.drawRGB(this.localRgbBuffer,invY*(fWidth + this.size*2)+invX,fWidth + this.size*2, ( startX-iLeft+invX<=0 ? 0 :startX-iLeft+invX), ( startY-iTop+invY<=0 ? 0 :startY-iTop+invY) , fWidth + this.size*2-invX, fHeight + this.size*2-invY, true);			}