• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2010 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkImageInfo.h"
9 #include "SkFlattenableBuffers.h"
10 
alpha_type_is_valid(SkAlphaType alphaType)11 static bool alpha_type_is_valid(SkAlphaType alphaType) {
12     return (alphaType >= 0) && (alphaType <= kLastEnum_SkAlphaType);
13 }
14 
color_type_is_valid(SkColorType colorType)15 static bool color_type_is_valid(SkColorType colorType) {
16     return (colorType >= 0) && (colorType <= kLastEnum_SkColorType);
17 }
18 
unflatten(SkFlattenableReadBuffer & buffer)19 void SkImageInfo::unflatten(SkFlattenableReadBuffer& buffer) {
20     fWidth = buffer.read32();
21     fHeight = buffer.read32();
22 
23     uint32_t packed = buffer.read32();
24     SkASSERT(0 == (packed >> 16));
25     fAlphaType = (SkAlphaType)((packed >> 8) & 0xFF);
26     fColorType = (SkColorType)((packed >> 0) & 0xFF);
27     buffer.validate(alpha_type_is_valid(fAlphaType) &&
28                     color_type_is_valid(fColorType));
29 }
30 
flatten(SkFlattenableWriteBuffer & buffer) const31 void SkImageInfo::flatten(SkFlattenableWriteBuffer& buffer) const {
32     buffer.write32(fWidth);
33     buffer.write32(fHeight);
34 
35     SkASSERT(0 == (fAlphaType & ~0xFF));
36     SkASSERT(0 == (fColorType & ~0xFF));
37     uint32_t packed = (fAlphaType << 8) | fColorType;
38     buffer.write32(packed);
39 }
40