midp2ImageBuffer.getRGB(this.localRgbBuffer,0,fWidth + radius*2, 0, 0, fWidth + radius*2, fHeight + radius*2);
midp2ImageBuffer.getRGB(this.argbBuffer,0,newWidth, 0, 0, newWidth, newHeight);
	public void drawString(String text, int textColor, int x, int y,			int orientation, Graphics g) {				final int radius=3+1;		//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() );				// offset of an invisble area caused by negative (x,y)		int invX=Math.max(0, -(startX-radius));		int invY=Math.max(0, -(startY-radius));				// check whether the string has to be rerendered		if (lastText!=text || lastTextColor != textColor) {			this.lastText=text;			this.lastTextColor=textColor;						// create Image, Graphics, ARGB-buffer			Graphics bufferG;			Image midp2ImageBuffer = Image.createImage( fWidth + radius*2, fHeight + radius*2);			bufferG = midp2ImageBuffer.getGraphics();			this.localRgbBuffer = new int[ (fWidth + radius*2) * (fHeight + radius*2) ];						// draw pseudo transparent Background			bufferG.setColor( CLEAR_COLOR );			bufferG.fillRect(0,0,fWidth + radius*2, fHeight + radius*2);						// draw String on Graphics			bufferG.setFont(font);						// draw outlineText			bufferG.setColor( this.outerColor );			bufferG.drawString(text,radius-1,radius-1, Graphics.LEFT | Graphics.TOP);			bufferG.drawString(text,radius-1,radius+1, Graphics.LEFT | Graphics.TOP);			bufferG.drawString(text,radius+1,radius-1, Graphics.LEFT | Graphics.TOP);			bufferG.drawString(text,radius+1,radius+1, Graphics.LEFT | Graphics.TOP);						bufferG.setColor( this.innerColor );			bufferG.drawString(text,radius,radius, Graphics.LEFT | Graphics.TOP);						// get RGB-Data from Image			midp2ImageBuffer.getRGB(this.localRgbBuffer,0,fWidth + radius*2, 0, 0, fWidth + radius*2, fHeight + radius*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;				}			}						// perform a gaussain convolution, with a 5x5 matrix			DrawUtil.applyFilter(					DrawUtil.FILTER_GAUSSIAN_3					,150,this.localRgbBuffer,fWidth + radius*2,fHeight + radius*2);		}				// draw RGB-Data		g.drawRGB(this.localRgbBuffer, invY * ( fWidth + radius*2)+invX ,fWidth + radius*2, ( startX-radius+invX<=0 ? 0 :startX-radius+invX), ( startY-radius+invY<=0 ? 0 :startY-radius+invY) , fWidth + radius*2-invX, fHeight + radius*2-invY, true);				g.setColor( textColor );		g.drawString(text,startX,startY, Graphics.LEFT | Graphics.TOP);	}