mlib_ImageZoomTranslateBlend 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_ImageZoomTranslateBlemediaLib)Library mlib_ImageZoomTranslateBlend(3MLIB)

NAME
       mlib_ImageZoomTranslateBlend - image scaling with alpha blending

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

       mlib_status mlib_ImageZoomTranslateBlend(mlib_image *dst,
	   const mlib_image *src, mlib_d64 zoomx, mlib_d64 zoomy,
	   mlib_d64 tx, mlib_d64 ty, mlib_filter filter, mlib_edge edge,
	   mlib_blend blend, mlib_s32 alpha, mlib_s32 cmask);

DESCRIPTION
       The  mlib_ImageZoomTranslateBlend() 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).

       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 overall alpha (alpha), the
       interpolated source alpha (interp_a) and the destination pixel's origi‐
       nal  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 = alpha*interp_a + (1 - alpha*interp_a)*dst_a;
	 if (w != 0.0) {
	      dst_r = (alpha*interp_r +
		   (1 - alpha*interp_a)*dst_a*dst_r)/w;
	      dst_g = (alpha*interp_g +
		   (1 - alpha*interp_a)*dst_a*dst_g)/w;
	      dst_b = (alpha*interp_b +
		   (1 - alpha*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 alpha, 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.

       filter	 Type of resampling filter.  It can be one of the following:

		   MLIB_NEAREST
		   MLIB_BILINEAR
		   MLIB_BICUBIC
		   MLIB_BICUBIC2

       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

       alpha	 Overall alpha for blending.

       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_ImageZoomTranslateTableBlend(3MLIB),
       attributes(5)

SunOS 5.10			  2 Mar 200mlib_ImageZoomTranslateBlend(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