Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

GLT Misc


Files

file  cbuffer.h
 Templated Circular Buffer Container.

file  compress.cpp
 Compression routines.

file  compress.h
 Compression routines.

file  config.h
 GLT Misc configuration file.

file  endian.cpp
 Endian conversion routines.

file  endian.h
 Endian conversion routines.

file  hash.h
 Integer Hashing Functions.

file  image.cpp
 Image utility routines.

file  image.h
 Image utility routines.

file  lru.h
 Templated LRU (Least Recently Used) Cache.

file  memhist.cpp
 Classes for memory use analysis.

file  observer.cpp
 Templated type-safe Observer-Subject pattern.

file  observer.h
 Templated type-safe Observer-Subject pattern.

file  refcount.h
 Templated reference-counting pointer.

file  stlutil.h
 Utility functions for STL containers.

file  string.cpp
 string and wstring utility routines

file  string.h
 string and wstring utility routines

file  text2src.cpp
 Routines for converting data to C/C++ source code.

file  text2src.h
 Routines for converting data to C/C++ source code.

file  timer.cpp
 Elapsed Time Object.

file  timer.h
 Elapsed Time Object.


Compounds

class  cbuffer
 Templated Circular Buffer Container. More...

class  lru
 Templated LRU (Least Recently Used) Cache. More...

class  GltObserverAbstract
 Abstract base-class for Observer classes. More...

class  GltObserver
 Type-safe base-class for Observer classes. More...

class  GltSubject
 Subject Class. More...

class  ReferenceCountPtr
 Templated reference-counting pointer. More...

class  Timer
 Elapsed Time Object. More...


Functions

bool compress (string &dest, const string &src)
 Compress memory block using LZF algorithm.

bool compress (std::string &dest, const std::string &src)
 Compress memory block using LZF algorithm.

bool decompress (string &dest, const string &src)
 Decompress memory block using LZF algorithm or zLib.

bool decompress (std::string &dest, const std::string &src)
 Decompress memory block using LZF algorithm or zLib.

bool decompress (string &dest, const void *s)
 Decompress memory block using LZF algorithm or zLib.

uint32 flip (const uint32 *v)
 Flip 32 bit integer.

uint16 flip (const uint16 *v)
 Flip 16 bit integer.

uint32 littleEndian (const uint32 *v)
 Convert little-endian 32 bit integer to local format.

uint16 littleEndian (const uint16 *v)
 Convert little-endian 16 bit integer to local format.

uint32 littleEndian (const uint32 &v)
 Convert little-endian 32 bit integer to local format.

uint16 littleEndian (const uint16 &v)
 Convert little-endian 32 bit integer to local format.

uint32 bigEndian (const uint32 *v)
 Convert big-endian 32 bit integer to local format.

uint16 bigEndian (const uint16 *v)
 Convert big-endian 16 bit integer to local format.

uint32 bigEndian (const uint32 &v)
 Convert big-endian 32 bit integer to local format.

uint32 bigEndian (const uint16 &v)
 Convert big-endian 16 bit integer to local format.

uint32 hashKnuth32 (uint32 key)
 Donald Knuth's 32 bit Mix Function.

uint32 hashJenkins32 (uint32 key)
 Robert Jenkin's 32 bit Mix Function.

uint32 hashWang32 (uint32 key)
 Thomas Wang's 32 bit Mix Function.

bool isGreyscale (const string &rgb)
 Is an RGB buffer greyscale?

bool isGreyscale (const std::string &rgb)
 Is an RGB buffer greyscale?

bool is256Colors (const string &rgb)
 Is an RGB buffer 256 colors or less?

bool is256Colors (const std::string &rgb)
 Is an RGB buffer 256 colors or less?

void getChannel (string &dest, const string &rgb, const uint32 size, const uint32 channel)
 Extract channel from image buffer.

void getChannel (std::string &dest, const std::string &src, const uint32 size, const uint32 channel)
 Extract channel from image buffer.

void rgb2Indexed (string &dest, const string &rgb)
 Convert RGB data to indexed.

void rgb2Indexed (std::string &dest, const std::string &rgb)
 Convert RGB data to indexed.

void indexed2rgb (string &dest, const string &indexed)
 Convert indexed data to RGB.

void indexed2rgb (std::string &dest, const std::string &indexed)
 Convert indexed data to RGB.

void flipImage (string &dest, const string &src, const int width, const int height)
 Flip image vertically.

void flipImage (std::string &dest, const std::string &src, const int width, const int height)
 Flip image vertically.

void mirrorImage (std::string &dest, const std::string &src, const int width, const int height)
 Mirror image horizontally.

void adjustGamma (std::string &image, const double gamma)
 Adjust image gamma.

void adjustHSV (std::string &image, const int width, const int height, const real hue, const real saturation, const real value)
 Adjust image hue, saturation and brightness.

bool stitchImages (string &image, const int dx, const int dy, const vector< string > &src, const int lineSize)
 Stitch tiled images.

bool stitchImages (std::string &image, const int dx, const int dy, const std::vector< std::string > &src, const int lineSize)
 Stitch tiled images.

bool decode (uint32 &width, uint32 &height, std::string &image, const std::string &data)
 Decode image data from PPM, BMP, TGA and PNG.

bool decodePPM (string &type, uint32 &width, uint32 &height, string &image, const string &data)
 Decode image data from PPM.

bool decodePPM (std::string &type, uint32 &width, uint32 &height, std::string &image, const std::string &data)
 Decode image data from PPM.

bool decodeBMP (uint32 &width, uint32 &height, string &image, const string &data)
 Decode image data from BMP.

bool decodeBMP (uint32 &width, uint32 &height, std::string &image, const std::string &data)
 Decode image data from BMP.

bool decodeTGA (uint32 &width, uint32 &height, string &image, const string &data)
 Decode image data from TGA.

bool decodeTGA (uint32 &width, uint32 &height, std::string &image, const std::string &data)
 Decode image data from TGA.

bool encodePPM (string &data, const uint32 width, const uint32 height, const string &image)
 Encode image data as RGB unix PPM or PGM.

bool encodePPM (std::string &data, const uint32 width, const uint32 height, const std::string &image)
 Encode image data as RGB unix PPM or PGM.

bool encodeBMP (std::string &data, const uint32 width, const uint32 height, const std::string &image)
 Encode image data as RGB Windows BMP.

bool encodeTGA (string &data, const uint32 width, const uint32 height, const string &image)
 Encode image data as RGB TGA.

bool encodeTGA (std::string &data, const uint32 width, const uint32 height, const std::string &image)
 Encode image data as RGB TGA.

template<class T, class A> void shrink (std::vector< T, A > &v)
 Shrink std::vector memory buffer to size of contents.

template<class T, class A> std::ostream & print (std::ostream &os, const std::vector< T, A > &v, const std::string &delim=",")
 Print std::vector contents to stream.

bool isBinary (const std::string &str)
 Test a string for binary bytes.

void dos2unix (string &dest, const string &src)
 Convert text to Unix end-of-line convention.

void dos2unix (std::string &dest, const std::string &src)
 Convert text to Unix end-of-line convention.

void dos2unix (wstring &dest, const wstring &src)
 Convert wide text to Unix end-of-line convention.

void dos2unix (std::wstring &dest, const std::wstring &src)
 Convert wide text to Unix end-of-line convention.

void unix2dos (string &dest, const string &src)
 Convert text to DOS end-of-line convention.

void unix2dos (std::string &dest, const std::string &src)
 Convert text to DOS end-of-line convention.

void unix2dos (wstring &dest, const wstring &src)
 Convert wide text to DOS end-of-line convention.

void unix2dos (std::wstring &dest, const std::wstring &src)
 Convert wide text to DOS end-of-line convention.

void readStream (istream &is, string &dest)
 Read an input stream into a string, until EOF.

void writeStream (ostream &os, const string &src)
 Write a string to an output stream.

void writeStream (std::ostream &os, const std::string &src)
 Write a string to an output stream.

void readUnicodeStream (istream &is, wstring &dest)
 Read an input stream into a wide string, until EOF.

void writeUnicodeStream (ostream &os, const wstring &src)
 Write a wide string to an output stream.

void writeUnicodeStream (std::ostream &os, const std::wstring &src)
 Write a wide string to an output stream.

void string2wstring (wstring &dest, const string &src)
 Convert a string to a wide string.

void string2wstring (std::wstring &dest, const std::string &src)
 Convert a string to a wide string.

void wstring2string (string &dest, const wstring &src)
 Convert a wide string to a string.

void wstring2string (std::string &dest, const std::wstring &src)
 Convert a wide string to a string.

void utf8decode (wstring &dest, const string &src)
 Convert a utf8 encoded string to a wide string.

void utf8decode (std::wstring &dest, const std::string &src)
 Convert a utf8 encoded string to a wide string.

void bin2src (std::ostream &os, const unsigned char *buffer, const int n)
 Output a memory buffer as C/C++ source.

void bin2src (std::ostream &os, const std::string &src)
 Output a binary string as C/C++ source.

void bin2src (std::ostream &os, std::istream &is)
 Encode binary input stream as C/C++ source, until EOF.

void bin2asm (std::ostream &os, const unsigned char *buffer, const int n)
 Output a memory buffer as gcc assembler.

void bin2asm (std::ostream &os, const std::string &src)
 Output a string as gcc assembler.

void bin2asm (std::ostream &os, std::istream &is)
 Encode input stream as gcc assembler.

unsigned int fromHex4 (unsigned char ch)
 Convert from ASCII character to binary.

unsigned char toHex4 (unsigned int val)
 Convert from binary to ASCII character.

bool stringSplit (vector< string > &vec, const string &str, const string &delim)
 Split a string, using a delimiter.

bool stringSplit (std::vector< std::string > &vec, const std::string &str, const std::string &delim)
 Split a string, using a delimiter.

bool stringMerge (const vector< string > &vec, string &str, const string &delim)
 Merge a vector of strings, inserting a delimiter.

bool stringMerge (const std::vector< std::string > &vec, std::string &str, const std::string &delim)
 Merge a vector of strings, inserting a delimiter.

double atof (const std::string &str)
 std::string version of ANSI C atof()

int atoi (const std::string &str)
 std::string version of ANSI C atoi()

long atol (const std::string &str)
 std::string version of ANSI C atol()

bool atob (const std::string &str)
 std::string to bool, inspired by ANSI C atoi()

template<class T, class I> const int atoc (const std::string &str, T(*f)(const std::string &), const std::string &match, const I &begin, const I &end)
 Generalised parsing of containers.

void text2source (ostream &os, istream &is)
 Convert text to C/C++ source code.

void binary2source (ostream &os, istream &is)
 Convert binary data to C/C++ source code.


Function Documentation

bool compress std::string &    dest,
const std::string &    src
 

Compress memory block using LZF algorithm.

Note:
Based on lzf: http://liblzf.plan9.de/
This algorithm is believed to be patent-free.
Lzf compression library Copyright (c) 2000 Marc Alexander Lehmann <pcg@goof.com> An extremely fast/free compression/decompression-method http://liblzf.plan9.de/

Based on ideas by Hermann Vogt, but liblzf is a total re-implementation of LZV that is not compatible to the original lzv code.

Definition at line 111 of file compress.cpp.

References byte.

bool compress std::string &    dest,
const std::string &    src
 

Compress memory block using LZF algorithm.

Note:
Based on lzf: http://liblzf.plan9.de/
This algorithm is believed to be patent-free.
Lzf compression library Copyright (c) 2000 Marc Alexander Lehmann <pcg@goof.com> An extremely fast/free compression/decompression-method http://liblzf.plan9.de/

Based on ideas by Hermann Vogt, but liblzf is a total re-implementation of LZV that is not compatible to the original lzv code.

bool decompress std::string &    dest,
const std::string &    src
 

Decompress memory block using LZF algorithm or zLib.

Note:
Based on lzf: http://liblzf.plan9.de/
This algorithm is believed to be patent-free.

Definition at line 164 of file compress.cpp.

References byte, and uint32.

bool decompress std::string &    dest,
const std::string &    src
 

Decompress memory block using LZF algorithm or zLib.

Note:
Based on lzf: http://liblzf.plan9.de/
This algorithm is believed to be patent-free.

bool decompress std::string &    dest,
const void *    src
 

Decompress memory block using LZF algorithm or zLib.

Note:
Based on lzf: http://liblzf.plan9.de/
This algorithm is believed to be patent-free.
This version is less bullet-proof than via std::string

Definition at line 213 of file compress.cpp.

References byte, and uint32.

Referenced by GltFontUnicode::init(), and GltTexture::init().

uint32 littleEndian const uint32   v [inline]
 

Convert little-endian 32 bit integer to local format.

Note:
Intel x86 is little-endian

Definition at line 90 of file endian.h.

References flip(), and uint32.

uint16 littleEndian const uint16   v [inline]
 

Convert little-endian 16 bit integer to local format.

Note:
Intel x86 is little-endian

Definition at line 106 of file endian.h.

References flip(), and uint16.

uint32 littleEndian const uint32   v [inline]
 

Convert little-endian 32 bit integer to local format.

Note:
Intel x86 is little-endian

Definition at line 122 of file endian.h.

References flip(), and uint32.

uint16 littleEndian const uint16   v [inline]
 

Convert little-endian 32 bit integer to local format.

Note:
Intel x86 is little-endian

Definition at line 138 of file endian.h.

References flip(), and uint16.

Referenced by decodeBMP(), decodeTGA(), and encodeTGA().

uint32 bigEndian const uint32   v [inline]
 

Convert big-endian 32 bit integer to local format.

Note:
Sparc and Motorolla are big-endian

Definition at line 154 of file endian.h.

References flip(), and uint32.

uint16 bigEndian const uint16   v [inline]
 

Convert big-endian 16 bit integer to local format.

Note:
Sparc and Motorolla are big-endian

Definition at line 170 of file endian.h.

References flip(), and uint16.

uint32 bigEndian const uint32   v [inline]
 

Convert big-endian 32 bit integer to local format.

Note:
Sparc and Motorolla are big-endian

Definition at line 186 of file endian.h.

References flip(), and uint32.

uint32 bigEndian const uint16   v [inline]
 

Convert big-endian 16 bit integer to local format.

Note:
Sparc and Motorolla are big-endian

Definition at line 202 of file endian.h.

References flip(), uint16, and uint32.

uint32 hashKnuth32 uint32    key [inline]
 

Donald Knuth's 32 bit Mix Function.

Parameters:
key  32 bit integer key
Discussed by Thomas Wang, HP http://www.concentric.net/~Ttwang/tech/inthash.htm

Definition at line 44 of file hash.h.

References uint32.

uint32 hashJenkins32 uint32    key [inline]
 

Robert Jenkin's 32 bit Mix Function.

Parameters:
key  32 bit integer key
Better variation in low order bits than Knuth's method

Discussed by Thomas Wang, HP http://www.concentric.net/~Ttwang/tech/inthash.htm

Definition at line 61 of file hash.h.

References uint32.

uint32 hashWang32 uint32    key [inline]
 

Thomas Wang's 32 bit Mix Function.

Parameters:
key  32 bit integer key
Better variation in low order bits than Knuth's method

Discussed by Thomas Wang, HP http://www.concentric.net/~Ttwang/tech/inthash.htm

Definition at line 85 of file hash.h.

References uint32.

bool isGreyscale const std::string &    rgb
 

Is an RGB buffer greyscale?

Parameters:
rgb  RGB image buffer

Definition at line 22 of file image.cpp.

bool isGreyscale const std::string &    rgb
 

Is an RGB buffer greyscale?

Parameters:
rgb  RGB image buffer

bool is256Colors const std::string &    rgb
 

Is an RGB buffer 256 colors or less?

Parameters:
rgb  RGB image buffer

Definition at line 36 of file image.cpp.

References byte, and uint32.

bool is256Colors const std::string &    rgb
 

Is an RGB buffer 256 colors or less?

Parameters:
rgb  RGB image buffer

void getChannel std::string &    dest,
const std::string &    src,
const uint32    size,
const uint32    channel
 

Extract channel from image buffer.

Parameters:
dest  Destination buffer
src  Source buffer in any format
size  Number of channels in source buffer
channel  Channel to be extracted

Definition at line 58 of file image.cpp.

References uint32.

void getChannel std::string &    dest,
const std::string &    src,
const uint32    size,
const uint32    channel
 

Extract channel from image buffer.

Parameters:
dest  Destination buffer
src  Source buffer in any format
size  Number of channels in source buffer
channel  Channel to be extracted

void rgb2Indexed std::string &    dest,
const std::string &    rgb
 

Convert RGB data to indexed.

Note:
Image data should be pre-quantised
Only the first 256 colors will be maintained
Parameters:
dest  Destination buffer
rgb  RGB source buffer

Definition at line 72 of file image.cpp.

References byte, and uint32.

void rgb2Indexed std::string &    dest,
const std::string &    rgb
 

Convert RGB data to indexed.

Note:
Image data should be pre-quantised
Only the first 256 colors will be maintained
Parameters:
dest  Destination buffer
rgb  RGB source buffer

void indexed2rgb std::string &    dest,
const std::string &    indexed
 

Convert indexed data to RGB.

Parameters:
dest  RGB Destination buffer
indexed  Indexed source buffer

Definition at line 126 of file image.cpp.

void indexed2rgb std::string &    dest,
const std::string &    indexed
 

Convert indexed data to RGB.

Parameters:
dest  RGB Destination buffer
indexed  Indexed source buffer

Referenced by GltTexture::init().

void flipImage std::string &    dest,
const std::string &    src,
const int    width,
const int    height
 

Flip image vertically.

Parameters:
dest  Destination buffer
src  Source buffer
width  Width of image (pixels)
height  Height of image (pixels)

Definition at line 147 of file image.cpp.

void flipImage std::string &    dest,
const std::string &    src,
const int    width,
const int    height
 

Flip image vertically.

Parameters:
dest  Destination buffer
src  Source buffer
width  Width of image (pixels)
height  Height of image (pixels)

Referenced by decodePPM(), and decodeTGA().

void mirrorImage std::string &    dest,
const std::string &    src,
const int    width,
const int    height
 

Mirror image horizontally.

Parameters:
dest  Destination buffer
src  Source buffer
width  Width of image (pixels)
height  Height of image (pixels)

Definition at line 167 of file image.cpp.

void adjustGamma std::string &    image,
const double    gamma
 

Adjust image gamma.

Parameters:
image  Image
gamma  Gamma co-efficient

Definition at line 189 of file image.cpp.

References byte.

Referenced by GltTexture::init().

void adjustHSV std::string &    image,
const int    width,
const int    height,
const real    hue,
const real    saturation,
const real    value
 

Adjust image hue, saturation and brightness.

Parameters:
image  Image
width  Width of image (pixels)
height  Height of image (pixels)
hue  Hue adjustment
saturation  Saturation adjustment
value  Value adjustment

Definition at line 204 of file image.cpp.

References GltColor::blue(), byte, GltColor::fromHSV(), GltColor::green(), real, GltColor::red(), and GltColor::toHSV().

Referenced by GltTexture::init().

bool decode uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from PPM, BMP, TGA and PNG.

Parameters:
width  Image width
height  Image height
image  Raw image data
data  Source data buffer

Definition at line 277 of file image.cpp.

References decodeBMP(), decodePPM(), decodeTGA(), and uint32.

bool decodePPM std::string &    type,
uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from PPM.

Parameters:
type  Type of PPM, P5 for PGM, P6 for PPM
width  Width of PPM
height  Height of PPM
image  Destination RGB or Greyscale buffer
data  Source data buffer
Todo:
Only P6 and P5 variants (binary RGB and Grey) recognised

Implement text PPM support

Definition at line 303 of file image.cpp.

References atoi(), flipImage(), and uint32.

bool decodePPM std::string &    type,
uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from PPM.

Parameters:
type  Type of PPM, P5 for PGM, P6 for PPM
width  Width of PPM
height  Height of PPM
image  Destination RGB or Greyscale buffer
data  Source data buffer
Todo:
Only P6 and P5 variants (binary RGB and Grey) recognised

Implement text PPM support

Referenced by decode().

bool decodeBMP uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from BMP.

Parameters:
width  Width of BMP
height  Height of BMP
image  Destination RGB buffer
data  Source data buffer
Todo:
Windows BMP import limited to RGB images

Definition at line 386 of file image.cpp.

References byte, littleEndian(), uint16, and uint32.

bool decodeBMP uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from BMP.

Parameters:
width  Width of BMP
height  Height of BMP
image  Destination RGB buffer
data  Source data buffer
Todo:
Windows BMP import limited to RGB images

Referenced by decode().

bool decodeTGA uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from TGA.

Parameters:
width  Width of BMP
height  Height of BMP
image  Destination RGB buffer
data  Source data buffer
Todo:
TGA import limited to uncompressed RGB or RGBA images

Definition at line 477 of file image.cpp.

References byte, flipImage(), littleEndian(), uint16, and uint32.

bool decodeTGA uint32   width,
uint32   height,
std::string &    image,
const std::string &    data
 

Decode image data from TGA.

Parameters:
width  Width of BMP
height  Height of BMP
image  Destination RGB buffer
data  Source data buffer
Todo:
TGA import limited to uncompressed RGB or RGBA images

Referenced by decode().

bool encodePPM std::string &    data,
const uint32    width,
const uint32    height,
const std::string &    image
 

Encode image data as RGB unix PPM or PGM.

Parameters:
data  PPM output buffer
width  Image width
height  Image height
image  Input image buffer

Definition at line 967 of file image.cpp.

References byte, and uint32.

bool encodePPM std::string &    data,
const uint32    width,
const uint32    height,
const std::string &    image
 

Encode image data as RGB unix PPM or PGM.

Parameters:
data  PPM output buffer
width  Image width
height  Image height
image  Input image buffer

Referenced by GltFrameBufferStencil< StencilType, GlStencilType >::writePPM(), GltFrameBufferZ< DepthType, GlDepthType >::writePPM(), and GltFrameBufferRGB::writePPM().

bool encodeBMP std::string &    data,
const uint32    width,
const uint32    height,
const std::string &    image
 

Encode image data as RGB Windows BMP.

Parameters:
data  BMP output buffer
width  Image width
height  Image height
image  Input image buffer
Todo:
Not yet implemented

bool encodeTGA std::string &    data,
const uint32    width,
const uint32    height,
const std::string &    image
 

Encode image data as RGB TGA.

Parameters:
data  TGA output buffer
width  Image width
height  Image height
image  Input image buffer
Todo:
TGA RGBA alpha channel export

Definition at line 1013 of file image.cpp.

References byte, littleEndian(), uint16, and uint32.

bool encodeTGA std::string &    data,
const uint32    width,
const uint32    height,
const std::string &    image
 

Encode image data as RGB TGA.

Parameters:
data  TGA output buffer
width  Image width
height  Image height
image  Input image buffer
Todo:
TGA RGBA alpha channel export

Referenced by GltFrameBufferStencil< StencilType, GlStencilType >::writeTGA(), GltFrameBufferZ< DepthType, GlDepthType >::writeTGA(), and GltFrameBufferRGB::writeTGA().

template<class T, class A>
void shrink std::vector< T, A > &    v
 

Shrink std::vector memory buffer to size of contents.

Parameters:
v  std::vector to be shrunk
Todo:
deque version

A little trick to shrink vector back to minimum possible size. Works on MSVC 6.0 and cygwin gcc 2.95.3-5.

Definition at line 51 of file stlutil.h.

template<class T, class A>
std::ostream& print std::ostream &    os,
const std::vector< T, A > &    v,
const std::string &    delim = ","
 

Print std::vector contents to stream.

Parameters:
os  Output stream
v  std::vector to be printed
delim  Delimiter
Examples:
string.cpp.

Definition at line 71 of file stlutil.h.

template<class T, class I>
const int atoc const std::string &    str,
T(*    f)(const std::string &),
const std::string &    match,
const I &    begin,
const I &    end
 

Generalised parsing of containers.

Parameters:
str  string to be parsed
f  string to element parsing function. atof, atoi etc..
match  characters the form an element. "+-eE.0123456789"
begin  iterator to first container element
end  iterator to last+1 container element
Examples:
string.cpp.

Definition at line 258 of file string.h.

Referenced by Matrix::Matrix(), Vector::Vector(), and Vector4::Vector4().


Generated on Tue Nov 5 11:11:49 2002 for GLT by doxygen1.2.18