1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 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#ifndef SkWritePixelsRec_DEFINED 9cb93a386Sopenharmony_ci#define SkWritePixelsRec_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/core/SkImageInfo.h" 12cb93a386Sopenharmony_ci#include "include/core/SkPixmap.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci/** 15cb93a386Sopenharmony_ci * Helper class to package and trim the parameters passed to writePixels() 16cb93a386Sopenharmony_ci */ 17cb93a386Sopenharmony_cistruct SkWritePixelsRec { 18cb93a386Sopenharmony_ci SkWritePixelsRec(const SkImageInfo& info, const void* pixels, size_t rowBytes, int x, int y) 19cb93a386Sopenharmony_ci : fPixels(pixels) 20cb93a386Sopenharmony_ci , fRowBytes(rowBytes) 21cb93a386Sopenharmony_ci , fInfo(info) 22cb93a386Sopenharmony_ci , fX(x) 23cb93a386Sopenharmony_ci , fY(y) 24cb93a386Sopenharmony_ci {} 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci SkWritePixelsRec(const SkPixmap& pm, int x, int y) 27cb93a386Sopenharmony_ci : fPixels(pm.addr()) 28cb93a386Sopenharmony_ci , fRowBytes(pm.rowBytes()) 29cb93a386Sopenharmony_ci , fInfo(pm.info()) 30cb93a386Sopenharmony_ci , fX(x) 31cb93a386Sopenharmony_ci , fY(y) 32cb93a386Sopenharmony_ci {} 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci const void* fPixels; 35cb93a386Sopenharmony_ci size_t fRowBytes; 36cb93a386Sopenharmony_ci SkImageInfo fInfo; 37cb93a386Sopenharmony_ci int fX; 38cb93a386Sopenharmony_ci int fY; 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci /* 41cb93a386Sopenharmony_ci * On true, may have modified its fields (except fRowBytes) to make it a legal subset 42cb93a386Sopenharmony_ci * of the specified dst width/height. 43cb93a386Sopenharmony_ci * 44cb93a386Sopenharmony_ci * On false, leaves self unchanged, but indicates that it does not overlap dst, or 45cb93a386Sopenharmony_ci * is not valid (e.g. bad fInfo) for writePixels(). 46cb93a386Sopenharmony_ci */ 47cb93a386Sopenharmony_ci bool trim(int dstWidth, int dstHeight); 48cb93a386Sopenharmony_ci}; 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci#endif 51