/*
* This file provided by Facebook is for non-commercial testing and evaluation
* purposes only. Facebook reserves all rights not expressly granted.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package com.facebook.fresco.samples.showcase.postprocessor;
import java.util.Random;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.facebook.fresco.samples.showcase.imagepipeline.DurationCallback;
/**
* Adds a watermark at random positions to the bitmap using {@link Canvas}.
*/
public class WatermarkPostprocessor extends BasePostprocessorWithDurationCallback {
private static final int TEXT_COLOR = 0xBBFFFFFF;
private static final int FONT_SIZE = 80;
final protected int mCount;
final protected String mWatermarkText;
private final Random mRandom = new Random();
private final Paint mPaint = new Paint();
public WatermarkPostprocessor(
DurationCallback durationCallback,
int count,
String watermarkText) {
super(durationCallback);
mCount = count;
mWatermarkText = watermarkText;
}
@Override
public void process(Bitmap bitmap) {
final long startNs = System.nanoTime();
final int w = bitmap.getWidth();
final int h = bitmap.getHeight();
final Canvas canvas = new Canvas(bitmap);
mPaint.setAntiAlias(true);
mPaint.setColor(TEXT_COLOR);
mPaint.setFakeBoldText(true);
mPaint.setTextSize(FONT_SIZE);
for (int c = 0; c < mCount; c++) {
final int x = mRandom.nextInt(w);
final int y = mRandom.nextInt(h);
canvas.drawText(mWatermarkText, x, y, mPaint);
}
showDuration(System.nanoTime() - startNs);
}
}