1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "experimental/graphite/src/Surface_Graphite.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "experimental/graphite/include/SkStuff.h" 11cb93a386Sopenharmony_ci#include "experimental/graphite/src/Device.h" 12cb93a386Sopenharmony_ci#include "experimental/graphite/src/Image_Graphite.h" 13cb93a386Sopenharmony_ci#include "experimental/graphite/src/Recorder.h" 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_cinamespace skgpu { 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ciSurface_Graphite::Surface_Graphite(sk_sp<Device> device) 18cb93a386Sopenharmony_ci : SkSurface_Base(device->width(), device->height(), &device->surfaceProps()) 19cb93a386Sopenharmony_ci , fDevice(std::move(device)) { 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ciSurface_Graphite::~Surface_Graphite() {} 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ciSkCanvas* Surface_Graphite::onNewCanvas() { return new SkCanvas(fDevice); } 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_cisk_sp<SkSurface> Surface_Graphite::onNewSurface(const SkImageInfo& ii) { 27cb93a386Sopenharmony_ci return MakeGraphite(fDevice->refRecorder(), ii); 28cb93a386Sopenharmony_ci} 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_cisk_sp<SkImage> Surface_Graphite::onNewImageSnapshot(const SkIRect* subset) { 31cb93a386Sopenharmony_ci SkImageInfo ii = subset ? this->imageInfo().makeDimensions(subset->size()) 32cb93a386Sopenharmony_ci : this->imageInfo(); 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci return sk_sp<Image_Graphite>(new Image_Graphite(ii)); 35cb93a386Sopenharmony_ci} 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_civoid Surface_Graphite::onWritePixels(const SkPixmap&, int x, int y) {} 38cb93a386Sopenharmony_cibool Surface_Graphite::onCopyOnWrite(ContentChangeMode) { return true; } 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci} // namespace skgpu 41