mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-02-25 19:50:49 +01:00
Only tile big (> Qt OpenGL cache size / 2) images
This commit is contained in:
parent
c114383c85
commit
84a592998d
@ -2,6 +2,11 @@
|
|||||||
#include "image.h"
|
#include "image.h"
|
||||||
|
|
||||||
#define TILE_SIZE 256
|
#define TILE_SIZE 256
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|
||||||
|
#define OPENGL_SIZE_LIMIT 536870912 /* 512MB */
|
||||||
|
#else
|
||||||
|
#define OPENGL_SIZE_LIMIT 134217728 /* 128MB */
|
||||||
|
#endif
|
||||||
|
|
||||||
void Image::draw(QPainter *painter, const QRectF &rect, Map::Flags flags)
|
void Image::draw(QPainter *painter, const QRectF &rect, Map::Flags flags)
|
||||||
{
|
{
|
||||||
@ -11,7 +16,7 @@ void Image::draw(QPainter *painter, const QRectF &rect, Map::Flags flags)
|
|||||||
/* When OpenGL is used, big images are rendered incredibly slow or not at
|
/* When OpenGL is used, big images are rendered incredibly slow or not at
|
||||||
all using the QPainter::drawImage() function with a source rect set. So
|
all using the QPainter::drawImage() function with a source rect set. So
|
||||||
we have to tile the image ourself before it can be drawn. */
|
we have to tile the image ourself before it can be drawn. */
|
||||||
if (flags & Map::OpenGL) {
|
if (flags & Map::OpenGL && _img.sizeInBytes() > OPENGL_SIZE_LIMIT) {
|
||||||
for (int i = sr.left()/TILE_SIZE; i <= sr.right()/TILE_SIZE; i++) {
|
for (int i = sr.left()/TILE_SIZE; i <= sr.right()/TILE_SIZE; i++) {
|
||||||
for (int j = sr.top()/TILE_SIZE; j <= sr.bottom()/TILE_SIZE; j++) {
|
for (int j = sr.top()/TILE_SIZE; j <= sr.bottom()/TILE_SIZE; j++) {
|
||||||
QPoint tl(i * TILE_SIZE, j * TILE_SIZE);
|
QPoint tl(i * TILE_SIZE, j * TILE_SIZE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user