genericopenlibs/liboil/src/composite_s.c
changeset 18 47c74d1534e1
equal deleted inserted replaced
0:e4d67989cc36 18:47c74d1534e1
       
     1 /*
       
     2  * LIBOIL - Library of Optimized Inner Loops
       
     3  * Copyright (c) 2003,2004 David A. Schleef <ds@schleef.org>
       
     4  * All rights reserved.
       
     5  *
       
     6  * Redistribution and use in source and binary forms, with or without
       
     7  * modification, are permitted provided that the following conditions
       
     8  * are met:
       
     9  * 1. Redistributions of source code must retain the above copyright
       
    10  *    notice, this list of conditions and the following disclaimer.
       
    11  * 2. Redistributions in binary form must reproduce the above copyright
       
    12  *    notice, this list of conditions and the following disclaimer in the
       
    13  *    documentation and/or other materials provided with the distribution.
       
    14  * 
       
    15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
       
    16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       
    17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       
    18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
       
    19  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       
    20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       
    21  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       
    22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
       
    23  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
       
    24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       
    25  * POSSIBILITY OF SUCH DAMAGE.
       
    26  */
       
    27 //Portions Copyright (c)  2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
       
    28 
       
    29 #ifdef HAVE_CONFIG_H
       
    30 #include "config.h"
       
    31 #endif
       
    32 
       
    33 #include <liboil.h>
       
    34 #include <liboilfunction.h>
       
    35 #include <liboilrandom.h>
       
    36 #include "liboil/liboilcolorspace.h"
       
    37 #include <liboiltest.h>
       
    38 #include <liboildebug.h>
       
    39 
       
    40 #ifdef __SYMBIAN32__
       
    41 #ifdef __ARMCC__
       
    42 #pragma diag_remark 186
       
    43 #endif//__ARMCC__
       
    44 #endif//__SYMBIAN32__
       
    45 
       
    46 #define COMPOSITE_OVER(d,s,m) ((d) + (s) - oil_muldiv_255((d),(m)))
       
    47 #define COMPOSITE_ADD(d,s) oil_clamp_255((d) + (s))
       
    48 #define COMPOSITE_IN(s,m) oil_muldiv_255((s),(m))
       
    49 
       
    50 /**
       
    51  * SECTION:liboilfuncs-pixel
       
    52  * @title: Pixel Operations
       
    53  * @short_description: Operations on pixels
       
    54  *
       
    55  * Pixels are 4-element arrays of type uint8_t.  The elements, in
       
    56  * memory order, represent the alpha, red, green, and blue
       
    57  * components respectively.  The color components are premultiplied
       
    58  * with the alpha component.  Liboil functions represent pixels
       
    59  * as the type uint32_t.
       
    60  *
       
    61  * The compositing operators IN, OVER, and ADD are defined the same
       
    62  * as cairo.
       
    63  *
       
    64  */
       
    65 static void
       
    66 handle_param (OilParameter *p)
       
    67 {
       
    68   int n;
       
    69 
       
    70   if (p->src_data) {
       
    71     if (p->type == OIL_TYPE_u32p) {
       
    72       uint32_t *ptr;
       
    73       ptr = (uint32_t *)oil_param_get_source_data (p);
       
    74       n = p->post_n;
       
    75       oil_random_argb (ptr, n);
       
    76     }
       
    77     if (p->type == OIL_TYPE_u8p) {
       
    78       uint8_t *ptr;
       
    79       ptr = (uint8_t *)oil_param_get_source_data (p);
       
    80       n = p->post_n;
       
    81       oil_random_alpha (ptr, n);
       
    82     }
       
    83   }
       
    84 }
       
    85 
       
    86 static void
       
    87 composite_test (OilTest *test)
       
    88 {
       
    89   handle_param(&test->params[OIL_ARG_SRC1]);
       
    90   handle_param(&test->params[OIL_ARG_SRC2]);
       
    91   handle_param(&test->params[OIL_ARG_INPLACE1]);
       
    92 }
       
    93 
       
    94 /**
       
    95  * oil_composite_in_argb:
       
    96  * @d_n: DEST
       
    97  * @s1_n: SRC
       
    98  * @s2_n: MASK
       
    99  * @n: number of elements
       
   100  *
       
   101  * Performs the compositing operation DEST = SRC IN MASK.
       
   102  */
       
   103 OIL_DEFINE_CLASS_FULL (composite_in_argb,
       
   104     "uint32_t *d_n, uint32_t *s1_n, uint8_t *s2_n, int n",
       
   105     composite_test);
       
   106 /**
       
   107  * oil_composite_in_argb_const_src:
       
   108  * @d_n: DEST
       
   109  * @s1_1: SRC
       
   110  * @s2_n: MASK
       
   111  * @n: number of elements
       
   112  *
       
   113  * Performs the compositing operation DEST = SRC IN MASK, for a constant
       
   114  * SRC.
       
   115  */
       
   116 OIL_DEFINE_CLASS_FULL (composite_in_argb_const_src,
       
   117     "uint32_t *d_n, uint32_t *s1_1, uint8_t *s2_n, int n",
       
   118     composite_test);
       
   119 /**
       
   120  * oil_composite_in_argb_const_mask:
       
   121  * @d_n: DEST
       
   122  * @s1_n: SRC
       
   123  * @s2_1: MASK
       
   124  * @n: number of elements
       
   125  *
       
   126  * Performs the compositing operation DEST = SRC IN MASK, for a constant
       
   127  * MASK.
       
   128  */
       
   129 OIL_DEFINE_CLASS_FULL (composite_in_argb_const_mask,
       
   130     "uint32_t *d_n, uint32_t *s1_n, uint8_t *s2_1, int n",
       
   131     composite_test);
       
   132 /**
       
   133  * oil_composite_over_argb:
       
   134  * @i_n: DEST
       
   135  * @s1_n: SRC
       
   136  * @n: number of elements
       
   137  *
       
   138  * Performs the compositing operation DEST = SRC OVER DEST.
       
   139  */
       
   140 OIL_DEFINE_CLASS_FULL (composite_over_argb,
       
   141     "uint32_t *i_n, uint32_t *s1_n, int n",
       
   142     composite_test);
       
   143 /**
       
   144  * oil_composite_over_argb_const_src:
       
   145  * @i_n: DEST
       
   146  * @s1_1: SRC
       
   147  * @n: number of elements
       
   148  *
       
   149  * Performs the compositing operation DEST = SRC OVER DEST, for a
       
   150  * constant SRC.
       
   151  */
       
   152 OIL_DEFINE_CLASS_FULL (composite_over_argb_const_src,
       
   153     "uint32_t *i_n, uint32_t *s1_1, int n",
       
   154     composite_test);
       
   155 /**
       
   156  * oil_composite_add_argb:
       
   157  * @i_n: DEST
       
   158  * @s1_n: SRC
       
   159  * @n: number of elements
       
   160  *
       
   161  * Performs the compositing operation DEST = SRC ADD DEST.
       
   162  */
       
   163 OIL_DEFINE_CLASS_FULL (composite_add_argb,
       
   164     "uint32_t *i_n, uint32_t *s1_n, int n",
       
   165     composite_test);
       
   166 /**
       
   167  * oil_composite_add_argb_const_src:
       
   168  * @i_n: DEST
       
   169  * @s1_1: SRC
       
   170  * @n: number of elements
       
   171  *
       
   172  * Performs the compositing operation DEST = SRC ADD DEST, for a
       
   173  * constant SRC.
       
   174  */
       
   175 OIL_DEFINE_CLASS_FULL (composite_add_argb_const_src,
       
   176     "uint32_t *i_n, uint32_t *s1_1, int n",
       
   177     composite_test);
       
   178 /**
       
   179  * oil_composite_in_over_argb:
       
   180  * @i_n: DEST
       
   181  * @s1_n: SRC
       
   182  * @s2_n: MASK
       
   183  * @n: number of elements
       
   184  *
       
   185  * Performs the compositing operation DEST = (SRC IN MASK) OVER DEST.
       
   186  */
       
   187 OIL_DEFINE_CLASS_FULL (composite_in_over_argb,
       
   188     "uint32_t *i_n, uint32_t *s1_n, uint8_t *s2_n, int n",
       
   189     composite_test);
       
   190 /**
       
   191  * oil_composite_in_over_argb_const_src:
       
   192  * @i_n: DEST
       
   193  * @s1_1: SRC
       
   194  * @s2_n: MASK
       
   195  * @n: number of elements
       
   196  *
       
   197  * Performs the compositing operation DEST = (SRC IN MASK) OVER DEST,
       
   198  * for a constant SRC.
       
   199  */
       
   200 OIL_DEFINE_CLASS_FULL (composite_in_over_argb_const_src,
       
   201     "uint32_t *i_n, uint32_t *s1_1, uint8_t *s2_n, int n",
       
   202     composite_test);
       
   203 /**
       
   204  * oil_composite_in_over_argb_const_mask:
       
   205  * @i_n: DEST
       
   206  * @s1_n: SRC
       
   207  * @s2_1: MASK
       
   208  * @n: number of elements
       
   209  *
       
   210  * Performs the compositing operation DEST = (SRC IN MASK) OVER DEST,
       
   211  * for a constant MASK.
       
   212  */
       
   213 OIL_DEFINE_CLASS_FULL (composite_in_over_argb_const_mask,
       
   214     "uint32_t *i_n, uint32_t *s1_n, uint8_t *s2_1, int n",
       
   215     composite_test);
       
   216 /**
       
   217  * oil_composite_over_u8:
       
   218  * @i_n: DEST
       
   219  * @s1_n: SRC
       
   220  * @n: number of elements
       
   221  *
       
   222  * Performs the compositing operation DEST = SRC OVER DEST.
       
   223  */
       
   224 OIL_DEFINE_CLASS_FULL (composite_over_u8,
       
   225     "uint8_t *i_n, uint8_t *s1_n, int n",
       
   226     composite_test);
       
   227 /**
       
   228  * oil_composite_add_u8:
       
   229  * @i_n: DEST
       
   230  * @s1_n: SRC
       
   231  * @n: number of elements
       
   232  *
       
   233  * Performs the compositing operation DEST = SRC ADD DEST.
       
   234  */
       
   235 OIL_DEFINE_CLASS_FULL (composite_add_u8,
       
   236     "uint8_t *i_n, uint8_t *s1_n, int n",
       
   237     composite_test);
       
   238 /**
       
   239  * oil_composite_add_u8_const_src:
       
   240  * @i_n: DEST
       
   241  * @s1_1: SRC
       
   242  * @n: number of elements
       
   243  *
       
   244  * Performs the compositing operation DEST = SRC ADD DEST.
       
   245  */
       
   246 OIL_DEFINE_CLASS_FULL (composite_add_u8_const_src,
       
   247     "uint8_t *i_n, uint8_t *s1_1, int n",
       
   248     composite_test);
       
   249 
       
   250 static void
       
   251 composite_in_argb_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   252 {
       
   253   int i;
       
   254 
       
   255   for(i=0;i<n;i++){
       
   256     dest[i] = oil_argb(
       
   257         COMPOSITE_IN(oil_argb_A(src[i]), mask[i]),
       
   258         COMPOSITE_IN(oil_argb_R(src[i]), mask[i]),
       
   259         COMPOSITE_IN(oil_argb_G(src[i]), mask[i]),
       
   260         COMPOSITE_IN(oil_argb_B(src[i]), mask[i]));
       
   261   }
       
   262 }
       
   263 OIL_DEFINE_IMPL_REF (composite_in_argb_ref, composite_in_argb);
       
   264 
       
   265 static void
       
   266 composite_in_argb_const_src_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   267 {
       
   268   int i;
       
   269 
       
   270   for(i=0;i<n;i++){
       
   271     dest[i] = oil_argb(
       
   272         COMPOSITE_IN(oil_argb_A(src[0]), mask[i]),
       
   273         COMPOSITE_IN(oil_argb_R(src[0]), mask[i]),
       
   274         COMPOSITE_IN(oil_argb_G(src[0]), mask[i]),
       
   275         COMPOSITE_IN(oil_argb_B(src[0]), mask[i]));
       
   276   }
       
   277 }
       
   278 OIL_DEFINE_IMPL_REF (composite_in_argb_const_src_ref, composite_in_argb_const_src);
       
   279 
       
   280 static void
       
   281 composite_in_argb_const_mask_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   282 {
       
   283   int i;
       
   284 
       
   285   for(i=0;i<n;i++){
       
   286     dest[i] = oil_argb(
       
   287         COMPOSITE_IN(oil_argb_A(src[i]), mask[0]),
       
   288         COMPOSITE_IN(oil_argb_R(src[i]), mask[0]),
       
   289         COMPOSITE_IN(oil_argb_G(src[i]), mask[0]),
       
   290         COMPOSITE_IN(oil_argb_B(src[i]), mask[0]));
       
   291   }
       
   292 }
       
   293 OIL_DEFINE_IMPL_REF (composite_in_argb_const_mask_ref, composite_in_argb_const_mask);
       
   294 
       
   295 static void
       
   296 composite_over_argb_ref (uint32_t *dest, const uint32_t *src, int n)
       
   297 {
       
   298   int i;
       
   299   uint8_t a;
       
   300 
       
   301   for(i=0;i<n;i++){
       
   302     a = oil_argb_A(src[i]);
       
   303     dest[i] = oil_argb(
       
   304         COMPOSITE_OVER(oil_argb_A(dest[i]),oil_argb_A(src[i]),a),
       
   305         COMPOSITE_OVER(oil_argb_R(dest[i]),oil_argb_R(src[i]),a),
       
   306         COMPOSITE_OVER(oil_argb_G(dest[i]),oil_argb_G(src[i]),a),
       
   307         COMPOSITE_OVER(oil_argb_B(dest[i]),oil_argb_B(src[i]),a));
       
   308   }
       
   309 
       
   310 }
       
   311 OIL_DEFINE_IMPL_REF (composite_over_argb_ref, composite_over_argb);
       
   312 
       
   313 static void
       
   314 composite_over_argb_const_src_ref (uint32_t *dest, const uint32_t *src, int n)
       
   315 {
       
   316   int i;
       
   317   uint8_t a;
       
   318 
       
   319   a = oil_argb_A(src[0]);
       
   320   for(i=0;i<n;i++){
       
   321     dest[i] = oil_argb(
       
   322         COMPOSITE_OVER(oil_argb_A(dest[i]),oil_argb_A(src[0]),a),
       
   323         COMPOSITE_OVER(oil_argb_R(dest[i]),oil_argb_R(src[0]),a),
       
   324         COMPOSITE_OVER(oil_argb_G(dest[i]),oil_argb_G(src[0]),a),
       
   325         COMPOSITE_OVER(oil_argb_B(dest[i]),oil_argb_B(src[0]),a));
       
   326   }
       
   327 
       
   328 }
       
   329 OIL_DEFINE_IMPL_REF (composite_over_argb_const_src_ref, composite_over_argb_const_src);
       
   330 
       
   331 static void
       
   332 composite_add_argb_ref (uint32_t *dest, const uint32_t *src, int n)
       
   333 {
       
   334   int i;
       
   335 
       
   336   for(i=0;i<n;i++){
       
   337     dest[i] = oil_argb(
       
   338         COMPOSITE_ADD(oil_argb_A(dest[i]),oil_argb_A(src[i])),
       
   339         COMPOSITE_ADD(oil_argb_R(dest[i]),oil_argb_R(src[i])),
       
   340         COMPOSITE_ADD(oil_argb_G(dest[i]),oil_argb_G(src[i])),
       
   341         COMPOSITE_ADD(oil_argb_B(dest[i]),oil_argb_B(src[i])));
       
   342   }
       
   343 
       
   344 }
       
   345 OIL_DEFINE_IMPL_REF (composite_add_argb_ref, composite_add_argb);
       
   346 
       
   347 static void
       
   348 composite_add_argb_const_src_ref (uint32_t *dest, const uint32_t *src, int n)
       
   349 {
       
   350   int i;
       
   351 
       
   352   for(i=0;i<n;i++){
       
   353     dest[i] = oil_argb(
       
   354         COMPOSITE_ADD(oil_argb_A(dest[i]),oil_argb_A(src[0])),
       
   355         COMPOSITE_ADD(oil_argb_R(dest[i]),oil_argb_R(src[0])),
       
   356         COMPOSITE_ADD(oil_argb_G(dest[i]),oil_argb_G(src[0])),
       
   357         COMPOSITE_ADD(oil_argb_B(dest[i]),oil_argb_B(src[0])));
       
   358   }
       
   359 
       
   360 }
       
   361 OIL_DEFINE_IMPL_REF (composite_add_argb_const_src_ref, composite_add_argb_const_src);
       
   362 
       
   363 static void
       
   364 composite_in_over_argb_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   365 {
       
   366   int i;
       
   367   uint8_t a;
       
   368   uint32_t color;
       
   369 
       
   370   for(i=0;i<n;i++){
       
   371     color = oil_argb(
       
   372         COMPOSITE_IN(oil_argb_A(src[i]), mask[i]),
       
   373         COMPOSITE_IN(oil_argb_R(src[i]), mask[i]),
       
   374         COMPOSITE_IN(oil_argb_G(src[i]), mask[i]),
       
   375         COMPOSITE_IN(oil_argb_B(src[i]), mask[i]));
       
   376     a = oil_argb_A(color);
       
   377     dest[i] = oil_argb(
       
   378         COMPOSITE_OVER(oil_argb_A(dest[i]),oil_argb_A(color),a),
       
   379         COMPOSITE_OVER(oil_argb_R(dest[i]),oil_argb_R(color),a),
       
   380         COMPOSITE_OVER(oil_argb_G(dest[i]),oil_argb_G(color),a),
       
   381         COMPOSITE_OVER(oil_argb_B(dest[i]),oil_argb_B(color),a));
       
   382   }
       
   383 
       
   384 }
       
   385 OIL_DEFINE_IMPL_REF (composite_in_over_argb_ref, composite_in_over_argb);
       
   386 
       
   387 static void
       
   388 composite_in_over_argb_const_src_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   389 {
       
   390   int i;
       
   391   uint8_t a;
       
   392   uint32_t color;
       
   393 
       
   394   for(i=0;i<n;i++){
       
   395     color = oil_argb(
       
   396         COMPOSITE_IN(oil_argb_A(src[0]), mask[i]),
       
   397         COMPOSITE_IN(oil_argb_R(src[0]), mask[i]),
       
   398         COMPOSITE_IN(oil_argb_G(src[0]), mask[i]),
       
   399         COMPOSITE_IN(oil_argb_B(src[0]), mask[i]));
       
   400     a = oil_argb_A(color);
       
   401     dest[i] = oil_argb(
       
   402         COMPOSITE_OVER(oil_argb_A(dest[i]),oil_argb_A(color),a),
       
   403         COMPOSITE_OVER(oil_argb_R(dest[i]),oil_argb_R(color),a),
       
   404         COMPOSITE_OVER(oil_argb_G(dest[i]),oil_argb_G(color),a),
       
   405         COMPOSITE_OVER(oil_argb_B(dest[i]),oil_argb_B(color),a));
       
   406   }
       
   407 
       
   408 }
       
   409 OIL_DEFINE_IMPL_REF (composite_in_over_argb_const_src_ref, composite_in_over_argb_const_src);
       
   410 
       
   411 static void
       
   412 composite_in_over_argb_const_mask_ref (uint32_t *dest, const uint32_t *src, const uint8_t *mask, int n)
       
   413 {
       
   414   int i;
       
   415   uint8_t a;
       
   416   uint32_t color;
       
   417 
       
   418   for(i=0;i<n;i++){
       
   419     color = oil_argb(
       
   420         COMPOSITE_IN(oil_argb_A(src[i]), mask[0]),
       
   421         COMPOSITE_IN(oil_argb_R(src[i]), mask[0]),
       
   422         COMPOSITE_IN(oil_argb_G(src[i]), mask[0]),
       
   423         COMPOSITE_IN(oil_argb_B(src[i]), mask[0]));
       
   424     a = oil_argb_A(color);
       
   425     dest[i] = oil_argb(
       
   426         COMPOSITE_OVER(oil_argb_A(dest[i]),oil_argb_A(color),a),
       
   427         COMPOSITE_OVER(oil_argb_R(dest[i]),oil_argb_R(color),a),
       
   428         COMPOSITE_OVER(oil_argb_G(dest[i]),oil_argb_G(color),a),
       
   429         COMPOSITE_OVER(oil_argb_B(dest[i]),oil_argb_B(color),a));
       
   430   }
       
   431 
       
   432 }
       
   433 OIL_DEFINE_IMPL_REF (composite_in_over_argb_const_mask_ref, composite_in_over_argb_const_mask);
       
   434 
       
   435 static void
       
   436 composite_add_u8_ref (uint8_t *dest, const uint8_t *src, int n)
       
   437 {
       
   438   int i;
       
   439 
       
   440   for(i=0;i<n;i++){
       
   441     dest[i] = COMPOSITE_ADD(dest[i],src[i]);
       
   442   }
       
   443 
       
   444 }
       
   445 OIL_DEFINE_IMPL_REF (composite_add_u8_ref, composite_add_u8);
       
   446 
       
   447 static void
       
   448 composite_add_u8_const_src_ref (uint8_t *dest, const uint8_t *src1_1, int n)
       
   449 {
       
   450   int i;
       
   451 
       
   452   for(i=0;i<n;i++){
       
   453     dest[i] = COMPOSITE_ADD(dest[i],src1_1[0]);
       
   454   }
       
   455 
       
   456 }
       
   457 OIL_DEFINE_IMPL_REF (composite_add_u8_const_src_ref, composite_add_u8_const_src);
       
   458 
       
   459 static void
       
   460 composite_over_u8_ref (uint8_t *dest, const uint8_t *src, int n)
       
   461 {
       
   462   int i;
       
   463 
       
   464   for(i=0;i<n;i++){
       
   465     dest[i] = COMPOSITE_OVER(dest[i],src[i],src[i]);
       
   466   }
       
   467 
       
   468 }
       
   469 OIL_DEFINE_IMPL_REF (composite_over_u8_ref, composite_over_u8);
       
   470 
       
   471 
       
   472 
       
   473 
       
   474 #ifdef	__SYMBIAN32__
       
   475  
       
   476 OilFunctionClass* __oil_function_class_composite_in_argb() {
       
   477 		return &_oil_function_class_composite_in_argb;
       
   478 }
       
   479 #endif
       
   480 
       
   481 #ifdef	__SYMBIAN32__
       
   482  
       
   483 OilFunctionClass* __oil_function_class_composite_in_argb_const_src() {
       
   484 		return &_oil_function_class_composite_in_argb_const_src;
       
   485 }
       
   486 #endif
       
   487 
       
   488 #ifdef	__SYMBIAN32__
       
   489  
       
   490 OilFunctionClass* __oil_function_class_composite_in_argb_const_mask() {
       
   491 		return &_oil_function_class_composite_in_argb_const_mask;
       
   492 }
       
   493 #endif
       
   494 
       
   495 #ifdef	__SYMBIAN32__
       
   496  
       
   497 OilFunctionClass* __oil_function_class_composite_over_argb() {
       
   498 		return &_oil_function_class_composite_over_argb;
       
   499 }
       
   500 #endif
       
   501 
       
   502 #ifdef	__SYMBIAN32__
       
   503  
       
   504 OilFunctionClass* __oil_function_class_composite_over_argb_const_src() {
       
   505 		return &_oil_function_class_composite_over_argb_const_src;
       
   506 }
       
   507 #endif
       
   508 
       
   509 #ifdef	__SYMBIAN32__
       
   510  
       
   511 OilFunctionClass* __oil_function_class_composite_add_argb() {
       
   512 		return &_oil_function_class_composite_add_argb;
       
   513 }
       
   514 #endif
       
   515 
       
   516 #ifdef	__SYMBIAN32__
       
   517  
       
   518 OilFunctionClass* __oil_function_class_composite_add_argb_const_src() {
       
   519 		return &_oil_function_class_composite_add_argb_const_src;
       
   520 }
       
   521 #endif
       
   522 
       
   523 #ifdef	__SYMBIAN32__
       
   524  
       
   525 OilFunctionClass* __oil_function_class_composite_in_over_argb() {
       
   526 		return &_oil_function_class_composite_in_over_argb;
       
   527 }
       
   528 #endif
       
   529 
       
   530 #ifdef	__SYMBIAN32__
       
   531  
       
   532 OilFunctionClass* __oil_function_class_composite_in_over_argb_const_src() {
       
   533 		return &_oil_function_class_composite_in_over_argb_const_src;
       
   534 }
       
   535 #endif
       
   536 
       
   537 #ifdef	__SYMBIAN32__
       
   538  
       
   539 OilFunctionClass* __oil_function_class_composite_in_over_argb_const_mask() {
       
   540 		return &_oil_function_class_composite_in_over_argb_const_mask;
       
   541 }
       
   542 #endif
       
   543 
       
   544 #ifdef	__SYMBIAN32__
       
   545  
       
   546 OilFunctionClass* __oil_function_class_composite_over_u8() {
       
   547 		return &_oil_function_class_composite_over_u8;
       
   548 }
       
   549 #endif
       
   550 
       
   551 #ifdef	__SYMBIAN32__
       
   552  
       
   553 OilFunctionClass* __oil_function_class_composite_add_u8() {
       
   554 		return &_oil_function_class_composite_add_u8;
       
   555 }
       
   556 #endif
       
   557 
       
   558 #ifdef	__SYMBIAN32__
       
   559  
       
   560 OilFunctionClass* __oil_function_class_composite_add_u8_const_src() {
       
   561 		return &_oil_function_class_composite_add_u8_const_src;
       
   562 }
       
   563 #endif
       
   564 
       
   565 
       
   566 
       
   567 #ifdef	__SYMBIAN32__
       
   568  
       
   569 OilFunctionImpl* __oil_function_impl_composite_in_argb_ref() {
       
   570 		return &_oil_function_impl_composite_in_argb_ref;
       
   571 }
       
   572 #endif
       
   573 
       
   574 #ifdef	__SYMBIAN32__
       
   575  
       
   576 OilFunctionImpl* __oil_function_impl_composite_in_argb_const_src_ref() {
       
   577 		return &_oil_function_impl_composite_in_argb_const_src_ref;
       
   578 }
       
   579 #endif
       
   580 
       
   581 #ifdef	__SYMBIAN32__
       
   582  
       
   583 OilFunctionImpl* __oil_function_impl_composite_in_argb_const_mask_ref() {
       
   584 		return &_oil_function_impl_composite_in_argb_const_mask_ref;
       
   585 }
       
   586 #endif
       
   587 
       
   588 #ifdef	__SYMBIAN32__
       
   589  
       
   590 OilFunctionImpl* __oil_function_impl_composite_over_argb_ref() {
       
   591 		return &_oil_function_impl_composite_over_argb_ref;
       
   592 }
       
   593 #endif
       
   594 
       
   595 #ifdef	__SYMBIAN32__
       
   596  
       
   597 OilFunctionImpl* __oil_function_impl_composite_over_argb_const_src_ref() {
       
   598 		return &_oil_function_impl_composite_over_argb_const_src_ref;
       
   599 }
       
   600 #endif
       
   601 
       
   602 #ifdef	__SYMBIAN32__
       
   603  
       
   604 OilFunctionImpl* __oil_function_impl_composite_add_argb_ref() {
       
   605 		return &_oil_function_impl_composite_add_argb_ref;
       
   606 }
       
   607 #endif
       
   608 
       
   609 #ifdef	__SYMBIAN32__
       
   610  
       
   611 OilFunctionImpl* __oil_function_impl_composite_add_argb_const_src_ref() {
       
   612 		return &_oil_function_impl_composite_add_argb_const_src_ref;
       
   613 }
       
   614 #endif
       
   615 
       
   616 #ifdef	__SYMBIAN32__
       
   617  
       
   618 OilFunctionImpl* __oil_function_impl_composite_in_over_argb_ref() {
       
   619 		return &_oil_function_impl_composite_in_over_argb_ref;
       
   620 }
       
   621 #endif
       
   622 
       
   623 #ifdef	__SYMBIAN32__
       
   624  
       
   625 OilFunctionImpl* __oil_function_impl_composite_in_over_argb_const_src_ref() {
       
   626 		return &_oil_function_impl_composite_in_over_argb_const_src_ref;
       
   627 }
       
   628 #endif
       
   629 
       
   630 #ifdef	__SYMBIAN32__
       
   631  
       
   632 OilFunctionImpl* __oil_function_impl_composite_in_over_argb_const_mask_ref() {
       
   633 		return &_oil_function_impl_composite_in_over_argb_const_mask_ref;
       
   634 }
       
   635 #endif
       
   636 
       
   637 #ifdef	__SYMBIAN32__
       
   638  
       
   639 OilFunctionImpl* __oil_function_impl_composite_add_u8_ref() {
       
   640 		return &_oil_function_impl_composite_add_u8_ref;
       
   641 }
       
   642 #endif
       
   643 
       
   644 #ifdef	__SYMBIAN32__
       
   645  
       
   646 OilFunctionImpl* __oil_function_impl_composite_add_u8_const_src_ref() {
       
   647 		return &_oil_function_impl_composite_add_u8_const_src_ref;
       
   648 }
       
   649 #endif
       
   650 
       
   651 #ifdef	__SYMBIAN32__
       
   652  
       
   653 OilFunctionImpl* __oil_function_impl_composite_over_u8_ref() {
       
   654 		return &_oil_function_impl_composite_over_u8_ref;
       
   655 }
       
   656 #endif
       
   657 
       
   658 
       
   659 
       
   660 #ifdef	__SYMBIAN32__
       
   661  
       
   662 EXPORT_C void** _oil_function_class_ptr_composite_in_argb ()	{
       
   663 	oil_function_class_ptr_composite_in_argb = __oil_function_class_composite_in_argb();
       
   664 	return &oil_function_class_ptr_composite_in_argb->func;
       
   665 	}
       
   666 #endif
       
   667 
       
   668 #ifdef	__SYMBIAN32__
       
   669  
       
   670 EXPORT_C void** _oil_function_class_ptr_composite_in_argb_const_src ()	{
       
   671 	oil_function_class_ptr_composite_in_argb_const_src = __oil_function_class_composite_in_argb_const_src();
       
   672 	return &oil_function_class_ptr_composite_in_argb_const_src->func;
       
   673 	}
       
   674 #endif
       
   675 
       
   676 #ifdef	__SYMBIAN32__
       
   677  
       
   678 EXPORT_C void** _oil_function_class_ptr_composite_in_argb_const_mask ()	{
       
   679 	oil_function_class_ptr_composite_in_argb_const_mask = __oil_function_class_composite_in_argb_const_mask();
       
   680 	return &oil_function_class_ptr_composite_in_argb_const_mask->func;
       
   681 	}
       
   682 #endif
       
   683 
       
   684 #ifdef	__SYMBIAN32__
       
   685  
       
   686 EXPORT_C void** _oil_function_class_ptr_composite_over_argb ()	{
       
   687 	oil_function_class_ptr_composite_over_argb = __oil_function_class_composite_over_argb();
       
   688 	return &oil_function_class_ptr_composite_over_argb->func;
       
   689 	}
       
   690 #endif
       
   691 
       
   692 #ifdef	__SYMBIAN32__
       
   693  
       
   694 EXPORT_C void** _oil_function_class_ptr_composite_over_argb_const_src ()	{
       
   695 	oil_function_class_ptr_composite_over_argb_const_src = __oil_function_class_composite_over_argb_const_src();
       
   696 	return &oil_function_class_ptr_composite_over_argb_const_src->func;
       
   697 	}
       
   698 #endif
       
   699 
       
   700 #ifdef	__SYMBIAN32__
       
   701  
       
   702 EXPORT_C void** _oil_function_class_ptr_composite_add_argb ()	{
       
   703 	oil_function_class_ptr_composite_add_argb = __oil_function_class_composite_add_argb();
       
   704 	return &oil_function_class_ptr_composite_add_argb->func;
       
   705 	}
       
   706 #endif
       
   707 
       
   708 #ifdef	__SYMBIAN32__
       
   709  
       
   710 EXPORT_C void** _oil_function_class_ptr_composite_add_argb_const_src ()	{
       
   711 	oil_function_class_ptr_composite_add_argb_const_src = __oil_function_class_composite_add_argb_const_src();
       
   712 	return &oil_function_class_ptr_composite_add_argb_const_src->func;
       
   713 	}
       
   714 #endif
       
   715 
       
   716 #ifdef	__SYMBIAN32__
       
   717  
       
   718 EXPORT_C void** _oil_function_class_ptr_composite_in_over_argb ()	{
       
   719 	oil_function_class_ptr_composite_in_over_argb = __oil_function_class_composite_in_over_argb();
       
   720 	return &oil_function_class_ptr_composite_in_over_argb->func;
       
   721 	}
       
   722 #endif
       
   723 
       
   724 #ifdef	__SYMBIAN32__
       
   725  
       
   726 EXPORT_C void** _oil_function_class_ptr_composite_in_over_argb_const_src ()	{
       
   727 	oil_function_class_ptr_composite_in_over_argb_const_src = __oil_function_class_composite_in_over_argb_const_src();
       
   728 	return &oil_function_class_ptr_composite_in_over_argb_const_src->func;
       
   729 	}
       
   730 #endif
       
   731 
       
   732 #ifdef	__SYMBIAN32__
       
   733  
       
   734 EXPORT_C void** _oil_function_class_ptr_composite_in_over_argb_const_mask ()	{
       
   735 	oil_function_class_ptr_composite_in_over_argb_const_mask = __oil_function_class_composite_in_over_argb_const_mask();
       
   736 	return &oil_function_class_ptr_composite_in_over_argb_const_mask->func;
       
   737 	}
       
   738 #endif
       
   739 
       
   740 #ifdef	__SYMBIAN32__
       
   741  
       
   742 EXPORT_C void** _oil_function_class_ptr_composite_over_u8 ()	{
       
   743 	oil_function_class_ptr_composite_over_u8 = __oil_function_class_composite_over_u8();
       
   744 	return &oil_function_class_ptr_composite_over_u8->func;
       
   745 	}
       
   746 #endif
       
   747 
       
   748 #ifdef	__SYMBIAN32__
       
   749  
       
   750 EXPORT_C void** _oil_function_class_ptr_composite_add_u8 ()	{
       
   751 	oil_function_class_ptr_composite_add_u8 = __oil_function_class_composite_add_u8();
       
   752 	return &oil_function_class_ptr_composite_add_u8->func;
       
   753 	}
       
   754 #endif
       
   755 
       
   756 #ifdef	__SYMBIAN32__
       
   757  
       
   758 EXPORT_C void** _oil_function_class_ptr_composite_add_u8_const_src ()	{
       
   759 	oil_function_class_ptr_composite_add_u8_const_src = __oil_function_class_composite_add_u8_const_src();
       
   760 	return &oil_function_class_ptr_composite_add_u8_const_src->func;
       
   761 	}
       
   762 #endif
       
   763