# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/ui.gni")

component("codec") {
  sources = [
    "codec_export.h",
    "jpeg_codec.cc",
    "jpeg_codec.h",
    "png_codec.cc",
    "png_codec.h",
    "vector_wstream.cc",
    "vector_wstream.h",
    "webp_codec.cc",
    "webp_codec.h",
  ]

  deps = [
    "//base",
    "//skia",
    "//third_party/libpng",
    "//ui/gfx:gfx_export",
    "//ui/gfx:gfx_skia",
    "//ui/gfx/geometry",
  ]

  if (is_ios) {
    sources -= [
      "jpeg_codec.cc",
      "jpeg_codec.h",
    ]
  } else {
    deps += [ "//third_party:jpeg" ]
  }

  if (is_win) {
    cflags = [ "/wd4324" ]  # Structure was padded due to __declspec(align()),
                            # which is uninteresting.
  }

  defines = [ "CODEC_IMPLEMENTATION" ]
}
