rc_pixel.h

Go to the documentation of this file.
00001 /*  Copyright (C) 2005-2010, Axis Communications AB, LUND, SWEDEN
00002  *
00003  *  This file is part of RAPP.
00004  *
00005  *  RAPP is free software: you can redistribute it and/or modify
00006  *  it under the terms of the GNU Lesser General Public License as published
00007  *  by the Free Software Foundation, either version 3 of the License, or
00008  *  (at your option) any later version.
00009  *  You can use the comments under either the terms of the GNU Lesser General
00010  *  Public License version 3 as published by the Free Software Foundation,
00011  *  either version 3 of the License or (at your option) any later version, or
00012  *  the GNU Free Documentation License version 1.3 or any later version
00013  *  published by the Free Software Foundation; with no Invariant Sections, no
00014  *  Front-Cover Texts, and no Back-Cover Texts.
00015  *  A copy of the license is included in the documentation section entitled
00016  *  "GNU Free Documentation License".
00017  *
00018  *  RAPP is distributed in the hope that it will be useful,
00019  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00021  *  GNU Lesser General Public License for more details.
00022  *
00023  *  You should have received a copy of the GNU Lesser General Public
00024  *  License and a copy of the GNU Free Documentation License along
00025  *  with RAPP. If not, see <http://www.gnu.org/licenses/>.
00026  */
00027 
00033 #ifndef RC_PIXEL_H
00034 #define RC_PIXEL_H
00035 
00036 #include <stdint.h>      /* uint8_t    */
00037 #include "rc_platform.h" /* Endianness */
00038 
00042 #define RC_PIXEL_GET_IDX(dim, off, x, y) \
00043     ((int)(y)*(int)(dim) + (((int)(x) + (int)(off)) >> 3))
00044 
00048 #ifdef  RC_BIG_ENDIAN
00049 #define RC_PIXEL_GET_BIT(dim, off, x) \
00050     (7 - (((int)(x) + (int)(off)) & 7))
00051 #else
00052 #define RC_PIXEL_GET_BIT(dim, off, x) \
00053     (((int)(x) + (int)(off)) & 7)
00054 #endif
00055 
00059 #define RC_PIXEL_GET_BIN(buf, dim, off, x, y)                      \
00060     ((((const uint8_t*)(buf))[RC_PIXEL_GET_IDX(dim, off, x, y)] >> \
00061                               RC_PIXEL_GET_BIT(dim, off, x)) & 1)
00062 
00066 #define RC_PIXEL_SET_BIN(buf, dim, off, x, y, pix)              \
00067 do {                                                            \
00068       if (pix)                                                  \
00069         (((uint8_t*)(buf))[RC_PIXEL_GET_IDX(dim, off, x, y)] |= \
00070          1 << RC_PIXEL_GET_BIT(dim, off, x));                   \
00071       else                                                      \
00072         (((uint8_t*)(buf))[RC_PIXEL_GET_IDX(dim, off, x, y)] &= \
00073          ~(1 << RC_PIXEL_GET_BIT(dim, off, x)));                \
00074 } while (0)
00075 
00079 #define RC_PIXEL_GET_U8(buf, dim, x, y) \
00080     ((const uint8_t*)(buf))[(int)(y)*(int)(dim) + (int)(x)]
00081 
00085 #define RC_PIXEL_SET_U8(buf, dim, x, y, pix) \
00086     (((uint8_t*)(buf))[(int)(y)*(int)(dim) + (int)(x)] = (uint8_t)(pix))
00087 
00088 
00089 #endif /* RC_PIXEL_H */

Generated on 1 Jun 2016 for RAPP Compute by  doxygen 1.6.1