Overview
--------
Strategy:
The strategy is responsible for doing the page effect. For each effect we have one object that is instanciated on
program start and is shared by all page effects that use these strategy. The strategy need to repaint always the
full screen. Qt will make sure only to update the parts that where requested for update in KPrPageEffectStrategy::next().

For evey subType and direction of en effect a strategy is needed.

Factory:
The factory is derived from KPrPageEffectFactory. All  you need to do is to add the strategies the factory supports.
Example:

KPrBarWipeEffectFactory::KPrBarWipeEffectFactory()
: KPrPageEffectFactory( BarWipeEffectId, i18n( "Bar Wipe Effect" ) )
{
    addStrategy( new KPrBarWipeFromTopStrategy() );
    addStrategy( new KPrBarWipeFromLeftStrategy() );
}


New enums for not yet existing KPrPageEffect::SubType have to be added in KPrPageEffect.h. The UI representation
of the sub types are defined in dockers/KPrPageEffectDocker.cpp.

It would really be better to have the specific page effects provide these user visible strings as that
is more maintainable and would not make it necessary to change kpresenter when adding a new page effect plugin.

Sub types don't have to corrospond to the ones used in smil. They are used for the representation in the UI.
E.g. the barWipe effect has in smil::subType leftToReight and topToBottom. It also supports the reverse for these
sub types are mapped like the following:
smil:subType  smil:direction  KPrPageEffect::SubType
----------------------------------------------------
leftToReight  forward         FromLeft
leftToReight  reverse         FromRight
topToBottom   forward         FromTop
topToBottom   reverse         FromBottom

Specification
-------------
The specification is defined in SMIL. See http://www.w3.org/TR/2005/REC-SMIL2-20050107/smil-transitions.html for
information about the different effects.

Effects
-------
The list describe the Transition type and Transition subtypes. The list is copied from the specification mentioned
above.

Each type of effect should be put into its own directoy.

Please add you name under the page effect when you like to work on it.
When you are finihed put a done under it.

Edge Wipes - wipes occur along an edge
--------------------------------------
"barWipe"  "leftToRight" (1) [default], "topToBottom" (2)
  partly done Lacroix Timothee
"boxWipe"  "topLeft" (3) [default], "topRight" (4), "bottomRight" (5), "bottomLeft" (6), "topCenter" (23), "rightCenter" (24), "bottomCenter" (25), "leftCenter" (26)
done Jan Hambrecht
"fourBoxWipe"  "cornersIn" (7) [default], "cornersOut" (8)
done Jan Hambrecht
"barnDoorWipe"  "vertical" (21) [default], "horizontal" (22), "diagonalBottomLeft" (45), "diagonalTopLeft" (46)
done Jan Hambrecht
"diagonalWipe"  "topLeft" (41) [default], "topRight" (42)
done Jan Hambrecht
"bowTieWipe"  "vertical" (43) [default], "horizontal" (44)
  Lacroix Timothee
"miscDiagonalWipe"  "doubleBarnDoor" (47) [default], "doubleDiamond" (48)
done Jan Hambrecht
"veeWipe"  "down" (61) [default], "left" (62), "up" (63), "right" (64)
done Jan Hambrecht
"barnVeeWipe"  "down" (65) [default], "left" (66), "up" (67), "right" (68)
done Jan Hambrecht
"zigZagWipe"  "leftToRight" (71) [default], "topToBottom" (72)
done Jan Hambrecht
"barnZigZagWipe"  "vertical" (73) [default], "horizontal" (74)
done Jan Hambrecht

Iris Wipes - shapes expand from the center of the media
-------------------------------------------------------
"irisWipe"  "rectangle" (101) [default], "diamond" (102)
"triangleWipe"  "up" (103) [default], "right" (104), "down" (105), "left" (106)
"arrowHeadWipe"  "up" (107) [default], "right" (108), "down" (109), "left" (110)
"pentagonWipe"  "up" (111) [default], "down" (112)
"hexagonWipe"  "horizontal" (113) [default], "vertical" (114)
"ellipseWipe"  "circle" (119) [default], "horizontal" (120), "vertical" (121)
"eyeWipe"  "horizontal" (122) [default], "vertical" (123)
"roundRectWipe"  "horizontal" (124) [default], "vertical" (125)
Carlos, All the above are done, only those remain to be done:
"starWipe"  "fourPoint" (127) [default], "fivePoint" (128), "sixPoint" (129)
"miscShapeWipe"  "heart" (130) [default], "keyhole" (131)


Clock Wipes - rotate around a center point
------------------------------------------
"clockWipe"  "clockwiseTwelve" (201) [default], "clockwiseThree" (202), "clockwiseSix" (203), "clockwiseNine" (204)
  done Sven Langkamp
"pinWheelWipe"  "twoBladeVertical" (205) [default], "twoBladeHorizontal" (206), "fourBlade" (207)
  done Sven Langkamp
"singleSweepWipe"  "clockwiseTop" (221) [default], "clockwiseRight" (222), "clockwiseBottom" (223), "clockwiseLeft" (224), "clockwiseTopLeft" (241), "counterClockwiseBottomLeft" (242), "clockwiseBottomRight" (243), "counterClockwiseTopRight" (244)
  done Sven Langkamp
"fanWipe"  "centerTop" (211) [default], "centerRight" (212), "top" (231), "right" (232), "bottom" (233), "left" (234)
  done Sven Langkamp
"doubleFanWipe"  "fanOutVertical" (213) [default], "fanOutHorizontal" (214), "fanInVertical" (235), "fanInHorizontal" (236)
  done Sven Langkamp
"doubleSweepWipe"  "parallelVertical" (225) [default], "parallelDiagonal" (226), "oppositeVertical" (227), "oppositeHorizontal" (228), "parallelDiagonalTopLeft" (245), "parallelDiagonalBottomLeft" (246)
  done Sven Langkamp
"saloonDoorWipe"  "top" (251) [default], "left" (252), "bottom" (253), "right" (254)
  done Sven Langkamp
"windshieldWipe"  "right" (261) [default], "up" (262), "vertical" (263), "horizontal" (264)
  done Sven Langkamp

Matrix Wipes - media is revealed in squares following a pattern
---------------------------------------------------------------
"snakeWipe"  "topLeftHorizontal" (301) [default], "topLeftVertical" (302), "topLeftDiagonal" (303), "topRightDiagonal" (304), "bottomRightDiagonal" (305), "bottomLeftDiagonal" (306)
  done Marijn Kruisselbrink
"spiralWipe"  "topLeftClockwise" (310) [default], "topRightClockwise" (311), "bottomRightClockwise" (312), "bottomLeftClockwise" (313), "topLeftCounterClockwise" (314), "topRightCounterClockwise" (315), "bottomRightCounterClockwise" (316), "bottomLeftCounterClockwise" (317)
  done Marijn Kruisselbrink
"parallelSnakesWipe"  "verticalTopSame" (320), [default] "verticalBottomSame" (321), "verticalTopLeftOpposite" (322), "verticalBottomLeftOpposite" (323), "horizontalLeftSame" (324), "horizontalRightSame" (325), "horizontalTopLeftOpposite" (326), "horizontalTopRightOpposite" (327), "diagonalBottomLeftOpposite" (328), "diagonalTopLeftOpposite" (329)
  done Marijn Kruisselbrink
"boxSnakesWipe"  "twoBoxTop" (340) [default], "twoBoxBottom" (341), "twoBoxLeft" (342), "twoBoxRight" (343), "fourBoxVertical (344), "fourBoxHorizontal" (345)
  done Marijn Kruisselbrink
"waterfallWipe"  "verticalLeft" (350) [default], "verticalRight" (351), "horizontalLeft" (352), "horizontalRight" (353)
  done Marijn Kruisselbrink

Non-SMPTE Wipes
---------------
"pushWipe"  "fromLeft" [default], "fromTop", "fromRight", "fromBottom"
"slideWipe"  "fromLeft" [default], "fromTop", "fromRight", "fromBottom"
 done Thorsten Zachmann
"fade"  "crossfade" [default], "fadeToColor", "fadeFromColor"
