// Copyright 2019 Google LLC
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
#include "tools/fiddle/examples.h"
REG_FIDDLE(HSVToColor, 256, 256, false, 3) {
void draw(SkCanvas* canvas) {
    canvas->drawImage(source.asImage(), 0, 0);
    for (int y = 0; y < 256; ++y) {
       for (int x = 0; x < 256; ++x) {
         SkColor color = source.getColor(x, y);
         SkScalar hsv[3];
         SkColorToHSV(color, hsv);
         hsv[0] = hsv[0] + 90 >= 360 ? hsv[0] - 270 : hsv[0] + 90;
         SkPaint paint;
         paint.setColor(SkHSVToColor((x + y) % 256, hsv));
         canvas->drawRect(SkRect::MakeXYWH(x, y, 1, 1), paint);
      }
    }
}
}  // END FIDDLE
