196472deea70169396b8e1f576e470138f55fdb1freed/*
296472deea70169396b8e1f576e470138f55fdb1freed * Copyright 2014 Google Inc.
396472deea70169396b8e1f576e470138f55fdb1freed *
496472deea70169396b8e1f576e470138f55fdb1freed * Use of this source code is governed by a BSD-style license that can be
596472deea70169396b8e1f576e470138f55fdb1freed * found in the LICENSE file.
696472deea70169396b8e1f576e470138f55fdb1freed */
796472deea70169396b8e1f576e470138f55fdb1freed
896472deea70169396b8e1f576e470138f55fdb1freed#ifndef SkReadPixelsRec_DEFINED
996472deea70169396b8e1f576e470138f55fdb1freed#define SkReadPixelsRec_DEFINED
1096472deea70169396b8e1f576e470138f55fdb1freed
1196472deea70169396b8e1f576e470138f55fdb1freed#include "SkImageInfo.h"
1296472deea70169396b8e1f576e470138f55fdb1freed
1396472deea70169396b8e1f576e470138f55fdb1freed/**
1496472deea70169396b8e1f576e470138f55fdb1freed *  Helper class to package and trim the parameters passed to readPixels()
1596472deea70169396b8e1f576e470138f55fdb1freed */
1696472deea70169396b8e1f576e470138f55fdb1freedstruct SkReadPixelsRec {
1796472deea70169396b8e1f576e470138f55fdb1freed    SkReadPixelsRec(const SkImageInfo& info, void* pixels, size_t rowBytes, int x, int y)
1896472deea70169396b8e1f576e470138f55fdb1freed        : fPixels(pixels)
1996472deea70169396b8e1f576e470138f55fdb1freed        , fRowBytes(rowBytes)
2096472deea70169396b8e1f576e470138f55fdb1freed        , fInfo(info)
2196472deea70169396b8e1f576e470138f55fdb1freed        , fX(x)
2296472deea70169396b8e1f576e470138f55fdb1freed        , fY(y)
2396472deea70169396b8e1f576e470138f55fdb1freed    {}
2496472deea70169396b8e1f576e470138f55fdb1freed
2596472deea70169396b8e1f576e470138f55fdb1freed    void*       fPixels;
2696472deea70169396b8e1f576e470138f55fdb1freed    size_t      fRowBytes;
2796472deea70169396b8e1f576e470138f55fdb1freed    SkImageInfo fInfo;
2896472deea70169396b8e1f576e470138f55fdb1freed    int         fX;
2996472deea70169396b8e1f576e470138f55fdb1freed    int         fY;
3096472deea70169396b8e1f576e470138f55fdb1freed
3196472deea70169396b8e1f576e470138f55fdb1freed    /*
3296472deea70169396b8e1f576e470138f55fdb1freed     *  On true, may have modified its fields (except fRowBytes) to make it a legal subset
3396472deea70169396b8e1f576e470138f55fdb1freed     *  of the specified src width/height.
3496472deea70169396b8e1f576e470138f55fdb1freed     *
3596472deea70169396b8e1f576e470138f55fdb1freed     *  On false, leaves self unchanged, but indicates that it does not overlap src, or
3696472deea70169396b8e1f576e470138f55fdb1freed     *  is not valid (e.g. bad fInfo) for readPixels().
3796472deea70169396b8e1f576e470138f55fdb1freed     */
3896472deea70169396b8e1f576e470138f55fdb1freed    bool trim(int srcWidth, int srcHeight);
3996472deea70169396b8e1f576e470138f55fdb1freed};
4096472deea70169396b8e1f576e470138f55fdb1freed
4196472deea70169396b8e1f576e470138f55fdb1freed#endif
42