# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Things are easiest for everyone if these source paths are absolute.
_samplecode = get_path_info("../samplecode", "abspath")

samples_sources = [
  "$_samplecode/Sample.cpp",
  "$_samplecode/Sample.h",
  "$_samplecode/Sample2PtRadial.cpp",
  "$_samplecode/Sample3D.cpp",
  "$_samplecode/SampleAARectModes.cpp",
  "$_samplecode/SampleAARects.cpp",
  "$_samplecode/SampleAndroidShadows.cpp",
  "$_samplecode/SampleAnimBlur.cpp",
  "$_samplecode/SampleAnimatedImage.cpp",
  "$_samplecode/SampleAnimatedText.cpp",
  "$_samplecode/SampleArc.cpp",
  "$_samplecode/SampleAtlas.cpp",
  "$_samplecode/SampleAudio.cpp",
  "$_samplecode/SampleCamera.cpp",
  "$_samplecode/SampleChart.cpp",
  "$_samplecode/SampleChineseFling.cpp",
  "$_samplecode/SampleCircle.cpp",
  "$_samplecode/SampleClip.cpp",
  "$_samplecode/SampleClock.cpp",
  "$_samplecode/SampleComplexClip.cpp",
  "$_samplecode/SampleCowboy.cpp",
  "$_samplecode/SampleCusp.cpp",
  "$_samplecode/SampleDegenerateQuads.cpp",
  "$_samplecode/SampleDegenerateTwoPtRadials.cpp",
  "$_samplecode/SampleEffects.cpp",
  "$_samplecode/SampleEmboss.cpp",
  "$_samplecode/SampleFatBits.cpp",
  "$_samplecode/SampleFillType.cpp",
  "$_samplecode/SampleFilterBounds.cpp",
  "$_samplecode/SampleFitCubicToCircle.cpp",
  "$_samplecode/SampleFlutterAnimate.cpp",
  "$_samplecode/SampleGlyphTransform.cpp",
  "$_samplecode/SampleGradients.cpp",
  "$_samplecode/SampleHairCurves.cpp",
  "$_samplecode/SampleHairModes.cpp",
  "$_samplecode/SampleImageFilterDAG.cpp",
  "$_samplecode/SampleLCD.cpp",
  "$_samplecode/SampleLayers.cpp",
  "$_samplecode/SampleManyRects.cpp",
  "$_samplecode/SampleMaterialShadows.cpp",
  "$_samplecode/SampleMegaStroke.cpp",
  "$_samplecode/SampleMixer.cpp",
  "$_samplecode/SamplePatch.cpp",
  "$_samplecode/SamplePath.cpp",
  "$_samplecode/SamplePathClip.cpp",
  "$_samplecode/SamplePathEffects.cpp",
  "$_samplecode/SamplePathOverstroke.cpp",
  "$_samplecode/SamplePathText.cpp",
  "$_samplecode/SamplePolyToPoly.cpp",
  "$_samplecode/SampleQuadStroker.cpp",
  "$_samplecode/SampleRectanizer.cpp",
  "$_samplecode/SampleRepeatTile.cpp",
  "$_samplecode/SampleSG.cpp",
  "$_samplecode/SampleSVGFile.cpp",
  "$_samplecode/SampleShadowColor.cpp",
  "$_samplecode/SampleShadowReference.cpp",
  "$_samplecode/SampleShadowUtils.cpp",
  "$_samplecode/SampleShip.cpp",
  "$_samplecode/SampleSimpleStroker.cpp",
  "$_samplecode/SampleSlides.cpp",
  "$_samplecode/SampleStringArt.cpp",
  "$_samplecode/SampleStrokePath.cpp",
  "$_samplecode/SampleStrokeRect.cpp",
  "$_samplecode/SampleStrokeVerb.cpp",
  "$_samplecode/SampleTextBox.cpp",
  "$_samplecode/SampleTextureUpload.cpp",
  "$_samplecode/SampleThinAA.cpp",
  "$_samplecode/SampleTiming.cpp",
  "$_samplecode/SampleVariableWidthStroker.cpp",
  "$_samplecode/SampleVertices.cpp",
  "$_samplecode/SampleWritePixels.cpp",
  "$_samplecode/SampleXfer.cpp",
  "$_samplecode/SampleXfermodesBlur.cpp",
  "$_samplecode/vertexdump.cpp",
]

oga_samples_sources = [ "$_samplecode/SamplePathTessellators.cpp" ]

samples_sources += oga_samples_sources
