Home | History | Annotate | Download | only in plugins
      1 /*
      2  * Copyright 2009, The Android Open Source Project
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *  * Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  *  * Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 // must include config.h first for webkit to fiddle with new/delete
     27 #include "config.h"
     28 #include "SkANP.h"
     29 #include "SkColorPriv.h"
     30 
     31 static bool anp_getPixelPacking(ANPBitmapFormat fmt, ANPPixelPacking* packing) {
     32     switch (fmt) {
     33         case kRGBA_8888_ANPBitmapFormat:
     34             if (packing) {
     35                 packing->AShift = SK_A32_SHIFT;
     36                 packing->ABits  = SK_A32_BITS;
     37                 packing->RShift = SK_R32_SHIFT;
     38                 packing->RBits  = SK_R32_BITS;
     39                 packing->GShift = SK_G32_SHIFT;
     40                 packing->GBits  = SK_G32_BITS;
     41                 packing->BShift = SK_B32_SHIFT;
     42                 packing->BBits  = SK_B32_BITS;
     43             }
     44             return true;
     45         case kRGB_565_ANPBitmapFormat:
     46             if (packing) {
     47                 packing->AShift = 0;
     48                 packing->ABits  = 0;
     49                 packing->RShift = SK_R16_SHIFT;
     50                 packing->RBits  = SK_R16_BITS;
     51                 packing->GShift = SK_G16_SHIFT;
     52                 packing->GBits  = SK_G16_BITS;
     53                 packing->BShift = SK_B16_SHIFT;
     54                 packing->BBits  = SK_B16_BITS;
     55             }
     56             return true;
     57         default:
     58             break;
     59     }
     60     return false;
     61 }
     62 
     63 ///////////////////////////////////////////////////////////////////////////////
     64 
     65 #define ASSIGN(obj, name)   (obj)->name = anp_##name
     66 
     67 void ANPBitmapInterfaceV0_Init(ANPInterface* value) {
     68     ANPBitmapInterfaceV0* i = reinterpret_cast<ANPBitmapInterfaceV0*>(value);
     69 
     70     ASSIGN(i, getPixelPacking);
     71 }
     72