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()+"&amp;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+="&amp;phitmp=1";
        imgid=_it->id()+"_phi_"+QByteArray::number( i );
        _out+='\t';
        imageSource( src, style, imgid, (titles.count()>i ? titles.at( i ): QByteArray()) );
        i++;
    }
Example #3
0
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();
}
Example #4
0
    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()+"&amp;phitmp=1";
        if ( !second.isNull() ) url2="/phi.phis?phiimg="
            +second.toUtf8()+"&amp;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 );
}