NCEPLIBS-g2c  1.7.0
pngpack.c File Reference

Function to pack data with PNG compression. More...

#include <stdlib.h>
#include <math.h>
#include "grib2_int.h"

Go to the source code of this file.

Functions

void pngpack (float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
 This subroutine packs up a float data field into PNG image format. More...
 
static void pngpack_int (void *fld, int fld_is_double, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
 This internal function packs up float or double data into PNG image format. More...
 
void pngpackd (double *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
 This subroutine packs up a double data field into PNG image format. More...
 

Detailed Description

Function to pack data with PNG compression.

Author
Stephen Gilbert
Date
2003-08-27

Definition in file pngpack.c.

Function Documentation

◆ pngpack()

void pngpack ( float *  fld,
g2int  width,
g2int  height,
g2int idrstmpl,
unsigned char *  cpack,
g2int lcpack 
)

This subroutine packs up a float data field into PNG image format.

After the data field is scaled, and the reference value is subtracted out, it is treated as a grayscale image and passed to a PNG encoder. It also fills in GRIB2 Data Representation Template 5.41 or 5.40010 with the appropriate values.

Parameters
fldPointer to array of float that contains the data values to pack.
widthNumber of points in the x direction.
heightNumber of points in the y direction.
idrstmplContains the array of values for Data Representation Template 5.41 or 5.40010.
  • 0 Reference value - ignored on input, set by pngpack routine.
  • 1 Binary Scale Factor - used on input.
  • 2 Decimal Scale Factor - used on input.
  • 3 number of bits for each grayscale pixel value - ignored on input.
  • 4 Original field type - currently ignored on input, set = 0 on output. Data values assumed to be reals.
cpackThe packed data field.
lcpacklength of packed field cpack.
Author
Stephen Gilbert
Date
2003-08-27
Author
Ed Hartnett

Definition at line 224 of file pngpack.c.

References pngpack_int().

Referenced by g2_addfield().

◆ pngpack_int()

static void pngpack_int ( void *  fld,
int  fld_is_double,
g2int  width,
g2int  height,
g2int idrstmpl,
unsigned char *  cpack,
g2int lcpack 
)
static

This internal function packs up float or double data into PNG image format.

This is called by pngpack() and pngpackd().

After the data field is scaled, and the reference value is subtracted out, it is treated as a grayscale image and passed to a PNG encoder. It also fills in GRIB2 Data Representation Template 5.41 or 5.40010 with the appropriate values.

Parameters
fldPointer to array of float or double that contains the data values to pack.
fld_is_doubleIf non-zero, then fld is double, otherwise float.
widthNumber of points in the x direction.
heightNumber of points in the y direction.
idrstmplContains the array of values for Data Representation Template 5.41 or 5.40010.
  • 0 Reference value - ignored on input, set by pngpack routine.
  • 1 Binary Scale Factor - used on input.
  • 2 Decimal Scale Factor - used on input.
  • 3 number of bits for each grayscale pixel value - ignored on input.
  • 4 Original field type - currently ignored on input, set = 0 on output. Data values assumed to be reals.
cpackThe packed data field.
lcpacklength of packed field cpack.
Returns
void
Author
Ed Hartnett
Date
Aug 8, 2022

Definition at line 41 of file pngpack.c.

References ALOG2, enc_png(), int_power(), LOG, mkieee(), and sbits().

Referenced by pngpack(), and pngpackd().

◆ pngpackd()

void pngpackd ( double *  fld,
g2int  width,
g2int  height,
g2int idrstmpl,
unsigned char *  cpack,
g2int lcpack 
)

This subroutine packs up a double data field into PNG image format.

After the data field is scaled, and the reference value is subtracted out, it is treated as a grayscale image and passed to a PNG encoder. It also fills in GRIB2 Data Representation Template 5.41 or 5.40010 with the appropriate values.

Parameters
fldPointer to array of double that contains the data values to pack.
widthNumber of points in the x direction.
heightNumber of points in the y direction.
idrstmplContains the array of values for Data Representation Template 5.41 or 5.40010.
  • 0 Reference value - ignored on input, set by pngpack routine.
  • 1 Binary Scale Factor - used on input.
  • 2 Decimal Scale Factor - used on input.
  • 3 number of bits for each grayscale pixel value - ignored on input.
  • 4 Original field type - currently ignored on input, set = 0 on output. Data values assumed to be reals.
cpackThe packed data field.
lcpacklength of packed field cpack.
Author
Ed Hartnett
Date
Aug 8, 2022

Definition at line 259 of file pngpack.c.

References pngpack_int().