dfccd78aa6
Calling QOpenGL2GradientCache::getBuffer() will generate the texture the first time, calling glBindTexture in the process. We did this without first ensuring that the right texture unit was active, resulting in the generated gradient texture binding onto the glyph cache mask unit. We now provide a specialization of bindTexture for a QGradient, which ensures that the right unit is active before calling getBuffer(). Unfortunately we have no way of knowing if the result of getBuffer() was a texture that was already bound, or if we need to bind the result, which means we have to do an unconditional bindTexture of the resulting texture ID. This means double-bind for the initial texture generation, but this was already an issue in the original code. Task-number: QTBUG-43039 Task-number: QTBUG-41244 Change-Id: I20c9b795c8c14f8d58be2b60a284c5a060705ec0 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
162 lines
3.6 KiB
Plaintext
162 lines
3.6 KiB
Plaintext
# Version: 1
|
|
|
|
drawText -5 5 "Text that is drawn outside the bounds..."
|
|
|
|
translate 20 20
|
|
begin_block text_drawing
|
|
save
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 20 "sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawText 0 40 "sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawText 0 60 "sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawText 0 80 "sansserif 10pt, bold italic"
|
|
|
|
|
|
translate 0 100
|
|
setPen #7fff0000
|
|
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 20 "alpha sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawText 0 40 "alpha sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawText 0 60 "alpha sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawText 0 80 "alpha sansserif 10pt, bold italic"
|
|
|
|
|
|
translate 0 100
|
|
setPen black
|
|
save
|
|
scale 0.9 0.9
|
|
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 20 "scaled sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawText 0 40 "scaled sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawText 0 60 "scaled sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawText 0 80 "scaled sansserif 10pt, bold italic"
|
|
restore
|
|
|
|
translate 200 200
|
|
setPen black
|
|
save
|
|
scale -1 -1
|
|
|
|
setFont "sansserif" 10 normal
|
|
drawStaticText 0 20 "flipped sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawStaticText 0 40 "flipped sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawStaticText 0 60 "flipped sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawStaticText 0 80 "flipped sansserif 10pt, bold italic"
|
|
restore
|
|
|
|
translate -200 20
|
|
setPen black
|
|
save
|
|
translate 200 90
|
|
rotate 185
|
|
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 20 "scaled sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawText 0 40 "scaled sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawText 0 60 "scaled sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawText 0 80 "scaled sansserif 10pt, bold italic"
|
|
restore
|
|
|
|
translate 0 100
|
|
gradient_appendStop 0 red
|
|
gradient_appendStop 0.5 #00ff00
|
|
gradient_appendStop 1 blue
|
|
gradient_setLinear 0 0 200 0
|
|
setPen brush
|
|
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 0 "gradient sansserif 10pt, normal"
|
|
|
|
setFont "sansserif" 12 normal
|
|
drawText 0 20 "gradient sansserif 12pt, normal"
|
|
|
|
setFont "sansserif" 12 bold
|
|
drawText 0 40 "gradient sansserif 12pt, bold"
|
|
|
|
setFont "sansserif" 10 bold italic
|
|
drawText 0 60 "gradient sansserif 10pt, bold italic"
|
|
restore
|
|
end_block
|
|
|
|
translate 250 0
|
|
drawText 25 640 "clipped to rectangle"
|
|
save
|
|
setPen #3f000000
|
|
setBrush nobrush
|
|
drawRect 20 0 100 620
|
|
setClipRect 20 0 100 620
|
|
setPen black
|
|
repeat_block text_drawing
|
|
restore
|
|
|
|
translate 150 0
|
|
drawText 25 640 "clipped to path"
|
|
save
|
|
path_moveTo clip 20 0
|
|
path_cubicTo clip 0 200 40 400 20 400
|
|
path_lineTo clip 30 620
|
|
path_lineTo clip 30 0
|
|
path_lineTo clip 40 0
|
|
path_lineTo clip 40 620
|
|
path_lineTo clip 120 620
|
|
path_lineTo clip 120 0
|
|
path_lineTo clip 20 0
|
|
setPen #3f000000
|
|
setBrush nobrush
|
|
drawPath clip
|
|
setClipPath clip
|
|
setPen black
|
|
repeat_block text_drawing
|
|
restore
|
|
|
|
translate 150 0
|
|
save
|
|
setPen black
|
|
setFont "sansserif" 10 normal
|
|
drawText 0 20 "testing glyph cache textures"
|
|
|
|
# Important that this gradient doesn't match any earlier
|
|
# gradients, so that it's not cached from before.
|
|
gradient_clearStops
|
|
gradient_appendStop 0 blue
|
|
gradient_appendStop 0.5 #00ff00
|
|
gradient_appendStop 1 red
|
|
gradient_setLinear 0 0 100 0
|
|
setPen nopen
|
|
drawRect 0 30 100 20
|
|
|
|
setPen black
|
|
drawText 0 70 "testing glyph cache textures"
|
|
restore |