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 "SkReadBuffer.h"
     10 #include "SkWriteBuffer.h"
     11 
     12 static bool alpha_type_is_valid(SkAlphaType alphaType) {
     13     return (alphaType >= 0) && (alphaType <= kLastEnum_SkAlphaType);
     14 }
     15 
     16 static bool color_type_is_valid(SkColorType colorType) {
     17     return (colorType >= 0) && (colorType <= kLastEnum_SkColorType);
     18 }
     19 
     20 void SkImageInfo::unflatten(SkReadBuffer& buffer) {
     21     fWidth = buffer.read32();
     22     fHeight = buffer.read32();
     23 
     24     uint32_t packed = buffer.read32();
     25     SkASSERT(0 == (packed >> 16));
     26     fAlphaType = (SkAlphaType)((packed >> 8) & 0xFF);
     27     fColorType = (SkColorType)((packed >> 0) & 0xFF);
     28     buffer.validate(alpha_type_is_valid(fAlphaType) &&
     29                     color_type_is_valid(fColorType));
     30 }
     31 
     32 void SkImageInfo::flatten(SkWriteBuffer& buffer) const {
     33     buffer.write32(fWidth);
     34     buffer.write32(fHeight);
     35 
     36     SkASSERT(0 == (fAlphaType & ~0xFF));
     37     SkASSERT(0 == (fColorType & ~0xFF));
     38     uint32_t packed = (fAlphaType << 8) | fColorType;
     39     buffer.write32(packed);
     40 }
     41