[fiddle] Add simple animation support.
BUG=skia: Change-Id: I6453afb1fe18e210d3c505b56777b8b19501ca2f Reviewed-on: https://skia-review.googlesource.com/13810 Commit-Queue: Joe Gregorio <jcgregorio@google.com> Reviewed-by: Hal Canary <halcanary@google.com>
This commit is contained in:
parent
b82fdc70b5
commit
1e735c0256
2
BUILD.gn
2
BUILD.gn
@ -778,7 +778,9 @@ if (skia_enable_tools) {
|
||||
"tools/fiddle/draw.cpp",
|
||||
"tools/fiddle/fiddle_main.cpp",
|
||||
]
|
||||
testonly = true
|
||||
deps = [
|
||||
":flags",
|
||||
":skia",
|
||||
":skia.h",
|
||||
]
|
||||
|
17
tools/fiddle/animate.sh
Executable file
17
tools/fiddle/animate.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2017 Google Inc.
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# Create a 3 second long animation from the Raster output of fiddle at 15 fps.
|
||||
FPS=15
|
||||
DURATION=3
|
||||
FRAMES=$((DURATION * FPS))
|
||||
mkdir -p /tmp/animation
|
||||
for i in $(seq -f "%05g" 0 $FRAMES)
|
||||
do
|
||||
./out/Release/fiddle --duration $DURATION --frame `bc -l <<< "$i/$FRAMES"` | ./tools/fiddle/parse-fiddle-output
|
||||
cp /tmp/fiddle_Raster.png /tmp/animation/image-"$i".png
|
||||
done
|
||||
cd /tmp/animation; ffmpeg -r $FPS -pattern_type glob -i '*.png' -c:v libvpx-vp9 -lossless 1 output.webm
|
@ -19,7 +19,7 @@ void draw(SkCanvas* canvas) {
|
||||
canvas->clear(SK_ColorWHITE);
|
||||
SkMatrix matrix;
|
||||
matrix.setScale(0.75f, 0.75f);
|
||||
matrix.preRotate(30.0f);
|
||||
matrix.preRotate(frame * 30.0f * duration); // If an animation, rotate at 30 deg/s.
|
||||
SkPaint paint;
|
||||
paint.setShader(image->makeShader(SkShader::kRepeat_TileMode,
|
||||
SkShader::kRepeat_TileMode,
|
||||
|
@ -10,11 +10,18 @@
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#include "SkCommandLineFlags.h"
|
||||
|
||||
#include "fiddle_main.h"
|
||||
|
||||
DEFINE_double(duration, 1.0, "The total duration, in seconds, of the animation we are drawing.");
|
||||
DEFINE_double(frame, 1.0, "A double value in [0, 1] that specifies the point in animation to draw.");
|
||||
|
||||
// Globals externed in fiddle_main.h
|
||||
SkBitmap source;
|
||||
sk_sp<SkImage> image;
|
||||
double duration; // The total duration of the animation in seconds.
|
||||
double frame; // A value in [0, 1] of where we are in the animation.
|
||||
|
||||
// Global used by the local impl of SkDebugf.
|
||||
std::ostringstream gTextOutput;
|
||||
@ -111,7 +118,10 @@ static SkData* encode_snapshot(const sk_sp<SkSurface>& surface) {
|
||||
|
||||
|
||||
|
||||
int main() {
|
||||
int main(int argc, char** argv) {
|
||||
SkCommandLineFlags::Parse(argc, argv);
|
||||
duration = FLAGS_duration;
|
||||
frame = FLAGS_frame;
|
||||
DrawOptions options = GetDrawOptions();
|
||||
// If textOnly then only do one type of image, otherwise the text
|
||||
// output is duplicated for each type.
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
extern SkBitmap source;
|
||||
extern sk_sp<SkImage> image;
|
||||
extern double duration; // The total duration of the animation in seconds.
|
||||
extern double frame; // A value in [0, 1] of where we are in the animation.
|
||||
|
||||
struct DrawOptions {
|
||||
DrawOptions(int w, int h, bool r, bool g, bool p, bool k, bool srgb, bool f16, bool textOnly, const char* s)
|
||||
|
Loading…
Reference in New Issue
Block a user