Bitmap: Use PixelStore to avoid aux clip surface
This commit is contained in:
		
							parent
							
								
									397856089d
								
							
						
					
					
						commit
						9e3d7f579c
					
				
					 1 changed files with 3 additions and 13 deletions
				
			
		| 
						 | 
					@ -857,32 +857,22 @@ void Bitmap::drawText(const IntRect &rect, const char *str, int align)
 | 
				
			||||||
				if (inters.w != txtRect.w || inters.h != txtRect.h)
 | 
									if (inters.w != txtRect.w || inters.h != txtRect.h)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					/* Clip the text surface */
 | 
										/* Clip the text surface */
 | 
				
			||||||
					SDL_PixelFormat *form = txtSurf->format;
 | 
					 | 
				
			||||||
					SDL_Surface *clip =
 | 
					 | 
				
			||||||
					        SDL_CreateRGBSurface(0, inters.w, inters.h,
 | 
					 | 
				
			||||||
					                             form->BitsPerPixel,
 | 
					 | 
				
			||||||
					                             form->Rmask,
 | 
					 | 
				
			||||||
					                             form->Gmask,
 | 
					 | 
				
			||||||
					                             form->Bmask,
 | 
					 | 
				
			||||||
					                             form->Amask);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					SDL_Rect clipSrc = inters;
 | 
										SDL_Rect clipSrc = inters;
 | 
				
			||||||
					clipSrc.x -= txtRect.x;
 | 
										clipSrc.x -= txtRect.x;
 | 
				
			||||||
					clipSrc.y -= txtRect.y;
 | 
										clipSrc.y -= txtRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					SDL_BlitSurface(txtSurf, &clipSrc, clip, 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					posRect.x = inters.x;
 | 
										posRect.x = inters.x;
 | 
				
			||||||
					posRect.y = inters.y;
 | 
										posRect.y = inters.y;
 | 
				
			||||||
					posRect.w = inters.w;
 | 
										posRect.w = inters.w;
 | 
				
			||||||
					posRect.h = inters.h;
 | 
										posRect.h = inters.h;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					SDL_FreeSurface(txtSurf);
 | 
										PixelStore::setupSubImage(txtSurf->w, clipSrc.x, clipSrc.y);
 | 
				
			||||||
					txtSurf = clip;
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				TEX::bind(p->gl.tex);
 | 
									TEX::bind(p->gl.tex);
 | 
				
			||||||
				TEX::uploadSubImage(posRect.x, posRect.y, posRect.w, posRect.h, txtSurf->pixels, GL_BGRA_EXT);
 | 
									TEX::uploadSubImage(posRect.x, posRect.y, posRect.w, posRect.h, txtSurf->pixels, GL_BGRA_EXT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									PixelStore::reset();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue