Home | History | Annotate | Download | only in core
      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 
     11 static bool alpha_type_is_valid(SkAlphaType alphaType) {
     12     return (alphaType >= 0) && (alphaType <= kLastEnum_SkAlphaType);
     13 }
     14 
     15 static bool color_type_is_valid(SkColorType colorType) {
     16     return (colorType >= 0) && (colorType <= kLastEnum_SkColorType);
     17 }
     18 
     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 
     31 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