本文整理汇总了C++中scaledSize函数的典型用法代码示例。如果您正苦于以下问题:C++ scaledSize函数的具体用法?C++ scaledSize怎么用?C++ scaledSize使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了scaledSize函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: readColorProfile
void WEBPImageDecoder::applyColorProfile(const uint8_t* data, size_t size, ImageFrame& buffer)
{
int width;
int decodedHeight;
if (!WebPIDecGetRGB(m_decoder, &decodedHeight, &width, 0, 0))
return; // See also https://bugs.webkit.org/show_bug.cgi?id=74062
if (decodedHeight <= 0)
return;
if (!m_haveReadProfile) {
readColorProfile(data, size);
m_haveReadProfile = true;
}
ASSERT(width == scaledSize().width());
ASSERT(decodedHeight <= scaledSize().height());
for (int y = m_decodedHeight; y < decodedHeight; ++y) {
uint8_t* row = reinterpret_cast<uint8_t*>(buffer.getAddr(0, y));
if (qcms_transform* transform = colorTransform())
qcms_transform_data_type(transform, row, row, width, QCMS_OUTPUT_RGBX);
uint8_t* pixel = row;
for (int x = 0; x < width; ++x, pixel += 4)
buffer.setRGBA(x, y, pixel[0], pixel[1], pixel[2], pixel[3]);
}
m_decodedHeight = decodedHeight;
}
开发者ID:CannedFish,项目名称:webkitgtk,代码行数:28,代码来源:WEBPImageDecoder.cpp
示例2: outputScanlines
bool JPEGImageDecoder::outputScanlines()
{
if (m_frameBufferCache.isEmpty())
return false;
// Initialize the framebuffer if needed.
RGBA32Buffer& buffer = m_frameBufferCache[0];
if (buffer.status() == RGBA32Buffer::FrameEmpty) {
if (!buffer.setSize(scaledSize().width(), scaledSize().height()))
return setFailed();
buffer.setStatus(RGBA32Buffer::FramePartial);
buffer.setHasAlpha(false);
buffer.setColorProfile(m_colorProfile);
// For JPEGs, the frame always fills the entire image.
buffer.setRect(IntRect(IntPoint(), size()));
}
jpeg_decompress_struct* info = m_reader->info();
JSAMPARRAY samples = m_reader->samples();
while (info->output_scanline < info->output_height) {
// jpeg_read_scanlines will increase the scanline counter, so we
// save the scanline before calling it.
int sourceY = info->output_scanline;
/* Request one scanline. Returns 0 or 1 scanlines. */
if (jpeg_read_scanlines(info, samples, 1) != 1)
return false;
int destY = scaledY(sourceY);
if (destY < 0)
continue;
int width = m_scaled ? m_scaledColumns.size() : info->output_width;
for (int x = 0; x < width; ++x) {
JSAMPLE* jsample = *samples + (m_scaled ? m_scaledColumns[x] : x) * ((info->out_color_space == JCS_RGB) ? 3 : 4);
if (info->out_color_space == JCS_RGB)
buffer.setRGBA(x, destY, jsample[0], jsample[1], jsample[2], 0xFF);
else if (info->out_color_space == JCS_CMYK) {
// Source is 'Inverted CMYK', output is RGB.
// See: http://www.easyrgb.com/math.php?MATH=M12#text12
// Or: http://www.ilkeratalay.com/colorspacesfaq.php#rgb
// From CMYK to CMY:
// X = X * (1 - K ) + K [for X = C, M, or Y]
// Thus, from Inverted CMYK to CMY is:
// X = (1-iX) * (1 - (1-iK)) + (1-iK) => 1 - iX*iK
// From CMY (0..1) to RGB (0..1):
// R = 1 - C => 1 - (1 - iC*iK) => iC*iK [G and B similar]
unsigned k = jsample[3];
buffer.setRGBA(x, destY, jsample[0] * k / 255, jsample[1] * k / 255, jsample[2] * k / 255, 0xFF);
} else {
ASSERT_NOT_REACHED();
return setFailed();
}
}
}
return true;
}
开发者ID:dslab-epfl,项目名称:warr,代码行数:58,代码来源:JPEGImageDecoder.cpp
示例3: ir
QImage NemoThumbnailProvider::generateThumbnail(const QString &id, const QByteArray &hashData, const QSize &requestedSize, bool crop)
{
QImage img;
QSize originalSize;
QByteArray format;
// image was not in cache thus we read it
QImageReader ir(id);
if (!ir.canRead())
return img;
originalSize = ir.size();
format = ir.format();
if (originalSize != requestedSize && originalSize.isValid()) {
if (crop) {
// scales arbitrary sized source image to requested size scaling either up or down
// keeping aspect ratio of the original image intact by maximizing either width or height
// and cropping the rest of the image away
QSize scaledSize(originalSize);
// now scale it filling the original rectangle by keeping aspect ratio, but expand if needed.
scaledSize.scale(requestedSize, Qt::KeepAspectRatioByExpanding);
// set the adjusted clipping rectangle in the center of the scaled image
QPoint center((scaledSize.width() - 1) / 2, (scaledSize.height() - 1) / 2);
QRect cr(0,0,requestedSize.width(), requestedSize.height());
cr.moveCenter(center);
ir.setScaledClipRect(cr);
// set requested target size of a thumbnail
ir.setScaledSize(scaledSize);
} else {
// Maintains correct aspect ratio without cropping, as such the final image may
// be smaller than requested in one dimension.
QSize scaledSize(originalSize);
scaledSize.scale(requestedSize, Qt::KeepAspectRatio);
ir.setScaledSize(scaledSize);
}
}
img = ir.read();
NemoImageMetadata meta(id, format);
if (meta.orientation() != NemoImageMetadata::TopLeft)
img = rotate(img, meta.orientation());
// write the scaled image to cache
if (meta.orientation() != NemoImageMetadata::TopLeft ||
(originalSize != requestedSize && originalSize.isValid())) {
writeCacheFile(hashData, img);
}
TDEBUG() << Q_FUNC_INFO << "Wrote " << id << " to cache";
return img;
}
开发者ID:mholo65,项目名称:harbour-filters,代码行数:55,代码来源:nemothumbnailprovider.cpp
示例4: outputScanlines
bool JPEGImageDecoder::outputScanlines()
{
if (m_frameBufferCache.isEmpty())
return false;
// Initialize the framebuffer if needed.
ImageFrame& buffer = m_frameBufferCache[0];
if (buffer.status() == ImageFrame::FrameEmpty) {
if (!buffer.setSize(scaledSize().width(), scaledSize().height()))
return setFailed();
buffer.setStatus(ImageFrame::FramePartial);
// The buffer is transparent outside the decoded area while the image is
// loading. The completed image will be marked fully opaque in jpegComplete().
buffer.setHasAlpha(true);
buffer.setColorProfile(m_colorProfile);
// For JPEGs, the frame always fills the entire image.
buffer.setOriginalFrameRect(IntRect(IntPoint(), size()));
}
jpeg_decompress_struct* info = m_reader->info();
#if defined(TURBO_JPEG_RGB_SWIZZLE)
if (!m_scaled && turboSwizzled(info->out_color_space)) {
while (info->output_scanline < info->output_height) {
unsigned char* row = reinterpret_cast<unsigned char*>(buffer.getAddr(0, info->output_scanline));
if (jpeg_read_scanlines(info, &row, 1) != 1)
return false;
#if USE(QCMSLIB)
if (qcms_transform* transform = m_reader->colorTransform())
qcms_transform_data_type(transform, row, row, info->output_width, rgbOutputColorSpace() == JCS_EXT_BGRA ? QCMS_OUTPUT_BGRX : QCMS_OUTPUT_RGBX);
#endif
}
return true;
}
#endif
switch (info->out_color_space) {
// The code inside outputScanlines<int, bool> will be executed
// for each pixel, so we want to avoid any extra comparisons there.
// That is why we use template and template specializations here so
// the proper code will be generated at compile time.
case JCS_RGB:
return outputScanlines<JCS_RGB>(buffer);
case JCS_CMYK:
return outputScanlines<JCS_CMYK>(buffer);
default:
ASSERT_NOT_REACHED();
}
return setFailed();
}
开发者ID:AndriyKalashnykov,项目名称:webkit,代码行数:52,代码来源:JPEGImageDecoder.cpp
示例5: qMax
QSize mutableSquareImageContainer::setScaledHeight(int heightHint) {
if (scaledSize().isEmpty()) {
const int newSquareSize = qMax(heightHint/heightSquareCount_, 2);
const int newWidth = newSquareSize * widthSquareCount_;
const int newHeight = newSquareSize * heightSquareCount_;
const QSize newSize(newWidth, newHeight);
imageContainer::setScaledSize(newSize);
return newSize;
}
else {
return scaledSize();
}
}
开发者ID:craftoid,项目名称:Cstitch,代码行数:14,代码来源:squareImageContainer.cpp
示例6: scaledSize
void QGLTextureCubePrivate::bindImages(QGLTexture2DTextureInfo *info)
{
QSize scaledSize(size);
#if defined(QT_OPENGL_ES_2)
if ((bindOptions & QGLTexture2D::MipmapBindOption) ||
horizontalWrap != QGL::ClampToEdge ||
verticalWrap != QGL::ClampToEdge) {
// ES 2.0 does not support NPOT textures when mipmaps are in use,
// or if the wrap mode isn't ClampToEdge.
scaledSize = QGL::nextPowerOfTwo(scaledSize);
}
#endif
// Handle the first face.
if (!image.isNull())
info->tex.uploadFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X, image, scaledSize);
else if (size.isValid())
info->tex.createFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X, scaledSize);
// Handle the other faces.
for (int face = 1; face < 6; ++face) {
if (!otherImages[face - 1].isNull()) {
info->tex.uploadFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face,
otherImages[face - 1], scaledSize);
} else {
info->tex.createFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, scaledSize);
}
}
}
开发者ID:Distrotech,项目名称:qt3d,代码行数:29,代码来源:qgltexturecube.cpp
示例7: scaledSize
FloatSize VisualViewport::visibleSize() const
{
FloatSize scaledSize(m_size);
scaledSize.expand(0, m_topControlsAdjustment);
scaledSize.scale(1 / m_scale);
return scaledSize;
}
开发者ID:shaoboyan,项目名称:chromium-crosswalk,代码行数:7,代码来源:VisualViewport.cpp
示例8: colors
QImage mutableSquareImageContainer::scaledImage() const {
QHash<triC, QImage> colorSquares;
const QVector<triC>& squareColors = colors();
const int curDimension = scaledDimension();
const grid baseImage(image(), originalDimension_);
QImage squareImage(curDimension, curDimension, QImage::Format_RGB32);
for (int i = 0, size = squareColors.size(); i < size; ++i) {
const triC& thisImageColor = squareColors[i];
squareImage.fill(thisImageColor.qrgb());
colorSquares[thisImageColor] = squareImage;
}
QImage returnImage(scaledSize(), QImage::Format_RGB32);
QPainter painter(&returnImage);
for (int yBox = 0; yBox < heightSquareCount_; ++yBox) {
for (int xBox = 0; xBox < widthSquareCount_; ++xBox) {
const triC& thisSquareColor =
baseImage(xBox*originalDimension_, yBox*originalDimension_);
painter.drawImage(QPoint(xBox*curDimension, yBox*curDimension),
colorSquares[thisSquareColor]);
}
}
return returnImage;
}
开发者ID:craftoid,项目名称:Cstitch,代码行数:26,代码来源:squareImageContainer.cpp
示例9: setScaledWidth
QSize mutableSquareImageContainer::setScaledSize(const QSize& sizeHint) {
if (sizeHint.isEmpty()) {
imageContainer::setScaledSize(sizeHint);
return sizeHint;
}
// adjust sizeHint (smaller) to make the dimensions multiples of a
// square size
// yup - we ignore the sizeHint height
if (scaledSize().isEmpty()) {
return setScaledWidth(sizeHint.width());
}
else {
return scaledSize();
}
}
开发者ID:craftoid,项目名称:Cstitch,代码行数:17,代码来源:squareImageContainer.cpp
示例10: scaledSize
Size GeomUtils::outsideSize(Node* node) {
const Size& size = scaledSize(node);
float r = node->getRotation() * M_PI / 180.0f;
float c = fabsf(cosf(r));
float s = fabsf(sinf(r));
return Size(c * size.width + s * size.height,
s * size.width + c * size.height);
}
开发者ID:sunfish-shogi,项目名称:coconut,代码行数:8,代码来源:GeomUtils.cpp
示例11: startAnimation
void BitmapImage::draw(GraphicsContext* context, const FloatRect& dst, const FloatRect& src, ColorSpace styleColorSpace, CompositeOperator op,
BlendMode, RespectImageOrientationEnum shouldRespectImageOrientation)
{
if (!dst.width() || !dst.height() || !src.width() || !src.height())
return;
startAnimation();
NativeImageCairo* nativeImage = frameAtIndex(m_currentFrame);
if (!nativeImage) // If it's too early we won't have an image yet.
return;
if (mayFillWithSolidColor()) {
fillWithSolidColor(context, dst, solidColor(), styleColorSpace, op);
return;
}
context->save();
// Set the compositing operation.
if (op == CompositeSourceOver && !frameHasAlphaAtIndex(m_currentFrame))
context->setCompositeOperation(CompositeCopy);
else
context->setCompositeOperation(op);
#if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
cairo_surface_t* surface = nativeImage->surface();
IntSize scaledSize(cairo_image_surface_get_width(surface), cairo_image_surface_get_height(surface));
FloatRect adjustedSrcRect = adjustSourceRectForDownSampling(src, scaledSize);
#else
FloatRect adjustedSrcRect(src);
#endif
ImageOrientation orientation = DefaultImageOrientation;
if (shouldRespectImageOrientation == RespectImageOrientation)
orientation = frameOrientationAtIndex(m_currentFrame);
FloatRect dstRect = dst;
if (orientation != DefaultImageOrientation) {
// ImageOrientation expects the origin to be at (0, 0).
context->translate(dstRect.x(), dstRect.y());
dstRect.setLocation(FloatPoint());
context->concatCTM(orientation.transformFromDefault(dstRect.size()));
if (orientation.usesWidthAsHeight()) {
// The destination rectangle will have it's width and height already reversed for the orientation of
// the image, as it was needed for page layout, so we need to reverse it back here.
dstRect = FloatRect(dstRect.x(), dstRect.y(), dstRect.height(), dstRect.width());
}
}
context->platformContext()->drawSurfaceToContext(nativeImage->surface(), dstRect, adjustedSrcRect, context);
context->restore();
if (imageObserver())
imageObserver()->didDraw(this);
}
开发者ID:jiezh,项目名称:h5vcc,代码行数:58,代码来源:BitmapImageCairo.cpp
示例12: nativeImageForCurrentFrame
void Image::drawPattern(GraphicsContext* ctxt, const FloatRect& tileRect, const AffineTransform& patternTransform,
const FloatPoint& phase, ColorSpace, CompositeOperator op, const FloatRect& destRect)
{
QPixmap* framePixmap = nativeImageForCurrentFrame();
if (!framePixmap) // If it's too early we won't have an image yet.
return;
// Qt interprets 0 width/height as full width/height so just short circuit.
QRectF dr = QRectF(destRect).normalized();
QRect tr = QRectF(tileRect).toRect().normalized();
if (!dr.width() || !dr.height() || !tr.width() || !tr.height())
return;
QPixmap pixmap = *framePixmap;
if (tr.x() || tr.y() || tr.width() != pixmap.width() || tr.height() != pixmap.height())
pixmap = pixmap.copy(tr);
CompositeOperator previousOperator = ctxt->compositeOperation();
ctxt->setCompositeOperation(!pixmap.hasAlpha() && op == CompositeSourceOver ? CompositeCopy : op);
QPainter* p = ctxt->platformContext();
QTransform transform(patternTransform);
// If this would draw more than one scaled tile, we scale the pixmap first and then use the result to draw.
if (transform.type() == QTransform::TxScale) {
QRectF tileRectInTargetCoords = (transform * QTransform().translate(phase.x(), phase.y())).mapRect(tr);
bool tileWillBePaintedOnlyOnce = tileRectInTargetCoords.contains(dr);
if (!tileWillBePaintedOnlyOnce) {
QSizeF scaledSize(float(pixmap.width()) * transform.m11(), float(pixmap.height()) * transform.m22());
QPixmap scaledPixmap(scaledSize.toSize());
if (pixmap.hasAlpha())
scaledPixmap.fill(Qt::transparent);
{
QPainter painter(&scaledPixmap);
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.setRenderHints(p->renderHints());
painter.drawPixmap(QRect(0, 0, scaledPixmap.width(), scaledPixmap.height()), pixmap);
}
pixmap = scaledPixmap;
transform = QTransform::fromTranslate(transform.dx(), transform.dy());
}
}
/* Translate the coordinates as phase is not in world matrix coordinate space but the tile rect origin is. */
transform *= QTransform().translate(phase.x(), phase.y());
transform.translate(tr.x(), tr.y());
QBrush b(pixmap);
b.setTransform(transform);
p->fillRect(dr, b);
ctxt->setCompositeOperation(previousOperator);
if (imageObserver())
imageObserver()->didDraw(this);
}
开发者ID:DreamOnTheGo,项目名称:src,代码行数:58,代码来源:ImageQt.cpp
示例13: scaledSize
PassRefPtr<Uint8ClampedArray> FilterEffect::asPremultipliedImage(const IntRect& rect)
{
IntSize scaledSize(rect.size());
ASSERT(!ImageBuffer::sizeNeedsClamping(scaledSize));
scaledSize.scale(m_filter.filterScale());
RefPtr<Uint8ClampedArray> imageData = Uint8ClampedArray::createUninitialized(scaledSize.width() * scaledSize.height() * 4);
copyPremultipliedImage(imageData.get(), rect);
return imageData.release();
}
开发者ID:xiaoyanzheng,项目名称:webkit,代码行数:9,代码来源:FilterEffect.cpp
示例14: ASSERT
PassRefPtr<Uint8ClampedArray> FilterEffect::asPremultipliedImage(const IntRect& rect)
{
ASSERT(isFilterSizeValid(rect));
IntSize scaledSize(rect.size());
scaledSize.scale(m_filter->filterScale());
RefPtr<Uint8ClampedArray> imageData = Uint8ClampedArray::createUninitialized(scaledSize.width() * scaledSize.height() * 4);
copyPremultipliedImage(imageData.get(), rect);
return imageData.release();
}
开发者ID:sinoory,项目名称:webv8,代码行数:9,代码来源:FilterEffect.cpp
示例15: scaledSize
bool AcceleratedSurface::resize(const IntSize& size)
{
IntSize scaledSize(size);
scaledSize.scale(m_webPage.deviceScaleFactor());
if (scaledSize == m_size)
return false;
m_size = scaledSize;
return true;
}
开发者ID:eocanha,项目名称:webkit,代码行数:10,代码来源:AcceleratedSurface.cpp
示例16: lock
void nsMediaDecoder::Invalidate()
{
if (!mElement)
return;
nsIFrame* frame = mElement->GetPrimaryFrame();
PRBool invalidateFrame = PR_FALSE;
{
nsAutoLock lock(mVideoUpdateLock);
// Get mImageContainerSizeChanged while holding the lock.
invalidateFrame = mImageContainerSizeChanged;
mImageContainerSizeChanged = PR_FALSE;
if (mSizeChanged) {
nsIntSize scaledSize(mRGBWidth, mRGBHeight);
// Apply the aspect ratio to produce the intrinsic size we report
// to the element.
if (mPixelAspectRatio > 1.0) {
// Increase the intrinsic width
scaledSize.width =
ConditionDimension(mPixelAspectRatio*scaledSize.width, scaledSize.width);
} else {
// Increase the intrinsic height
scaledSize.height =
ConditionDimension(scaledSize.height/mPixelAspectRatio, scaledSize.height);
}
mElement->UpdateMediaSize(scaledSize);
mSizeChanged = PR_FALSE;
if (frame) {
nsPresContext* presContext = frame->PresContext();
nsIPresShell *presShell = presContext->PresShell();
presShell->FrameNeedsReflow(frame,
nsIPresShell::eStyleChange,
NS_FRAME_IS_DIRTY);
}
}
}
if (frame) {
nsRect contentRect = frame->GetContentRect() - frame->GetPosition();
if (invalidateFrame) {
frame->Invalidate(contentRect);
} else {
frame->InvalidateLayer(contentRect, nsDisplayItem::TYPE_VIDEO);
}
}
#ifdef MOZ_SVG
nsSVGEffects::InvalidateDirectRenderingObservers(mElement);
#endif
}
开发者ID:h4ck3rm1k3,项目名称:v8monkey,代码行数:54,代码来源:nsMediaDecoder.cpp
示例17: scaledSize
bool ImageBuffer::sizeNeedsClamping(const FloatSize& size, FloatSize& scale)
{
FloatSize scaledSize(size);
scaledSize.scale(scale.width(), scale.height());
if (!sizeNeedsClamping(scaledSize))
return false;
// The area of scaled size is bigger than the upper limit, adjust the scale to fit.
scale.scale(sqrtf(MaxClampedArea / (scaledSize.width() * scaledSize.height())));
ASSERT(!sizeNeedsClamping(size, scale));
return true;
}
开发者ID:edcwconan,项目名称:webkit,代码行数:13,代码来源:ImageBuffer.cpp
示例18: scaledSize
bool RenderSVGResourceFilter::fitsInMaximumImageSize(const FloatSize& size, FloatSize& scale)
{
FloatSize scaledSize(size);
scaledSize.scale(scale.width(), scale.height());
float scaledArea = scaledSize.width() * scaledSize.height();
if (scaledArea <= FilterEffect::maxFilterArea())
return true;
// If area of scaled size is bigger than the upper limit, adjust the scale
// to fit.
scale.scale(sqrt(FilterEffect::maxFilterArea() / scaledArea));
return false;
}
开发者ID:houzhenggang,项目名称:webkit,代码行数:14,代码来源:RenderSVGResourceFilter.cpp
示例19: initFrameBuffer
bool GIFImageDecoder::frameComplete(unsigned frameIndex, unsigned frameDuration, RGBA32Buffer::FrameDisposalMethod disposalMethod)
{
// Initialize the frame if necessary. Some GIFs insert do-nothing frames,
// in which case we never reach haveDecodedRow() before getting here.
RGBA32Buffer& buffer = m_frameBufferCache[frameIndex];
if ((buffer.status() == RGBA32Buffer::FrameEmpty) && !initFrameBuffer(frameIndex))
return false; // initFrameBuffer() has already called setFailed().
buffer.setStatus(RGBA32Buffer::FrameComplete);
buffer.setDuration(frameDuration);
buffer.setDisposalMethod(disposalMethod);
// apollo integrate
// RHU: need to test bug: 1796134
if (!m_currentBufferSawAlpha) {
// The whole frame was non-transparent, so it's possible that the entire
// resulting buffer was non-transparent, and we can setHasAlpha(false).
if (buffer.rect().contains(IntRect(IntPoint(), scaledSize())))
buffer.setHasAlpha(false);
else if (frameIndex) {
// Tricky case. This frame does not have alpha only if everywhere
// outside its rect doesn't have alpha. To know whether this is
// true, we check the start state of the frame -- if it doesn't have
// alpha, we're safe.
//
// First skip over prior DisposeOverwritePrevious frames (since they
// don't affect the start state of this frame) the same way we do in
// initFrameBuffer().
const RGBA32Buffer* prevBuffer = &m_frameBufferCache[--frameIndex];
while (frameIndex && (prevBuffer->disposalMethod() == RGBA32Buffer::DisposeOverwritePrevious))
prevBuffer = &m_frameBufferCache[--frameIndex];
// Now, if we're at a DisposeNotSpecified or DisposeKeep frame, then
// we can say we have no alpha if that frame had no alpha. But
// since in initFrameBuffer() we already copied that frame's alpha
// state into the current frame's, we need do nothing at all here.
//
// The only remaining case is a DisposeOverwriteBgcolor frame. If
// it had no alpha, and its rect is contained in the current frame's
// rect, we know the current frame has no alpha.
if ((prevBuffer->disposalMethod() == RGBA32Buffer::DisposeOverwriteBgcolor) && !prevBuffer->hasAlpha() && buffer.rect().contains(prevBuffer->rect()))
buffer.setHasAlpha(false);
}
}
return true;
}
开发者ID:UIKit0,项目名称:WebkitAIR,代码行数:48,代码来源:GIFImageDecoder.cpp
示例20: getCTM
std::unique_ptr<ImageBuffer> GraphicsContext::createCompatibleBuffer(const FloatSize& size, bool hasAlpha) const
{
// Make the buffer larger if the context's transform is scaling it so we need a higher
// resolution than one pixel per unit. Also set up a corresponding scale factor on the
// graphics context.
AffineTransform transform = getCTM(DefinitelyIncludeDeviceScale);
FloatSize scaledSize(static_cast<int>(ceil(size.width() * transform.xScale())), static_cast<int>(ceil(size.height() * transform.yScale())));
std::unique_ptr<ImageBuffer> buffer = ImageBuffer::createCompatibleBuffer(scaledSize, 1, ColorSpaceSRGB, *this, hasAlpha);
if (!buffer)
return nullptr;
buffer->context().scale(FloatSize(scaledSize.width() / size.width(), scaledSize.height() / size.height()));
return buffer;
}
开发者ID:josedealcala,项目名称:webkit,代码行数:17,代码来源:GraphicsContext.cpp
注:本文中的scaledSize函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论