blob: 6795f4dc7feb8d48b30fe873dfa7d53afc501e8b [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <memory>
#include "flutter/fml/macros.h"
#include "impeller/aiks/canvas.h"
#include "impeller/aiks/image.h"
#include "impeller/aiks/paint.h"
#include "impeller/geometry/path.h"
#include "impeller/renderer/sampler_descriptor.h"
namespace impeller {
// Converts a call to draw a nine patch image into a draw atlas call.
class NinePatchConverter {
public:
NinePatchConverter();
~NinePatchConverter();
void DrawNinePatch(const std::shared_ptr<Image>& image,
Rect center,
Rect dst,
const SamplerDescriptor& sampler,
Canvas* canvas,
Paint* paint);
private:
// Return a list of slice coordinates based on the size of the nine-slice
// parameters in one dimension. Each set of slice coordinates contains a
// begin/end pair for each of the source (image) and dest (screen) in the
// order (src0, dst0, src1, dst1). The area from src0 => src1 of the image is
// painted on the screen from dst0 => dst1 The slices for each dimension are
// generated independently.
std::vector<double> InitSlices(double img0,
double imgC0,
double imgC1,
double img1,
double dst0,
double dst1);
};
} // namespace impeller