diff options
| author | Neil <nyamatongwe@gmail.com> | 2015-04-22 09:22:05 +1000 | 
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2015-04-22 09:22:05 +1000 | 
| commit | e7b1483bf0eb8c1517322f1b49e5293d7f43c9d1 (patch) | |
| tree | 7579d2e0ec3ef933101816a16021bfdb2d349c80 /qt/ScintillaEditBase/PlatQt.cpp | |
| parent | 9eb90ce37cb4beb01684e41ffb1eea740f3032ec (diff) | |
| download | scintilla-mirror-e7b1483bf0eb8c1517322f1b49e5293d7f43c9d1.tar.gz | |
Use fractional positioning calls and avoid rounding to ensure consistency.
From Jason Haslam.
Diffstat (limited to 'qt/ScintillaEditBase/PlatQt.cpp')
| -rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 36 | 
1 files changed, 17 insertions, 19 deletions
| diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index 275cb6e79..38f1d16d1 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -293,15 +293,13 @@ void SurfaceImpl::RectangleDraw(PRectangle rc,  {  	PenColour(fore);  	BrushColour(back); -	QRect rect = QRect(rc.left, rc.top, rc.Width() - 1, rc.Height() - 1); +	QRectF rect(rc.left, rc.top, rc.Width() - 1, rc.Height() - 1);  	GetPainter()->drawRect(rect);  }  void SurfaceImpl::FillRectangle(PRectangle rc, ColourDesired back)  { -	BrushColour(back); -	GetPainter()->setPen(Qt::NoPen); -	GetPainter()->drawRect(QRectFromPRect(rc)); +	GetPainter()->fillRect(QRectFFromPRect(rc), QColorFromCA(back));  }  void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) @@ -329,7 +327,7 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc,  {  	PenColour(fore);  	BrushColour(back); -	GetPainter()->drawRoundRect(QRectFromPRect(rc)); +	GetPainter()->drawRoundRect(QRectFFromPRect(rc));  }  void SurfaceImpl::AlphaRectangle(PRectangle rc, @@ -350,7 +348,7 @@ void SurfaceImpl::AlphaRectangle(PRectangle rc,  	// A radius of 1 shows no curve so add 1  	qreal radius = cornerSize+1; -	QRect rect(rc.left, rc.top, rc.Width() - 1, rc.Height() - 1); +	QRectF rect(rc.left, rc.top, rc.Width() - 1, rc.Height() - 1);  	GetPainter()->drawRoundedRect(rect, radius, radius);  } @@ -378,7 +376,7 @@ void SurfaceImpl::Ellipse(PRectangle rc,  {  	PenColour(fore);  	BrushColour(back); -	GetPainter()->drawEllipse(QRectFromPRect(rc)); +	GetPainter()->drawEllipse(QRectFFromPRect(rc));  }  void SurfaceImpl::Copy(PRectangle rc, Point from, Surface &surfaceSource) @@ -436,7 +434,7 @@ void SurfaceImpl::DrawTextTransparent(PRectangle rc,  void SurfaceImpl::SetClip(PRectangle rc)  { -	GetPainter()->setClipRect(QRectFromPRect(rc)); +	GetPainter()->setClipRect(QRectFFromPRect(rc));  }  static size_t utf8LengthFromLead(unsigned char uch) @@ -475,11 +473,11 @@ void SurfaceImpl::MeasureWidths(Font &font,  			int codeUnits = (lenChar < 4) ? 1 : 2;  			qreal xPosition = tl.cursorToX(ui+codeUnits);  			for (unsigned int bytePos=0; (bytePos<lenChar) && (i<len); bytePos++) { -				positions[i++] = qRound(xPosition); +				positions[i++] = xPosition;  			}  			ui += codeUnits;  		} -		int lastPos = 0; +		XYPOSITION lastPos = 0;  		if (i > 0)  			lastPos = positions[i-1];  		while (i<len) { @@ -492,21 +490,21 @@ void SurfaceImpl::MeasureWidths(Font &font,  			size_t lenChar = Platform::IsDBCSLeadByte(codePage, s[i]) ? 2 : 1;  			qreal xPosition = tl.cursorToX(ui+1);  			for (unsigned int bytePos=0; (bytePos<lenChar) && (i<len); bytePos++) { -				positions[i++] = qRound(xPosition); +				positions[i++] = xPosition;  			}  			ui++;  		}  	} else {  		// Single byte encoding  		for (int i=0; i<len; i++) { -			positions[i] = qRound(tl.cursorToX(i+1)); +			positions[i] = tl.cursorToX(i+1);  		}  	}  }  XYPOSITION SurfaceImpl::WidthText(Font &font, const char *s, int len)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	SetCodec(font);  	QString string = codec->toUnicode(s, len);  	return metrics.width(string); @@ -514,19 +512,19 @@ XYPOSITION SurfaceImpl::WidthText(Font &font, const char *s, int len)  XYPOSITION SurfaceImpl::WidthChar(Font &font, char ch)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	return metrics.width(ch);  }  XYPOSITION SurfaceImpl::Ascent(Font &font)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	return metrics.ascent();  }  XYPOSITION SurfaceImpl::Descent(Font &font)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	// Qt returns 1 less than true descent  	// See: QFontEngineWin::descent which says:  	// ### we subtract 1 to even out the historical +1 in QFontMetrics's @@ -541,19 +539,19 @@ XYPOSITION SurfaceImpl::InternalLeading(Font & /* font */)  XYPOSITION SurfaceImpl::ExternalLeading(Font &font)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	return metrics.leading();  }  XYPOSITION SurfaceImpl::Height(Font &font)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	return metrics.height();  }  XYPOSITION SurfaceImpl::AverageCharWidth(Font &font)  { -	QFontMetrics metrics(*FontPointer(font), device); +	QFontMetricsF metrics(*FontPointer(font), device);  	return metrics.averageCharWidth();  } | 
