# Pastebin GPmO7I4h 118 IntRect tileRect = tile()->image()->rect(); 119 if (tileRect.width() > patternBoundaries().width() || tileRect.height() > patternBoundaries().height()) { 120 // Draw the first cell of the pattern manually to support overflow="visible" on all platforms. 121 int tileWidth = static_cast(patternBoundaries().width() + 0.5f); 122 int tileHeight = static_cast(patternBoundaries().height() + 0.5f); 123 std::auto_ptr tileImage = ImageBuffer::create(IntSize(tileWidth, tileHeight), false); 124 125 GraphicsContext* tileImageContext = tileImage->context(); 126 127 int numY = static_cast(ceilf(tileRect.height() / tileHeight)) + 1; 128 int numX = static_cast(ceilf(tileRect.width() / tileWidth)) + 1; 129 130 tileImageContext->save(); 131 tileImageContext->translate(-patternBoundaries().width() * numX, -patternBoundaries().height() * numY); 132 for (int i = numY; i > 0; i--) { 133 tileImageContext->translate(0, patternBoundaries().height()); 134 for (int j = numX; j > 0; j--) { 135 tileImageContext->translate(patternBoundaries().width(), 0); 136 tileImageContext->drawImage(tile()->image(), tileRect, tileRect); 137 } 138 tileImageContext->translate(-patternBoundaries().width() * numX, 0); 139 } 140 tileImageContext->restore(); 141 142 m_pattern = Pattern::create(tileImage->image(), true, true); 143 } 144 else 145 m_pattern = Pattern::create(tile()->image(), true, true);