srgb.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright 2017 Google Inc.
  3. *
  4. * Use of this source code is governed by a BSD-style license that can be
  5. * found in the LICENSE file.
  6. */
  7. #include "gm/gm.h"
  8. #include "include/core/SkCanvas.h"
  9. #include "include/core/SkColorFilter.h"
  10. #include "include/core/SkPaint.h"
  11. #include "include/core/SkRefCnt.h"
  12. #include "tools/Resources.h"
  13. DEF_SIMPLE_GM(srgb_colorfilter, canvas, 512, 256*3) {
  14. auto img = GetResourceAsImage("images/mandrill_256.png");
  15. const float array[] = {
  16. 1, 0, 0, 0, 0,
  17. 0, 1, 0, 0, 0,
  18. 0, 0, 1, 0, 0,
  19. -1, 0, 0, 1, 0,
  20. };
  21. auto cf0 = SkColorFilters::Matrix(array);
  22. auto cf1 = SkColorFilters::LinearToSRGBGamma();
  23. auto cf2 = SkColorFilters::SRGBToLinearGamma();
  24. SkPaint p;
  25. p.setColorFilter(cf0);
  26. canvas->drawImage(img, 0, 0, nullptr);
  27. canvas->drawImage(img, 256, 0, &p);
  28. p.setColorFilter(cf1);
  29. canvas->drawImage(img, 0, 256, &p);
  30. p.setColorFilter(cf1->makeComposed(cf0));
  31. canvas->drawImage(img, 256, 256, &p);
  32. p.setColorFilter(cf2);
  33. canvas->drawImage(img, 0, 512, &p);
  34. p.setColorFilter(cf2->makeComposed(cf0));
  35. canvas->drawImage(img, 256, 512, &p);
  36. }