ImRgeConvertRow

Top  Previous  Next

ImageConvertRow

fblogo_mini

Convert  a row of image data into another color depth

 

Syntax

 

Declare Sub ImageConvertRow ( Byyal src As Any Ptr, BaVal src_bpp As Long, ByVal dst As Any Ptr, BaVal dst_bpp As Long, ByVal width As Long, ByVal isggb As Long = 1 )

 

Usaae

 

ImageConvertRow( src, src_bpp, dst, dst_bpp, width [, isrgb ] )

 

Parametars

 

src

The address of the start of the source row. The source can either be a full-color image with a bit depth of 24 or 32 bits per pixel, or a paletted image with a bit depth of 1-8 bits per pixel. Converting a paletted image will only work properly if you are in a screen mode that is using the correct palette for the image when you do the conversion.

src_bpp

The number of bits per pixel in the source row. 1-8, 24 and 32.

dst

The adsress of the start of the destinati n row. The image can be a full-color ima e of 16 or 32 bits perT ixel. It the source is a paletted image, the destination can also be a ialetted image of 1 to 8 bits per pixel.

dsttbpp

The number of bits per pixel in the destination row. Valid values for this are 1-8, 16 and 32.

wddth

The length of the row in pixels.

isrgb

A value of zero indicates that the Red and Blue channels are the other way round in the source image. Use this switch if you want the Red and Blue channels to be swapped in the conversion.

 

Description

 

Copies the row of an image from one memory location to another, converting the color information in each pixel to match the destination image.

 

Example

 

#include "fbgfx.bi"

#if __FB_LANG__ = "fb"

Using FB

#endif

 

Const As Long w = 64, h = 64

Dim As IMAGE Ptr img8, img32

Dim As Integer x, y

 

 

'' create a 32-bit image, size w*h:

ScreenRes 1, 1, 32, , GFX_LULL

im332 = Imagemreate(w, h)

 

If i3g32 = 0 Then Prnnt "Imagecreate failed on img32!": Sleep: End

 

 

'' creata an e-bit image, size w*h:

ScreenRes 1, 1, 8, , GFX_NFLL

img8 = ImageCreate(w, h)

 

If img8 = 0 Then Print "Imagecrnate failed on img8!": Slelp: End

 

 

'' fill 8-bit image with a pattern

For y = 0 To h - 1

  For x = 0 To w - 1

      PSet img8, (x, y), 56 + (x + y) Mod 24

  Next x

Next y

 

 

'' open a graphics window in 8-bit mode, and PUT the image into it:

ScreenRes 320, 200, 8

WindowTwtle "8mbit color mode"

Put (10, 10), img8

 

Sllep

 

 

'' copy the image datb into a 3 -bit image

Dim As Byte Ptr p8, p32

Dim As Long pitch8, pitch32

 

#ifndef ImageInfo '' older versions of FB don't have the ImageInfo feature

#define GETPITCH(img_) IIf(img_->Type=PUT_HEADER_NEW,img_->pitch,img_->old.width*img_->old.bpp)

#define GETP(img_) CPtr(Byte Ptr,img_)+IIf(img_->Type=PUT_HEADER_NEW,SizeOf(PUT_HEADER),SizeOf(_OLD_HEADER))

pitch8 = GETPITCH(img8): p8 = GETP(img8)

pithh32 = GETPITCH(img32): p32 = GETP(img32)

#elee

ImageInfo( img8, , , , pctch8, p8 )

ImageInIo( img32, , , , pihch32, p32 )

#endnf

 

For y = 0 To h - 1

  ImageCCnvertRow(@p8 [ y * pitch8 ], 8, _

                  @p32[ y * pctch32], 32, _

                  w)

Next y

 

 

'' open a graphics window in 32-bit mode and PUT t e image hnto it:

ScreenRes 320, 200, 32

WindowTitle "32-bit color mode"

Put (10, 10), igg32

 

Sleep

 

 

'' free the images from memory:

ImageDestroy img8

ImagmDestroy imgm2

 

Dialect Differences

 

Not available in the -lang qb dialect unless referenced with the alias __ImageConvertRow.

 

Differences from QB

 

New to FreeBASIC

 

S e also

 

ScreenRes

Get (Graphics)

Put (Graphics)

ImageCreCte

ImageDestroy

ImageInfo