void PHISHtmlWebKit532::imageButton() const { _out+=_indent+"<button type=\"button\" class=\"phibuttontext\"" +name()+disabled()+title()+accessKey()+tabIndex() +onClickUrl()+startStyle( adjustButtonSize() )+effectStyle(); _out+="padding:0px;-webkit-appearance:button;\">\n"; QByteArray url; if ( _it->imageId().startsWith( QLatin1String( "phi" ) ) ) url="/phi.phis?phiimg="+_it->imageIdData()+"&phitmp=1"; else url="/phi.phis?phiimg="+_it->imageIdData(); QByteArray style=" style=\"position:relative;vertical-align:middle;"; _out+='\t'; imageSource( url, style, _it->id()+"_phiimg", _it->toolTipData() ); _out+=_indent+"\t<span style=\""+colorStyle()+fontStyle() +"\">"+_it->valueData()+"</span>\n"; _out+=_indent+"</button>\n"; }
void PHISHtmlGeneric::diaShow() const { bool useTmp( false ); int i; QByteArray postfix; QList <QByteArray> ids; QString imageId; QTransform t=transformation(); if ( _it->hasGraphicEffect() ) postfix=QByteArray::fromRawData( "_g", 2 ); if ( !t.isIdentity() ) postfix=QByteArray::fromRawData( "_t", 2 ); for ( i=0; i<_it->pictureBookIds().count(); i++ ) { imageId=_it->pictureBookIds().at( i ); // check if we have a graphical changed picture if ( !postfix.isNull() || imageId.startsWith( QLatin1String( "phi" ) ) || (_it->itemProperties() & PHIItem::PNoCache) ) { imageId=checkForImageId( postfix, i ); // image already cached? useTmp=true; if ( imageId.isNull() ) { imageId=_it->pictureBookIds().at( i ); QImage img=createImageImage( imageId ); if ( _it->hasGraphicEffect() ) img=graphicsEffectImage( img ); if ( !t.isIdentity() ) img=img.transformed( t, Qt::SmoothTransformation ); imageId=storeImage( img, postfix, i ); if ( imageId.isNull() ) return; } } ids.append( imageId.toUtf8() ); } i=0; QByteArray src, imgid; QByteArray style=" style=\"position:absolute;"+transformationPositionStyle( t, true ); QList <QByteArray> titles=_it->toolTipData().split(':'); _out+=_indent+"<div "+id(); if ( titles.count()==1 ) _out+=title(); _out+=style+"\">\n"; style=" style=\"left:0;top:0;"; if ( t.isIdentity() ) style+="width:"+QByteArray::number( _it->width() )+"px;height:" +QByteArray::number( _it->height() )+"px;"; foreach ( src, ids ) { src="/phi.phis?phiimg="+src+""; if ( useTmp ) src+="&phitmp=1"; imgid=_it->id()+"_phi_"+QByteArray::number( i ); _out+='\t'; imageSource( src, style, imgid, (titles.count()>i ? titles.at( i ): QByteArray()) ); i++; }
DEF_SIMPLE_GM_BG(imagemagnifier_cropped, canvas, WIDTH_HEIGHT, WIDTH_HEIGHT, SK_ColorBLACK) { sk_sp<SkImage> image(make_img()); sk_sp<SkImageFilter> imageSource(SkImageSource::Make(std::move(image))); SkRect srcRect = SkRect::MakeWH(SkIntToScalar(WIDTH_HEIGHT-32), SkIntToScalar(WIDTH_HEIGHT-32)); srcRect.inset(64.0f, 64.0f); static const SkScalar kInset = 64.0f; // Crop out a 16 pixel ring around the result const SkRect rect = SkRect::MakeXYWH(16, 16, WIDTH_HEIGHT-32, WIDTH_HEIGHT-32); SkImageFilter::CropRect cropRect(rect); SkPaint filterPaint; filterPaint.setImageFilter(SkMagnifierImageFilter::Make(srcRect, kInset, std::move(imageSource), &cropRect)); canvas->saveLayer(nullptr, &filterPaint); canvas->restore(); }
void onDraw(SkCanvas* canvas) override{ SkPaint blackFill; //----------- // Normal paints (no source) SkTArray<SkPaint> paints; create_paints(nullptr, &paints); //----------- // Paints with a PictureImageFilter as a source sk_sp<SkPicture> pic; { SkPictureRecorder rec; SkCanvas* c = rec.beginRecording(10, 10); c->drawRect(SkRect::MakeWH(10, 10), blackFill); pic = rec.finishRecordingAsPicture(); } SkAutoTUnref<SkImageFilter> pif(SkPictureImageFilter::Create(pic.get())); SkTArray<SkPaint> pifPaints; create_paints(pif, &pifPaints); //----------- // Paints with a SkImageSource as a source SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10)); { SkPaint p; SkCanvas* temp = surface->getCanvas(); temp->clear(SK_ColorYELLOW); p.setColor(SK_ColorBLUE); temp->drawRect(SkRect::MakeLTRB(5, 5, 10, 10), p); p.setColor(SK_ColorGREEN); temp->drawRect(SkRect::MakeLTRB(5, 0, 10, 5), p); } sk_sp<SkImage> image(surface->makeImageSnapshot()); SkAutoTUnref<SkImageFilter> imageSource(SkImageSource::Create(image.get())); SkTArray<SkPaint> bmsPaints; create_paints(imageSource, &bmsPaints); //----------- SkASSERT(paints.count() == kNumVertTiles); SkASSERT(paints.count() == pifPaints.count()); SkASSERT(paints.count() == bmsPaints.count()); // horizontal separators for (int i = 1; i < paints.count(); ++i) { canvas->drawLine(0, i*SkIntToScalar(kTileHeight), SkIntToScalar((SK_ARRAY_COUNT(gDrawMthds) + kNumXtraCols)*kTileWidth), i*SkIntToScalar(kTileHeight), blackFill); } // vertical separators for (int i = 0; i < (int)SK_ARRAY_COUNT(gDrawMthds) + kNumXtraCols; ++i) { canvas->drawLine(SkIntToScalar(i * kTileWidth), 0, SkIntToScalar(i * kTileWidth), SkIntToScalar(paints.count() * kTileWidth), blackFill); } // A column of saveLayers with PictureImageFilters for (int i = 0; i < pifPaints.count(); ++i) { draw_savelayer_with_paint(SkIPoint::Make(0, i*kTileHeight), canvas, pifPaints[i]); } // A column of saveLayers with BitmapSources for (int i = 0; i < pifPaints.count(); ++i) { draw_savelayer_with_paint(SkIPoint::Make(kTileWidth, i*kTileHeight), canvas, bmsPaints[i]); } // Multiple columns with different geometry for (int i = 0; i < (int)SK_ARRAY_COUNT(gDrawMthds); ++i) { for (int j = 0; j < paints.count(); ++j) { draw_geom_with_paint(*gDrawMthds[i], SkIPoint::Make((i+kNumXtraCols) * kTileWidth, j*kTileHeight), canvas, paints[j]); } } }
void PHISHtmlGeneric::rolloverButton() const { QByteArray postfix, url1, url2; QTransform t=transformation(); if ( !_it->value().isEmpty() ) postfix=QByteArray::fromRawData( "_v", 2 ); if ( _it->hasGraphicEffect() ) postfix=QByteArray::fromRawData( "_g", 2 ); if ( !t.isIdentity() ) postfix=QByteArray::fromRawData( "_t", 2 ); QString imageId, first, second; for ( int i=0; i<2; i++ ) { if ( _it->pictureBookIds().count() ) { // rollover with images imageId=checkForImageId( postfix, i ); if ( imageId.isNull() ) { if ( i<_it->pictureBookIds().count() ) { imageId=_it->pictureBookIds().at( i ); QImage img=createImageImage( imageId ); if ( !_it->value().isEmpty() ) img=createRolloverTextImage( i, img ); if ( _it->hasGraphicEffect() ) img=graphicsEffectImage( img ); if ( !t.isIdentity() ) img=img.transformed( t, Qt::SmoothTransformation ); imageId=storeImage( img, postfix, i ); if ( imageId.isNull() ) return; } else { Q_ASSERT( i==1 ); if ( _it->itemProperties() & PHIItem::PRolloverColors ) { QImage img=createRolloverTextImage( i ); if ( _it->hasGraphicEffect() ) img=graphicsEffectImage( img ); if ( !t.isIdentity() ) img=img.transformed( t, Qt::SmoothTransformation ); imageId=storeImage( img, postfix, i ); if ( imageId.isNull() ) return; } } } } else { // rollover with text only imageId=checkForImageId( postfix, i ); if ( imageId.isNull() ) { if ( i==0 ) { QImage img=createRolloverTextImage( i ); if ( _it->hasGraphicEffect() ) img=graphicsEffectImage( img ); if ( !t.isIdentity() ) img=img.transformed( t, Qt::SmoothTransformation ); imageId=storeImage( img, postfix, i ); if ( imageId.isNull() ) return; } else { if ( _it->itemProperties() & PHIItem::PRolloverColors ) { QImage img=createRolloverTextImage( i ); if ( _it->hasGraphicEffect() ) img=graphicsEffectImage( img ); if ( !t.isIdentity() ) img=img.transformed( t, Qt::SmoothTransformation ); imageId=storeImage( img, postfix, i ); if ( imageId.isNull() ) return; } } } } if ( i==0 ) first=imageId; else second=imageId; } if ( first.startsWith( QLatin1String( "phi" ) ) || _it->itemProperties() & PHIItem::PNoCache ) { url1="/phi.phis?phiimg="+first.toUtf8()+"&phitmp=1"; if ( !second.isNull() ) url2="/phi.phis?phiimg=" +second.toUtf8()+"&phitmp=1"; } else { url1="/phi.phis?phiimg="+first.toUtf8(); if ( !second.isNull() ) url2="/phi.phis?phiimg=" +second.toUtf8(); } QByteArray style=" style=\""+transformationPositionStyle( t, t.isIdentity() )+visibilityStyle(); return imageSource( url1, style, _it->id(), _it->toolTipData(), url2 ); }