github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/graphics-magick/include/magick/pixel_iterator.h (about)

     1  /*
     2    Copyright (C) 2004-2016 GraphicsMagick Group
     3  
     4    This program is covered by multiple licenses, which are described in
     5    Copyright.txt. You should have received a copy of Copyright.txt with this
     6    package; otherwise see http://www.graphicsmagick.org/www/Copyright.html.
     7  
     8    Interfaces to support simple iterative pixel read/update access within an
     9    image or between two images.  These interfaces exist in order to eliminate
    10    large amounts of redundant code and to allow changing the underlying
    11    implementation without changing the using code. These interfaces
    12    intentionally omit any pixel position information in order to not constrain
    13    the implementation and to improve performance.
    14  
    15    User-provided callbacks must be thread-safe (preferably re-entrant) since
    16    they may be invoked by multiple threads.
    17  
    18    These interfaces have proven to be future safe (since implemented) and may
    19    be safely used by other applications/libraries.
    20  
    21    Written by Bob Friesenhahn, March 2004, Updated for regions 2008.
    22  
    23  */
    24  #ifndef _PIXEL_ROW_ITERATOR_H
    25  #define _PIXEL_ROW_ITERATOR_H
    26  
    27  #if defined(__cplusplus) || defined(c_plusplus)
    28  extern "C" {
    29  #endif
    30  
    31    /*
    32      Pixel iterator options.
    33    */
    34    typedef struct _PixelIteratorOptions
    35    {
    36      int           max_threads; /* Desired number of threads */
    37      unsigned long signature;
    38    } PixelIteratorOptions;
    39  
    40  
    41    /*
    42      Initialize pixel iterator options with defaults.
    43    */
    44    extern MagickExport void
    45    InitializePixelIteratorOptions(PixelIteratorOptions *options,
    46                                   ExceptionInfo *exception);
    47  
    48    /*
    49      Read-only access across pixel region.
    50    */
    51  
    52    typedef MagickPassFail (*PixelIteratorMonoReadCallback)
    53      (
    54       void *mutable_data,                   /* User provided mutable data */
    55       const void *immutable_data,       /* User provided immutable data */
    56       const Image *const_image,          /* Input image */
    57       const PixelPacket *pixels,         /* Pixel row */
    58       const IndexPacket *indexes,        /* Pixel indexes */
    59       const long npixels,                /* Number of pixels in row */
    60       ExceptionInfo *exception           /* Exception report */
    61       );
    62  
    63    extern MagickExport MagickPassFail
    64    PixelIterateMonoRead(PixelIteratorMonoReadCallback call_back,
    65                         const PixelIteratorOptions *options,
    66                         const char *description,
    67                         void *mutable_data,
    68                         const void *immutable_data,
    69                         const long x,
    70                         const long y,
    71                         const unsigned long columns,
    72                         const unsigned long rows,
    73                         const Image *image,
    74                         ExceptionInfo *exception);
    75  
    76  
    77    typedef MagickPassFail (*PixelIteratorMonoModifyCallback)
    78      (
    79       void *mutable_data,                /* User provided mutable data */
    80       const void *immutable_data,        /* User provided immutable data */
    81       Image *image,                      /* Modify image */
    82       PixelPacket *pixels,               /* Pixel row */
    83       IndexPacket *indexes,              /* Pixel row indexes */
    84       const long npixels,                /* Number of pixels in row */
    85       ExceptionInfo *exception           /* Exception report */
    86       );
    87  
    88    /*
    89      Write access across pixel region.
    90    */
    91    extern MagickExport MagickPassFail
    92    PixelIterateMonoSet(PixelIteratorMonoModifyCallback call_back,
    93                        const PixelIteratorOptions *options,
    94                        const char *description,
    95                        void *mutable_data,
    96                        const void *immutable_data,
    97                        const long x,
    98                        const long y,
    99                        const unsigned long columns,
   100                        const unsigned long rows,
   101                        Image *image,
   102                        ExceptionInfo *exception);
   103  
   104    /*
   105      Read-write access across pixel region.
   106    */
   107    extern MagickExport MagickPassFail
   108    PixelIterateMonoModify(PixelIteratorMonoModifyCallback call_back,
   109                           const PixelIteratorOptions *options,
   110                           const char *description,
   111                           void *mutable_data,
   112                           const void *immutable_data,
   113                           const long x,
   114                           const long y,
   115                           const unsigned long columns,
   116                           const unsigned long rows,
   117                           Image *image,
   118                           ExceptionInfo *exception);
   119  
   120    /*
   121      Read-only access across pixel regions of two images.
   122    */
   123  
   124    typedef MagickPassFail (*PixelIteratorDualReadCallback)
   125      (
   126       void *mutable_data,                /* User provided mutable data */
   127       const void *immutable_data,        /* User provided immutable data */
   128       const Image *first_image,          /* First Input image */
   129       const PixelPacket *first_pixels,   /* Pixel row in first image */
   130       const IndexPacket *first_indexes,  /* Pixel row indexes in first image */
   131       const Image *second_image,         /* Second Input image */
   132       const PixelPacket *second_pixels,  /* Pixel row in second image */
   133       const IndexPacket *second_indexes, /* Pixel row indexes in second image */
   134       const long npixels,                /* Number of pixels in row */
   135       ExceptionInfo *exception           /* Exception report */
   136       );
   137  
   138    extern MagickExport MagickPassFail
   139    PixelIterateDualRead(PixelIteratorDualReadCallback call_back,
   140                         const PixelIteratorOptions *options,
   141                         const char *description,
   142                         void *mutable_data,
   143                         const void *immutable_data,
   144                         const unsigned long columns,
   145                         const unsigned long rows,
   146                         const Image *first_image,
   147                         const long first_x,
   148                         const long first_y,
   149                         const Image *second_image,
   150                         const long second_x,
   151                         const long second_y,
   152                         ExceptionInfo *exception);
   153  
   154    /*
   155      Read-write access across pixel regions of two images. The first
   156      (source) image is accessed read-only while the second (update)
   157      image is accessed as read-write.
   158    */
   159  
   160    typedef MagickPassFail (*PixelIteratorDualModifyCallback)
   161      (
   162       void *mutable_data,                /* User provided mutable data */
   163       const void *immutable_data,        /* User provided immutable data */
   164       const Image *source_image,         /* Source image */
   165       const PixelPacket *source_pixels,  /* Pixel row in source image */
   166       const IndexPacket *source_indexes, /* Pixel row indexes in source image */
   167       Image *update_image,               /* Update image */
   168       PixelPacket *update_pixels,        /* Pixel row in update image */
   169       IndexPacket *update_indexes,       /* Pixel row indexes in update image */
   170       const long npixels,                /* Number of pixels in row */
   171       ExceptionInfo *exception           /* Exception report */
   172       );
   173  
   174    extern MagickExport MagickPassFail
   175    PixelIterateDualModify(PixelIteratorDualModifyCallback call_back,
   176                           const PixelIteratorOptions *options,
   177                           const char *description,
   178                           void *mutable_data,
   179                           const void *immutable_data,
   180                           const unsigned long columns,
   181                           const unsigned long rows,
   182                           const Image *source_image,
   183                           const long source_x,
   184                           const long source_y,
   185                           Image *update_image,
   186                           const long update_x,
   187                           const long update_y,
   188                           ExceptionInfo *exception);
   189  
   190    /*
   191      Read-write access across pixel regions of two images. The first
   192      (source) image is accessed read-only while the second (new)
   193      image is accessed for write (uninitialized pixels).
   194    */
   195    typedef PixelIteratorDualModifyCallback PixelIteratorDualNewCallback;
   196  
   197    extern MagickExport MagickPassFail
   198    PixelIterateDualNew(PixelIteratorDualNewCallback call_back,
   199                        const PixelIteratorOptions *options,
   200                        const char *description,
   201                        void *mutable_data,
   202                        const void *immutable_data,
   203                        const unsigned long columns,
   204                        const unsigned long rows,
   205                        const Image *source_image,
   206                        const long source_x,
   207                        const long source_y,
   208                        Image *new_image,
   209                        const long new_x,
   210                        const long new_y,
   211                        ExceptionInfo *exception);
   212  
   213    /*
   214      Read-read-write access across pixel regions of three images. The
   215      first two images are accessed read-only while the third is
   216      accessed as read-write.
   217    */
   218  
   219    typedef MagickPassFail (*PixelIteratorTripleModifyCallback)
   220      (
   221       void *mutable_data,                 /* User provided mutable data */
   222       const void *immutable_data,         /* User provided immutable data */
   223       const Image *source1_image,         /* Source 1 image */
   224       const PixelPacket *source1_pixels,  /* Pixel row in source 1 image */
   225       const IndexPacket *source1_indexes, /* Pixel row indexes in source 1 image */
   226       const Image *source2_image,         /* Source 2 image */
   227       const PixelPacket *source2_pixels,  /* Pixel row in source 2 image */
   228       const IndexPacket *source2_indexes, /* Pixel row indexes in source 2 image */
   229       Image *update_image,                /* Update image */
   230       PixelPacket *update_pixels,         /* Pixel row in update image */
   231       IndexPacket *update_indexes,        /* Pixel row indexes in update image */
   232       const long npixels,                 /* Number of pixels in row */
   233       ExceptionInfo *exception            /* Exception report */
   234       );
   235  
   236    extern MagickExport MagickPassFail
   237    PixelIterateTripleModify(PixelIteratorTripleModifyCallback call_back,
   238                             const PixelIteratorOptions *options,
   239                             const char *description,
   240                             void *mutable_data,
   241                             const void *immutable_data,
   242                             const unsigned long columns,
   243                             const unsigned long rows,
   244                             const Image *source1_image,
   245                             const Image *source2_image,
   246                             const long source_x,
   247                             const long source_y,
   248                             Image *update_image,
   249                             const long update_x,
   250                             const long update_y,
   251                             ExceptionInfo *exception);
   252  
   253    /*
   254      Read-write access across pixel regions of two images. The first
   255      (source) image is accessed read-only while the second (new)
   256      image is accessed for write (uninitialized pixels).
   257    */
   258    typedef PixelIteratorTripleModifyCallback PixelIteratorTripleNewCallback;
   259  
   260    extern MagickExport MagickPassFail
   261    PixelIterateTripleNew(PixelIteratorTripleNewCallback call_back,
   262                          const PixelIteratorOptions *options,
   263                          const char *description,
   264                          void *mutable_data,
   265                          const void *immutable_data,
   266                          const unsigned long columns,
   267                          const unsigned long rows,
   268                          const Image *source1_image,
   269                          const Image *source2_image,
   270                          const long source_x,
   271                          const long source_y,
   272                          Image *new_image,
   273                          const long new_x,
   274                          const long new_y,
   275                          ExceptionInfo *exception);
   276  
   277  #if defined(__cplusplus) || defined(c_plusplus)
   278  }
   279  #endif
   280  
   281  #endif /* _PIXEL_ROW_ITERATOR_H */
   282  
   283  /*
   284   * Local Variables:
   285   * mode: c
   286   * c-basic-offset: 2
   287   * fill-column: 78
   288   * End:
   289   */