mlib_ImageZoomTranslateTableBlend man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

mlib_ImageZoomTranslateTabmediaLib3Libmlib_ImageZoomTranslateTableBlend(3MLIB)

NAME
       mlib_ImageZoomTranslateTableBlend  -  image scaling using interpolation
       table, combined with alpha blending

SYNOPSIS
       cc [ flag... ] file... -lmlib [ library... ]
       #include <mlib.h>

       mlib_status mlib_ImageZoomTranslateTableBlend(mlib_image *dst,
	   const mlib_image *src, mlib_d64 zoomx, mlib_d64 zoomy,
	   mlib_d64 tx, mlib_d64 ty, const void *table, mlib_edge edge,
	   mlib_blend blend, mlib_s32 cmask);

DESCRIPTION
       The mlib_ImageZoomTranslateTableBlend() function will enlarge or minify
       the  source  image  by  the X and Y zoom factors, with translation, and
       blend it with the destination image.

       It uses the following equation for coordinate mapping:

	 xd = zoomx*xs + tx
	 yd = zoomy*ys + ty

       where a point with coordinates (xs, ys) in the source image  is	mapped
       to a point with coordinates (xd, yd) in the destination image.

       The  center  of	the  upper-left corner pixel of an image is located at
       (0.5, 0.5).

       It is assumed that the  overall	alpha  for  controlling	 the  blending
       between	the source image and the destination image has been pre-multi‐
       plied to the interpolation table for better performance.

       The alpha blending  is  closely	combined  with	the  interpolation  to
       achieve better performance.  Part of alpha blending has to be performed
       before or together with the interpolation if the source	image  has  an
       alpha  channel.	In that case, the color components of each neighboring
       source pixel which participates in the interpolation (src_r  and	 etc.)
       have  to	 be  pre-multiplied  by the alpha component of the same source
       pixel  (src_a).	 After	the  interpolation,  the  interpolated	 alpha
       (interp_a,  which  has  been multiplied by the overall alpha because of
       the pre-multiplied interpolation table)	and  the  destination  pixel's
       original	 alpha	(dst_a,	 if  any)  are	used to blend the interpolated
       source pixel (with components interp_r and etc.) with  the  destination
       pixel (with components dst_r and etc.).

       The  MLIB_BLEND_GTK_SRC	blending  is  similar  to  the SRC rule of the
       Porter-Duff rules for image compositing.	 It is defined by

	 Cd = Cs
	 Ad = As

       in general, and by the following formula for this function:

	 if (interp_a != 0.0) {
	      if (dst_has_alpha) {
		   dst_r = interp_r/interp_a;
		   dst_g = interp_g/interp_a;
		   dst_b = interp_b/interp_a;
		   dst_a = interp_a;
	      } else {
		   dst_r = interp_r;
		   dst_g = interp_g;
		   dst_b = interp_b;
		   dst_a = 1.0; // implied
	      }
	 } else {
	      dst_r = 0;
	      dst_g = 0;
	      dst_b = 0;
	      dst_a = 0;
	 }

       The MLIB_BLEND_GTK_SRC_OVER  or	MLIB_BLEND_GTK_SRC_OVER2  blending  is
       similar	to  the	 SRC_OVER rule of the Porter-Duff rules for image com‐
       positing.  It is defined by

	 Cd = Cs + Cd*(1 - As)
	 Ad = As + Ad*(1 - As)

       in general, and by the following formula for this function:

	 w = interp_a + (1 - interp_a)*dst_a;
	 if (w != 0.0) {
	      dst_r = (interp_r + (1 - interp_a)*dst_a*dst_r)/w;
	      dst_g = (interp_g + (1 - interp_a)*dst_a*dst_g)/w;
	      dst_b = (interp_b + (1 - interp_a)*dst_a*dst_b)/w;
	      dst_a = w;
	 } else if (MLIB_BLEND_GTK_SRC_OVER) {
	      dst_r = 0;
	      dst_g = 0;
	      dst_b = 0;
	      dst_a = 0;
	 }

       where src_a, interp_a and dst_a are assumed to be in the range of [0.0,
       1.0].

       For  an	image with 4 channels, the first or the fourth channel is con‐
       sidered the alpha channel if cmask equals  8  or	 1,  respectively.  An
       image  with 3 channels is considered to have no alpha channel, which is
       equivalent to having an alpha channel filled with all 1.0, or  0xff  in
       case of MLIB_BYTE, if the general formulas for blending shown above are
       used.

       Both src and dst must be of type MLIB_BYTE. They can have either 3 or 4
       channels.

       The src image cannot have width or height larger than 32767.

PARAMETERS
       The function takes the following arguments:

       dst	Pointer to destination image.

       src	Pointer to first source image.

       zoomx	X zoom factor.	zoomx > 0.0.

       zoomy	Y zoom factor.	zoomy > 0.0.

       tx	X translation.

       ty	Y translation.

       table	Pointer to interpolation table structure.

       edge	Type of edge condition.	 It can be one of the following:

		  MLIB_EDGE_DST_NO_WRITE
		  MLIB_EDGE_DST_FILL_ZERO
		  MLIB_EDGE_OP_NEAREST
		  MLIB_EDGE_SRC_EXTEND
		  MLIB_EDGE_SRC_EXTEND_INDEF
		  MLIB_EDGE_SRC_PADDED

       blend	Type of alpha blending.	 It can be one of the following:

		  MLIB_BLEND_GTK_SRC
		  MLIB_BLEND_GTK_SRC_OVER
		  MLIB_BLEND_GTK_SRC_OVER2

       cmask	Channel mask to indicate the alpha channel.

RETURN VALUES
       The  function  returns MLIB_SUCCESS if successful. Otherwise it returns
       MLIB_FAILURE.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Committed			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │MT-Safe			   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       mlib_ImageZoomBlend(3MLIB),	  mlib_ImageZoomTranslateBlend(3MLIB),
       mlib_ImageInterpTableCreate(3MLIB), attributes(5)

SunOS 5.10			  2 Mamlib_ImageZoomTranslateTableBlend(3MLIB)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net