/* GStreamer
 * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "paint.h"
#include "gstmask.h"

enum
{
  BOX_VERTICAL = 1,
  BOX_HORIZONTAL = 2,
  BOX_CLOCK = 3,
  TRIGANLE_LINEAR = 4
};

static const gint boxes_1b[][7] = {
#define WIPE_B1_1       0
  {BOX_VERTICAL, 0, 0, 0, 1, 1, 1},
#define WIPE_B1_2       1
  {BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1}
};

static const gint boxes_2b[][7 * 2] = {
#define WIPE_B2_21      0
  {BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
      BOX_VERTICAL, 1, 0, 0, 2, 2, 1},
#define WIPE_B2_22      1
  {BOX_HORIZONTAL, 0, 0, 1, 2, 1, 0,
      BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1},
};

static const gint box_clock_1b[][1 * 10] = {
#define WIPE_B1_241     0
  {BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1},
#define WIPE_B1_242     1
  {BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1},
#define WIPE_B1_243     2
  {BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B1_244     3
  {BOX_CLOCK, 1, 0, 0, 0, 0, 0, 1, 1, 1},
};

#define WIPE_B2_221     0
static const gint box_clock_2b[][2 * 10] = {
#define WIPE_B2_221     0
  {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
      BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2},
#define WIPE_B2_222     1
  {BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1,
      BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 0, 2},
#define WIPE_B2_223     2
  {BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
      BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2},
#define WIPE_B2_224     3
  {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
      BOX_CLOCK, 0, 1, 0, 2, 1, 1, 0, 2, 2},
#define WIPE_B2_225     4
  {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
      BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1},
#define WIPE_B2_226     5
  {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
      BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1},
#define WIPE_B2_231     6
  {BOX_CLOCK, 1, 0, 0, 1, 2, 0, 2, 0, 1,
      BOX_CLOCK, 1, 0, 0, 1, 2, 0, 0, 0, 1},
#define WIPE_B2_232     7
  {BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 0, 1,
      BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 2, 1},
#define WIPE_B2_233     8
  {BOX_CLOCK, 1, 2, 0, 1, 0, 0, 2, 2, 1,
      BOX_CLOCK, 1, 2, 0, 1, 0, 0, 0, 2, 1},
#define WIPE_B2_234     9
  {BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 0, 1,
      BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 2, 1},
#define WIPE_B2_251     10
  {BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 2, 1,
      BOX_CLOCK, 2, 0, 0, 1, 0, 0, 2, 2, 1},
#define WIPE_B2_252     11
  {BOX_CLOCK, 0, 0, 0, 0, 1, 0, 2, 0, 1,
      BOX_CLOCK, 0, 2, 0, 0, 1, 0, 2, 2, 1},
#define WIPE_B2_253     12
  {BOX_CLOCK, 0, 2, 0, 1, 2, 0, 0, 0, 1,
      BOX_CLOCK, 2, 2, 0, 1, 2, 0, 2, 0, 1},
#define WIPE_B2_254     13
  {BOX_CLOCK, 2, 0, 0, 2, 1, 0, 0, 0, 1,
      BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1},
};

static const gint box_clock_4b[][4 * 10] = {
#define WIPE_B4_201     0
  {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
        BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
        BOX_CLOCK, 1, 1, 0, 1, 2, 2, 0, 1, 3,
      BOX_CLOCK, 1, 1, 0, 0, 1, 3, 1, 0, 4},
#define WIPE_B4_202     1
  {BOX_CLOCK, 1, 1, 0, 1, 0, 3, 2, 1, 4,
        BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
        BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
      BOX_CLOCK, 1, 1, 0, 0, 1, 2, 1, 0, 3},
#define WIPE_B4_203     2
  {BOX_CLOCK, 1, 1, 0, 1, 0, 2, 2, 1, 3,
        BOX_CLOCK, 1, 1, 0, 2, 1, 3, 1, 2, 4,
        BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
      BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2},
#define WIPE_B4_204     3
  {BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
        BOX_CLOCK, 1, 1, 0, 2, 1, 2, 1, 2, 3,
        BOX_CLOCK, 1, 1, 0, 1, 2, 3, 0, 1, 4,
      BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_205     4
  {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
        BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
        BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
      BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2},
#define WIPE_B4_206     5
  {BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
        BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
        BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
      BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_207     6
  {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
        BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
        BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
      BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1},
#define WIPE_B4_211     7
  {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
        BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
        BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
      BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 2, 2},
#define WIPE_B4_212     8
  {BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
        BOX_CLOCK, 1, 1, 0, 1, 0, 1, 0, 1, 2,
        BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
      BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2},
#define WIPE_B4_213     9
  {BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
        BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
        BOX_CLOCK, 1, 1, 0, 1, 2, 0, 2, 1, 1,
      BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1},
#define WIPE_B4_214     10
  {BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
        BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
        BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1,
      BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 2, 1},
#define WIPE_B4_227     11
  {BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 1, 1,
        BOX_CLOCK, 1, 0, 0, 1, 1, 1, 0, 0, 2,
        BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 1, 1,
      BOX_CLOCK, 1, 2, 0, 1, 1, 1, 0, 2, 2},
#define WIPE_B4_228     12
  {BOX_CLOCK, 0, 1, 0, 0, 0, 0, 1, 1, 1,
        BOX_CLOCK, 0, 1, 0, 1, 1, 1, 0, 2, 2,
        BOX_CLOCK, 2, 1, 0, 2, 0, 0, 1, 1, 1,
      BOX_CLOCK, 2, 1, 0, 1, 1, 1, 2, 2, 2},
#define WIPE_B4_235     13
  {BOX_CLOCK, 1, 0, 0, 1, 1, 0, 0, 0, 1,
        BOX_CLOCK, 1, 0, 0, 1, 1, 0, 2, 0, 1,
        BOX_CLOCK, 1, 2, 0, 1, 1, 0, 2, 2, 1,
      BOX_CLOCK, 1, 2, 0, 1, 1, 0, 0, 2, 1},
#define WIPE_B4_236     14
  {BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1,
        BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 2, 1,
        BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 0, 1,
      BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1},
};

static const gint box_clock_8b[][8 * 10] = {
#define WIPE_B8_261     0
  {BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1,
        BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 0, 2,
        BOX_CLOCK, 2, 1, 0, 2, 0, 2, 0, 1, 3,
        BOX_CLOCK, 2, 1, 0, 0, 1, 3, 2, 2, 4,
        BOX_CLOCK, 2, 3, 0, 2, 2, 0, 4, 3, 1,
        BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 4, 2,
        BOX_CLOCK, 2, 3, 0, 2, 4, 2, 0, 3, 3,
      BOX_CLOCK, 2, 3, 0, 0, 3, 3, 2, 2, 4},
#define WIPE_B8_262     1
  {BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 0, 1,
        BOX_CLOCK, 1, 2, 0, 1, 0, 1, 0, 2, 2,
        BOX_CLOCK, 1, 2, 0, 0, 2, 2, 1, 4, 3,
        BOX_CLOCK, 1, 2, 0, 1, 4, 3, 2, 2, 4,
        BOX_CLOCK, 3, 2, 0, 2, 2, 0, 3, 0, 1,
        BOX_CLOCK, 3, 2, 0, 3, 0, 1, 4, 2, 2,
        BOX_CLOCK, 3, 2, 0, 4, 2, 2, 3, 4, 3,
      BOX_CLOCK, 3, 2, 0, 3, 4, 3, 2, 2, 4},
#define WIPE_B8_263     2
  {BOX_CLOCK, 2, 1, 0, 2, 0, 0, 4, 1, 1,
        BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 2, 2,
        BOX_CLOCK, 2, 1, 0, 2, 0, 0, 0, 1, 1,
        BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 2, 2,
        BOX_CLOCK, 2, 3, 0, 2, 4, 0, 4, 3, 1,
        BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 2, 2,
        BOX_CLOCK, 2, 3, 0, 2, 4, 0, 0, 3, 1,
      BOX_CLOCK, 2, 3, 0, 0, 3, 1, 2, 2, 2},
#define WIPE_B8_264     3
  {BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
        BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2,
        BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 4, 1,
        BOX_CLOCK, 1, 2, 0, 1, 4, 1, 2, 2, 2,
        BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 0, 1,
        BOX_CLOCK, 3, 2, 0, 3, 0, 1, 2, 2, 2,
        BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 4, 1,
      BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2},
};

static const gint triangles_2t[][2 * 9] = {
  /* 3 -> 6 */
#define WIPE_T2_3       0
  {0, 0, 0, 0, 1, 1, 1, 1, 1,
      1, 0, 1, 0, 0, 0, 1, 1, 1},
#define WIPE_T2_4       WIPE_T2_3+1
  {0, 0, 1, 1, 0, 0, 0, 1, 1,
      1, 0, 0, 0, 1, 1, 1, 1, 1},
#define WIPE_T2_5       WIPE_T2_4+1
  {0, 0, 1, 0, 1, 1, 1, 1, 0,
      1, 0, 1, 0, 0, 1, 1, 1, 0},
#define WIPE_T2_6       WIPE_T2_5+1
  {0, 0, 1, 1, 0, 1, 0, 1, 0,
      1, 0, 1, 0, 1, 0, 1, 1, 1},
#define WIPE_T2_41      WIPE_T2_6+1
  {0, 0, 0, 1, 0, 1, 0, 1, 1,
      1, 0, 1, 0, 1, 1, 1, 1, 2},
#define WIPE_T2_42      WIPE_T2_41+1
  {0, 0, 1, 1, 0, 0, 1, 1, 1,
      0, 0, 1, 0, 1, 2, 1, 1, 1},
#define WIPE_T2_45      WIPE_T2_42+1
  {0, 0, 1, 1, 0, 0, 0, 1, 0,
      1, 0, 0, 0, 1, 0, 1, 1, 1},
#define WIPE_T2_46      WIPE_T2_45+1
  {0, 0, 0, 1, 0, 1, 1, 1, 0,
      0, 0, 0, 0, 1, 1, 1, 1, 0},
#define WIPE_T2_245     WIPE_T2_46+1
  {0, 0, 0, 2, 0, 0, 2, 2, 1,
      2, 2, 0, 0, 2, 0, 0, 0, 1},
#define WIPE_T2_246     WIPE_T2_245+1
  {0, 2, 0, 0, 0, 0, 2, 0, 1,
      2, 0, 0, 2, 2, 0, 0, 2, 1},
};

static const gint triangles_3t[][3 * 9] = {
  /* 23 -> 26 */
#define WIPE_T3_23      0
  {0, 0, 1, 1, 0, 0, 0, 2, 1,
        1, 0, 0, 0, 2, 1, 2, 2, 1,
      1, 0, 0, 2, 0, 1, 2, 2, 1},
#define WIPE_T3_24      1
  {0, 0, 1, 2, 0, 1, 2, 1, 0,
        0, 0, 1, 2, 1, 0, 0, 2, 1,
      2, 1, 0, 0, 2, 1, 2, 2, 1},
#define WIPE_T3_25      2
  {0, 0, 1, 0, 2, 1, 1, 2, 0,
        0, 0, 1, 2, 0, 1, 1, 2, 0,
      2, 0, 1, 1, 2, 0, 2, 2, 1},
#define WIPE_T3_26      3
  {0, 0, 1, 2, 0, 1, 0, 1, 0,
        2, 0, 1, 0, 1, 0, 2, 2, 1,
      0, 1, 0, 0, 2, 1, 2, 2, 1},
};

static const gint triangles_4t[][4 * 9] = {
#define WIPE_T4_61      0
  {0, 0, 1, 1, 0, 0, 1, 2, 1,
        0, 0, 1, 0, 2, 2, 1, 2, 1,
        1, 0, 0, 2, 0, 1, 1, 2, 1,
      2, 0, 1, 1, 2, 1, 2, 2, 2},
#define WIPE_T4_62      1
  {0, 0, 2, 2, 0, 1, 0, 1, 1,
        2, 0, 1, 0, 1, 1, 2, 1, 0,
        0, 1, 1, 2, 1, 0, 2, 2, 1,
      0, 1, 1, 0, 2, 2, 2, 2, 1},
#define WIPE_T4_63      2
  {0, 0, 2, 1, 0, 1, 0, 2, 1,
        1, 0, 1, 0, 2, 1, 1, 2, 0,
        1, 0, 1, 1, 2, 0, 2, 2, 1,
      1, 0, 1, 2, 0, 2, 2, 2, 1},
#define WIPE_T4_64      3
  {0, 0, 1, 2, 0, 2, 2, 1, 1,
        0, 0, 1, 0, 1, 0, 2, 1, 1,
        0, 1, 0, 2, 1, 1, 0, 2, 1,
      2, 1, 1, 0, 2, 1, 2, 2, 2},
#define WIPE_T4_65      4
  {0, 0, 0, 1, 0, 1, 1, 2, 0,
        0, 0, 0, 0, 2, 1, 1, 2, 0,
        1, 0, 1, 2, 0, 0, 1, 2, 0,
      2, 0, 0, 1, 2, 0, 2, 2, 1},
#define WIPE_T4_66      5
  {0, 0, 1, 2, 0, 0, 0, 1, 0,
        2, 0, 0, 0, 1, 0, 2, 1, 1,
        0, 1, 0, 2, 1, 1, 2, 2, 0,
      0, 1, 0, 0, 2, 1, 2, 2, 0},
#define WIPE_T4_67      6
  {0, 0, 1, 1, 0, 0, 0, 2, 0,
        1, 0, 0, 0, 2, 0, 1, 2, 1,
        1, 0, 0, 1, 2, 1, 2, 2, 0,
      1, 0, 0, 2, 0, 1, 2, 2, 0},
#define WIPE_T4_68      7
  {0, 0, 0, 2, 0, 1, 2, 1, 0,
        0, 0, 0, 0, 1, 1, 2, 1, 0,
        0, 1, 1, 2, 1, 0, 0, 2, 0,
      2, 1, 0, 0, 2, 0, 2, 2, 1},
#define WIPE_T4_101     8
  {0, 0, 1, 2, 0, 1, 1, 1, 0,
        0, 0, 1, 1, 1, 0, 0, 2, 1,
        1, 1, 0, 0, 2, 1, 2, 2, 1,
      2, 0, 1, 1, 1, 0, 2, 2, 1},
};

static const gint triangles_8t[][8 * 9] = {
  /* 7 */
#define WIPE_T8_7       0
  {0, 0, 0, 1, 0, 1, 1, 1, 1,
        1, 0, 1, 2, 0, 0, 1, 1, 1,
        2, 0, 0, 1, 1, 1, 2, 1, 1,
        1, 1, 1, 2, 1, 1, 2, 2, 0,
        1, 1, 1, 1, 2, 1, 2, 2, 0,
        1, 1, 1, 0, 2, 0, 1, 2, 1,
        0, 1, 1, 1, 1, 1, 0, 2, 0,
      0, 0, 0, 0, 1, 1, 1, 1, 1},
#define WIPE_T8_43      1
  {0, 0, 1, 1, 0, 0, 1, 1, 1,
        1, 0, 0, 2, 0, 1, 1, 1, 1,
        2, 0, 1, 1, 1, 1, 2, 1, 2,
        1, 1, 1, 2, 1, 2, 2, 2, 1,
        1, 1, 1, 1, 2, 0, 2, 2, 1,
        1, 1, 1, 0, 2, 1, 1, 2, 0,
        0, 1, 2, 1, 1, 1, 0, 2, 1,
      0, 0, 1, 0, 1, 2, 1, 1, 1},
#define WIPE_T8_44      2
  {0, 0, 1, 1, 0, 2, 1, 1, 1,
        1, 0, 2, 2, 0, 1, 1, 1, 1,
        2, 0, 1, 1, 1, 1, 2, 1, 0,
        1, 1, 1, 2, 1, 0, 2, 2, 1,
        1, 1, 1, 1, 2, 2, 2, 2, 1,
        1, 1, 1, 0, 2, 1, 1, 2, 2,
        0, 1, 0, 1, 1, 1, 0, 2, 1,
      0, 0, 1, 0, 1, 0, 1, 1, 1},
#define WIPE_T8_47      3
  {0, 0, 0, 1, 0, 1, 1, 1, 0,
        1, 0, 1, 2, 0, 0, 1, 1, 0,
        2, 0, 0, 1, 1, 0, 2, 1, 1,
        1, 1, 0, 2, 1, 1, 2, 2, 0,
        1, 1, 0, 1, 2, 1, 2, 2, 0,
        1, 1, 0, 0, 2, 0, 1, 2, 1,
        0, 1, 1, 1, 1, 0, 0, 2, 0,
      0, 0, 0, 0, 1, 1, 1, 1, 0},
#define WIPE_T8_48      4
  {0, 0, 1, 1, 0, 0, 0, 1, 0,
        1, 0, 0, 0, 1, 0, 1, 1, 1,
        1, 0, 0, 2, 0, 1, 2, 1, 0,
        1, 0, 0, 1, 1, 1, 2, 1, 0,
        0, 1, 0, 1, 1, 1, 1, 2, 0,
        0, 1, 0, 0, 2, 1, 1, 2, 0,
        1, 1, 1, 2, 1, 0, 1, 2, 0,
      2, 1, 0, 1, 2, 0, 2, 2, 1},
};

static const gint triangles_16t[][16 * 9] = {
  /* 8 */
#define WIPE_T16_8      0
  {0, 0, 1, 2, 0, 1, 1, 1, 0,
        2, 0, 1, 1, 1, 0, 2, 2, 1,
        1, 1, 0, 0, 2, 1, 2, 2, 1,
        0, 0, 1, 1, 1, 0, 0, 2, 1,
        2, 0, 1, 4, 0, 1, 3, 1, 0,
        4, 0, 1, 3, 1, 0, 4, 2, 1,
        3, 1, 0, 2, 2, 1, 4, 2, 1,
        2, 0, 1, 3, 1, 0, 2, 2, 1,
        0, 2, 1, 2, 2, 1, 1, 3, 0,
        2, 2, 1, 1, 3, 0, 2, 4, 1,
        1, 3, 0, 0, 4, 1, 2, 4, 1,
        0, 2, 1, 1, 3, 0, 0, 4, 1,
        2, 2, 1, 4, 2, 1, 3, 3, 0,
        4, 2, 1, 3, 3, 0, 4, 4, 1,
        3, 3, 0, 2, 4, 1, 4, 4, 1,
      2, 2, 1, 3, 3, 0, 2, 4, 1}
};

typedef struct _GstWipeConfig GstWipeConfig;

struct _GstWipeConfig
{
  const gint *objects;
  gint nobjects;
  gint xscale;
  gint yscale;
  gint cscale;
};

static const GstWipeConfig wipe_config[] = {
#define WIPE_CONFIG_1   0
  {boxes_1b[WIPE_B1_1], 1, 0, 0, 0},    /* 1 */
#define WIPE_CONFIG_2   WIPE_CONFIG_1+1
  {boxes_1b[WIPE_B1_2], 1, 0, 0, 0},    /* 2 */
#define WIPE_CONFIG_3   WIPE_CONFIG_2+1
  {triangles_2t[WIPE_T2_3], 2, 0, 0, 0},        /* 3 */
#define WIPE_CONFIG_4   WIPE_CONFIG_3+1
  {triangles_2t[WIPE_T2_4], 2, 0, 0, 0},        /* 4 */
#define WIPE_CONFIG_5   WIPE_CONFIG_4+1
  {triangles_2t[WIPE_T2_5], 2, 0, 0, 0},        /* 5 */
#define WIPE_CONFIG_6   WIPE_CONFIG_5+1
  {triangles_2t[WIPE_T2_6], 2, 0, 0, 0},        /* 6 */
#define WIPE_CONFIG_7   WIPE_CONFIG_6+1
  {triangles_8t[WIPE_T8_7], 8, 1, 1, 0},        /* 7 */
#define WIPE_CONFIG_8   WIPE_CONFIG_7+1
  {triangles_16t[WIPE_T16_8], 16, 2, 2, 0},     /* 8 */

#define WIPE_CONFIG_21  WIPE_CONFIG_8+1
  {boxes_2b[WIPE_B2_21], 2, 1, 1, 0},   /* 21 */
#define WIPE_CONFIG_22  WIPE_CONFIG_21+1
  {boxes_2b[WIPE_B2_22], 2, 1, 1, 0},   /* 22 */

#define WIPE_CONFIG_23  WIPE_CONFIG_22+1
  {triangles_3t[WIPE_T3_23], 3, 1, 1, 0},       /* 23 */
#define WIPE_CONFIG_24  WIPE_CONFIG_23+1
  {triangles_3t[WIPE_T3_24], 3, 1, 1, 0},       /* 24 */
#define WIPE_CONFIG_25  WIPE_CONFIG_24+1
  {triangles_3t[WIPE_T3_25], 3, 1, 1, 0},       /* 25 */
#define WIPE_CONFIG_26  WIPE_CONFIG_25+1
  {triangles_3t[WIPE_T3_26], 3, 1, 1, 0},       /* 26 */
#define WIPE_CONFIG_41  WIPE_CONFIG_26+1
  {triangles_2t[WIPE_T2_41], 2, 0, 0, 1},       /* 41 */
#define WIPE_CONFIG_42  WIPE_CONFIG_41+1
  {triangles_2t[WIPE_T2_42], 2, 0, 0, 1},       /* 42 */
#define WIPE_CONFIG_43  WIPE_CONFIG_42+1
  {triangles_8t[WIPE_T8_43], 8, 1, 1, 1},       /* 43 */
#define WIPE_CONFIG_44  WIPE_CONFIG_43+1
  {triangles_8t[WIPE_T8_44], 8, 1, 1, 1},       /* 44 */
#define WIPE_CONFIG_45  WIPE_CONFIG_44+1
  {triangles_2t[WIPE_T2_45], 2, 0, 0, 0},       /* 45 */
#define WIPE_CONFIG_46  WIPE_CONFIG_45+1
  {triangles_2t[WIPE_T2_46], 2, 0, 0, 0},       /* 46 */
#define WIPE_CONFIG_47  WIPE_CONFIG_46+1
  {triangles_8t[WIPE_T8_47], 8, 1, 1, 0},       /* 47 */
#define WIPE_CONFIG_48  WIPE_CONFIG_47+1
  {triangles_8t[WIPE_T8_48], 8, 1, 1, 0},       /* 48 */
#define WIPE_CONFIG_61  WIPE_CONFIG_48+1
  {triangles_4t[WIPE_T4_61], 4, 1, 1, 1},       /* 61 */
#define WIPE_CONFIG_62  WIPE_CONFIG_61+1
  {triangles_4t[WIPE_T4_62], 4, 1, 1, 1},       /* 62 */
#define WIPE_CONFIG_63  WIPE_CONFIG_62+1
  {triangles_4t[WIPE_T4_63], 4, 1, 1, 1},       /* 63 */
#define WIPE_CONFIG_64  WIPE_CONFIG_63+1
  {triangles_4t[WIPE_T4_64], 4, 1, 1, 1},       /* 64 */
#define WIPE_CONFIG_65  WIPE_CONFIG_64+1
  {triangles_4t[WIPE_T4_65], 4, 1, 1, 0},       /* 65 */
#define WIPE_CONFIG_66  WIPE_CONFIG_65+1
  {triangles_4t[WIPE_T4_66], 4, 1, 1, 0},       /* 66 */
#define WIPE_CONFIG_67  WIPE_CONFIG_66+1
  {triangles_4t[WIPE_T4_67], 4, 1, 1, 0},       /* 67 */
#define WIPE_CONFIG_68  WIPE_CONFIG_67+1
  {triangles_4t[WIPE_T4_68], 4, 1, 1, 0},       /* 68 */
#define WIPE_CONFIG_101 WIPE_CONFIG_68+1
  {triangles_4t[WIPE_T4_101], 4, 1, 1, 0},      /* 101 */
#define WIPE_CONFIG_201 WIPE_CONFIG_101+1
  {box_clock_4b[WIPE_B4_201], 4, 1, 1, 2},      /* 201 */
#define WIPE_CONFIG_202 WIPE_CONFIG_201+1
  {box_clock_4b[WIPE_B4_202], 4, 1, 1, 2},      /* 202 */
#define WIPE_CONFIG_203 WIPE_CONFIG_202+1
  {box_clock_4b[WIPE_B4_203], 4, 1, 1, 2},      /* 203 */
#define WIPE_CONFIG_204 WIPE_CONFIG_203+1
  {box_clock_4b[WIPE_B4_204], 4, 1, 1, 2},      /* 204 */
#define WIPE_CONFIG_205 WIPE_CONFIG_204+1
  {box_clock_4b[WIPE_B4_205], 4, 1, 1, 1},      /* 205 */
#define WIPE_CONFIG_206 WIPE_CONFIG_205+1
  {box_clock_4b[WIPE_B4_206], 4, 1, 1, 1},      /* 206 */
#define WIPE_CONFIG_207 WIPE_CONFIG_206+1
  {box_clock_4b[WIPE_B4_207], 4, 1, 1, 0},      /* 207 */
#define WIPE_CONFIG_211 WIPE_CONFIG_207+1
  {box_clock_4b[WIPE_B4_211], 4, 1, 1, 1},      /* 211 */
#define WIPE_CONFIG_212 WIPE_CONFIG_211+1
  {box_clock_4b[WIPE_B4_212], 4, 1, 1, 1},      /* 212 */
#define WIPE_CONFIG_213 WIPE_CONFIG_212+1
  {box_clock_4b[WIPE_B4_213], 4, 1, 1, 0},      /* 213 */
#define WIPE_CONFIG_214 WIPE_CONFIG_213+1
  {box_clock_4b[WIPE_B4_214], 4, 1, 1, 0},      /* 214 */
#define WIPE_CONFIG_221 WIPE_CONFIG_214+1
  {box_clock_2b[WIPE_B2_221], 2, 1, 1, 1},      /* 221 */
#define WIPE_CONFIG_222 WIPE_CONFIG_221+1
  {box_clock_2b[WIPE_B2_222], 2, 1, 1, 1},      /* 222 */
#define WIPE_CONFIG_223 WIPE_CONFIG_222+1
  {box_clock_2b[WIPE_B2_223], 2, 1, 1, 1},      /* 223 */
#define WIPE_CONFIG_224 WIPE_CONFIG_223+1
  {box_clock_2b[WIPE_B2_224], 2, 1, 1, 1},      /* 224 */
#define WIPE_CONFIG_225 WIPE_CONFIG_224+1
  {box_clock_2b[WIPE_B2_225], 2, 1, 1, 0},      /* 225 */
#define WIPE_CONFIG_226 WIPE_CONFIG_225+1
  {box_clock_2b[WIPE_B2_226], 2, 1, 1, 0},      /* 226 */
#define WIPE_CONFIG_227 WIPE_CONFIG_226+1
  {box_clock_4b[WIPE_B4_227], 4, 1, 1, 1},      /* 227 */
#define WIPE_CONFIG_228 WIPE_CONFIG_227+1
  {box_clock_4b[WIPE_B4_228], 4, 1, 1, 1},      /* 228 */
#define WIPE_CONFIG_231 WIPE_CONFIG_228+1
  {box_clock_2b[WIPE_B2_231], 2, 1, 1, 0},      /* 231 */
#define WIPE_CONFIG_232 WIPE_CONFIG_231+1
  {box_clock_2b[WIPE_B2_232], 2, 1, 1, 0},      /* 232 */
#define WIPE_CONFIG_233 WIPE_CONFIG_232+1
  {box_clock_2b[WIPE_B2_233], 2, 1, 1, 0},      /* 233 */
#define WIPE_CONFIG_234 WIPE_CONFIG_233+1
  {box_clock_2b[WIPE_B2_234], 2, 1, 1, 0},      /* 234 */
#define WIPE_CONFIG_235 WIPE_CONFIG_234+1
  {box_clock_4b[WIPE_B4_235], 4, 1, 1, 0},      /* 235 */
#define WIPE_CONFIG_236 WIPE_CONFIG_235+1
  {box_clock_4b[WIPE_B4_236], 4, 1, 1, 0},      /* 236 */
#define WIPE_CONFIG_241 WIPE_CONFIG_236+1
  {box_clock_1b[WIPE_B1_241], 1, 0, 0, 0},      /* 241 */
#define WIPE_CONFIG_242 WIPE_CONFIG_241+1
  {box_clock_1b[WIPE_B1_242], 1, 0, 0, 0},      /* 242 */
#define WIPE_CONFIG_243 WIPE_CONFIG_242+1
  {box_clock_1b[WIPE_B1_243], 1, 0, 0, 0},      /* 243 */
#define WIPE_CONFIG_244 WIPE_CONFIG_243+1
  {box_clock_1b[WIPE_B1_244], 1, 0, 0, 0},      /* 244 */
#define WIPE_CONFIG_245 WIPE_CONFIG_244+1
  {triangles_2t[WIPE_T2_245], 2, 1, 1, 0},      /* 245 */
#define WIPE_CONFIG_246 WIPE_CONFIG_245+1
  {triangles_2t[WIPE_T2_246], 2, 1, 1, 0},      /* 246 */
#define WIPE_CONFIG_251 WIPE_CONFIG_246+1
  {box_clock_2b[WIPE_B2_251], 2, 1, 1, 0},      /* 251 */
#define WIPE_CONFIG_252 WIPE_CONFIG_251+1
  {box_clock_2b[WIPE_B2_252], 2, 1, 1, 0},      /* 252 */
#define WIPE_CONFIG_253 WIPE_CONFIG_252+1
  {box_clock_2b[WIPE_B2_253], 2, 1, 1, 0},      /* 253 */
#define WIPE_CONFIG_254 WIPE_CONFIG_253+1
  {box_clock_2b[WIPE_B2_254], 2, 1, 1, 0},      /* 254 */

#define WIPE_CONFIG_261 WIPE_CONFIG_254+1
  {box_clock_8b[WIPE_B8_261], 8, 2, 2, 2},      /* 261 */
#define WIPE_CONFIG_262 WIPE_CONFIG_261+1
  {box_clock_8b[WIPE_B8_262], 8, 2, 2, 2},      /* 262 */
#define WIPE_CONFIG_263 WIPE_CONFIG_262+1
  {box_clock_8b[WIPE_B8_263], 8, 2, 2, 1},      /* 263 */
#define WIPE_CONFIG_264 WIPE_CONFIG_263+1
  {box_clock_8b[WIPE_B8_264], 8, 2, 2, 1},      /* 264 */
};

static void
gst_wipe_boxes_draw (GstMask * mask)
{
  const GstWipeConfig *config = mask->user_data;
  const gint *impacts = config->objects;
  gint width = (mask->width >> config->xscale);
  gint height = (mask->height >> config->yscale);
  gint depth = (1 << mask->bpp) >> config->cscale;

  gint i;

  for (i = 0; i < config->nobjects; i++) {
    switch (impacts[0]) {
      case BOX_VERTICAL:
        /* vbox does not draw last pixels */
        gst_smpte_paint_vbox (mask->data, mask->width,
            impacts[1] * width, impacts[2] * height, impacts[3] * depth,
            impacts[4] * width, impacts[5] * height, impacts[6] * depth);
        impacts += 7;
        break;
      case BOX_HORIZONTAL:
        /* hbox does not draw last pixels */
        gst_smpte_paint_hbox (mask->data, mask->width,
            impacts[1] * width, impacts[2] * height, impacts[3] * depth,
            impacts[4] * width, impacts[5] * height, impacts[6] * depth);
        impacts += 7;
        break;
      case BOX_CLOCK:
      {
        gint x0, y0, x1, y1, x2, y2;

        /* make sure not to draw outside the area */
        x0 = MIN (impacts[1] * width, mask->width - 1);
        y0 = MIN (impacts[2] * height, mask->height - 1);
        x1 = MIN (impacts[4] * width, mask->width - 1);
        y1 = MIN (impacts[5] * height, mask->height - 1);
        x2 = MIN (impacts[7] * width, mask->width - 1);
        y2 = MIN (impacts[8] * height, mask->height - 1);

        gst_smpte_paint_box_clock (mask->data, mask->width,
            x0, y0, impacts[3] * depth, x1, y1, impacts[6] * depth,
            x2, y2, impacts[9] * depth);
        impacts += 10;
      }
      default:
        break;
    }
  }
}

static void
gst_wipe_triangles_clock_draw (GstMask * mask)
{
  const GstWipeConfig *config = mask->user_data;
  const gint *impacts = config->objects;
  gint width = (mask->width >> config->xscale);
  gint height = (mask->height >> config->yscale);
  gint depth = (1 << mask->bpp) >> config->cscale;
  gint i;

  for (i = 0; i < config->nobjects; i++) {
    gint x0, y0, x1, y1, x2, y2;

    /* make sure not to draw outside the area */
    x0 = MIN (impacts[0] * width, mask->width - 1);
    y0 = MIN (impacts[1] * height, mask->height - 1);
    x1 = MIN (impacts[3] * width, mask->width - 1);
    y1 = MIN (impacts[4] * height, mask->height - 1);
    x2 = MIN (impacts[6] * width, mask->width - 1);
    y2 = MIN (impacts[7] * height, mask->height - 1);

    gst_smpte_paint_triangle_clock (mask->data, mask->width,
        x0, y0, impacts[2] * depth, x1, y1, impacts[5] * depth,
        x2, y2, impacts[8] * depth);
    impacts += 9;
  }
}

static void
gst_wipe_triangles_draw (GstMask * mask)
{
  const GstWipeConfig *config = mask->user_data;
  const gint *impacts = config->objects;
  gint width = (mask->width >> config->xscale);
  gint height = (mask->height >> config->yscale);
  gint depth = (1 << mask->bpp) >> config->cscale;

  gint i;

  for (i = 0; i < config->nobjects; i++) {
    gint x0, y0, x1, y1, x2, y2;

    /* make sure not to draw outside the area */
    x0 = MIN (impacts[0] * width, mask->width - 1);
    y0 = MIN (impacts[1] * height, mask->height - 1);
    x1 = MIN (impacts[3] * width, mask->width - 1);
    y1 = MIN (impacts[4] * height, mask->height - 1);
    x2 = MIN (impacts[6] * width, mask->width - 1);
    y2 = MIN (impacts[7] * height, mask->height - 1);

    gst_smpte_paint_triangle_linear (mask->data, mask->width,
        x0, y0, impacts[2] * depth, x1, y1, impacts[5] * depth,
        x2, y2, impacts[8] * depth);
    impacts += 9;
  }
}

/* see also:
 * http://www.w3c.rl.ac.uk/pasttalks/slidemaker/XML_Multimedia/htmls/transitions.html
 */
static const GstMaskDefinition definitions[] = {
  {1, "bar-wipe-lr",
        "A bar moves from left to right",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_1]},
  {2, "bar-wipe-tb",
        "A bar moves from top to bottom",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_2]},
  {3, "box-wipe-tl",
        "A box expands from the upper-left corner to the lower-right corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_3]},
  {4, "box-wipe-tr",
        "A box expands from the upper-right corner to the lower-left corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_4]},
  {5, "box-wipe-br",
        "A box expands from the lower-right corner to the upper-left corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_5]},
  {6, "box-wipe-bl",
        "A box expands from the lower-left corner to the upper-right corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_6]},
  {7, "four-box-wipe-ci",
        "A box shape expands from each of the four corners toward the center",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_7]},
  {8, "four-box-wipe-co",
        "A box shape expands from the center of each quadrant toward the corners of each quadrant",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_8]},
  {21, "barndoor-v",
        "A central, vertical line splits and expands toward the left and right edges",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_21]},
  {22, "barndoor-h",
        "A central, horizontal line splits and expands toward the top and bottom edges",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_22]},
  {23, "box-wipe-tc",
        "A box expands from the top edge's midpoint to the bottom corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_23]},
  {24, "box-wipe-rc",
        "A box expands from the right edge's midpoint to the left corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_24]},
  {25, "box-wipe-bc",
        "A box expands from the bottom edge's midpoint to the top corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_25]},
  {26, "box-wipe-lc",
        "A box expands from the left edge's midpoint to the right corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_26]},
  {41, "diagonal-tl",
        "A diagonal line moves from the upper-left corner to the lower-right corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_41]},
  {42, "diagonal-tr",
        "A diagonal line moves from the upper right corner to the lower-left corner",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_42]},
  {43, "bowtie-v",
        "Two wedge shapes slide in from the top and bottom edges toward the center",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_43]},
  {44, "bowtie-h",
        "Two wedge shapes slide in from the left and right edges toward the center",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_44]},
  {45, "barndoor-dbl",
        "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_45]},
  {46, "barndoor-dtl",
        "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_46]},
  {47, "misc-diagonal-dbd",
        "Four wedge shapes split from the center and retract toward the four edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_47]},
  {48, "misc-diagonal-dd",
        "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_48]},
  {61, "vee-d",
        "A wedge shape moves from top to bottom",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_61]},
  {62, "vee-l",
        "A wedge shape moves from right to left",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_62]},
  {63, "vee-u",
        "A wedge shape moves from bottom to top",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_63]},
  {64, "vee-r",
        "A wedge shape moves from left to right",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_64]},
  {65, "barnvee-d",
        "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_65]},
  {66, "barnvee-l",
        "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_66]},
  {67, "barnvee-u",
        "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_67]},
  {68, "barnvee-r",
        "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_68]},
  {101, "iris-rect",
        "A rectangle expands from the center.",
        gst_wipe_triangles_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_101]},
  {201, "clock-cw12",
        "A radial hand sweeps clockwise from the twelve o'clock position",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_201]},
  {202, "clock-cw3",
        "A radial hand sweeps clockwise from the three o'clock position",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_202]},
  {203, "clock-cw6",
        "A radial hand sweeps clockwise from the six o'clock position",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_203]},
  {204, "clock-cw9",
        "A radial hand sweeps clockwise from the nine o'clock position",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_204]},
  {205, "pinwheel-tbv",
        "Two radial hands sweep clockwise from the twelve and six o'clock positions",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_205]},
  {206, "pinwheel-tbh",
        "Two radial hands sweep clockwise from the nine and three o'clock positions",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_206]},
  {207, "pinwheel-fb",
        "Four radial hands sweep clockwise",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_207]},
  {211, "fan-ct",
        "A fan unfolds from the top edge, the fan axis at the center",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_211]},
  {212, "fan-cr",
        "A fan unfolds from the right edge, the fan axis at the center",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_212]},
  {213, "doublefan-fov",
        "Two fans, their axes at the center, unfold from the top and bottom",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_213]},
  {214, "doublefan-foh",
        "Two fans, their axes at the center, unfold from the left and right",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_214]},
  {221, "singlesweep-cwt",
        "A radial hand sweeps clockwise from the top edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_221]},
  {222, "singlesweep-cwr",
        "A radial hand sweeps clockwise from the right edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_222]},
  {223, "singlesweep-cwb",
        "A radial hand sweeps clockwise from the bottom edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_223]},
  {224, "singlesweep-cwl",
        "A radial hand sweeps clockwise from the left edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_224]},
  {225, "doublesweep-pv",
        "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_225]},
  {226, "doublesweep-pd",
        "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_226]},
  {227, "doublesweep-ov",
        "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_227]},
  {228, "doublesweep-oh",
        "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_228]},
  {231, "fan-t",
        "A fan unfolds from the bottom, the fan axis at the top edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_231]},
  {232, "fan-r",
        "A fan unfolds from the left, the fan axis at the right edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_232]},
  {233, "fan-b",
        "A fan unfolds from the top, the fan axis at the bottom edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_233]},
  {234, "fan-l",
        "A fan unfolds from the right, the fan axis at the left edge's midpoint",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_234]},
  {235, "doublefan-fiv",
        "Two fans, their axes at the top and bottom, unfold from the center",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_235]},
  {236, "doublefan-fih",
        "Two fans, their axes at the left and right, unfold from the center",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_236]},
  {241, "singlesweep-cwtl",
        "A radial hand sweeps clockwise from the upper-left corner",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_241]},
  {242, "singlesweep-cwbl",
        "A radial hand sweeps counter-clockwise from the lower-left corner.",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_242]},
  {243, "singlesweep-cwbr",
        "A radial hand sweeps clockwise from the lower-right corner",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_243]},
  {244, "singlesweep-cwtr",
        "A radial hand sweeps counter-clockwise from the upper-right corner",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_244]},
  {245, "doublesweep-pdtl",
        "Two radial hands attached at the upper-left and lower-right corners sweep down and up",
        gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_245]},
  {246, "doublesweep-pdbl",
        "Two radial hands attached at the lower-left and upper-right corners sweep down and up",
        gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_246]},
  {251, "saloondoor-t",
        "Two radial hands attached at the upper-left and upper-right corners sweep down",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_251]},
  {252, "saloondoor-l",
        "Two radial hands attached at the upper-left and lower-left corners sweep to the right",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_252]},
  {253, "saloondoor-b",
        "Two radial hands attached at the lower-left and lower-right corners sweep up",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_253]},
  {254, "saloondoor-r",
        "Two radial hands attached at the upper-right and lower-right corners sweep to the left",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_254]},
  {261, "windshield-r",
        "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_261]},
  {262, "windshield-u",
        "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_262]},
  {263, "windshield-v",
        "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_263]},
  {264, "windshield-h",
        "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left",
        gst_wipe_boxes_draw, _gst_mask_default_destroy,
      &wipe_config[WIPE_CONFIG_264]},
  {0, NULL, NULL, NULL}
};

void
_gst_barboxwipes_register (void)
{
  gint i = 0;

  while (definitions[i].short_name) {
    _gst_mask_register (&definitions[i]);
    i++;
  }
}
