NOTE: this is most probably broken, better keep hands off here. --- TEWidget.C Wed May 6 19:05:54 1998 +++ TEWidget.C-withANY_FONT Wed May 6 19:02:21 1998 @@ -184,6 +184,9 @@ QPainter paint; setUpdatesEnabled(FALSE); paint.begin( this ); +#ifdef ANY_FONT + paint.setBackgroundMode( TransparentMode ); +#endif QPoint tL = contentsRect().topLeft(); int tLx = tL.x(); @@ -225,6 +228,14 @@ disstr[len] = ext[x+len].c; } //printf("draw: %d %d %d\n",y,x,len); +#ifdef ANY_FONT + cb = ext[x].b; + if (!pm || cb != DEFAULT_BACK_COLOR) + paint.fillRect(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h, + color_table[cb]); + else + erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h); +#else if (ext[x].b != cb) { cb = ext[x].b; @@ -238,12 +249,23 @@ } if (pm && cb == DEFAULT_BACK_COLOR) erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h); - paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len); - if (cr & RE_BOLD) - paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len); - if (cr & RE_UNDERLINE) - paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1, - blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 ); +#endif +#ifdef ANY_FONT + if (fixed_font) + { +#endif + paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len); + if (cr & RE_BOLD) + paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len); + if (cr & RE_UNDERLINE) + paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1, + blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 ); +#ifdef ANY_FONT + } + else // proportional font + for (int i = 0; i < len; i++) + paint.drawText(blX+tLx+font_w*(x+i),bY+tLy+font_a+font_h*y, disstr+i,1); +#endif x += len - 1; } } @@ -310,6 +332,13 @@ { disstr[len] = image[loc(x+len,y)].c; len += 1; } +#ifdef ANY_FONT + if (!pm || cb != DEFAULT_BACK_COLOR) + paint.fillRect(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h, + color_table[cb]); + else + erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h); +#else if (!pm || cb != DEFAULT_BACK_COLOR) { if (blinking) @@ -326,14 +355,25 @@ paint.setBackgroundMode( TransparentMode ); erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h); } +#endif if (!blinking || !(cr & RE_BLINK)) { - paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len); - if (cr & RE_BOLD) - paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len); - if (cr & RE_UNDERLINE) - paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1, - blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 ); +#ifdef ANY_FONT + if (fixed_font) + { +#endif + paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len); + if (cr & RE_BOLD) + paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len); + if (cr & RE_UNDERLINE) + paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1, + blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 ); +#ifdef ANY_FONT + } + else // proportional font + for (int i = 0; i < len; i++) + paint.drawText(blX+tLx+font_w*(x+i),bY+tLy+font_a+font_h*y, disstr+i,1); +#endif } x += len - 1; } @@ -458,6 +498,14 @@ font_h = fontMetrics().height(); font_w = fontMetrics().maxWidth(); font_a = fontMetrics().ascent(); +#ifdef ANY_FONT + //FIXME: this is broken. QT returns false for "9x15"! + // anyway, the option is deactivated by default + // and the bug will only harm a speed penalty. + fixed_font = fontInfo().fixedPitch(); +#else + fixed_font = TRUE; +#endif setMinimumSize(blX+brX+5*font_w,2*bY+5*font_h);