/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/

#include "PresenterScreen.hrc"

Bitmap BACKGROUND{ File = "presenter/Background.png"; };
Bitmap BORDERACTIVEBOTTOM{ File = "presenter/BorderActiveBottom.png"; };
Bitmap BORDERACTIVEBOTTOMCALLOUT{ File = "presenter/BorderActiveBottomCallout.png"; };
Bitmap BORDERACTIVEBOTTOMLEFT{ File = "presenter/BorderActiveBottomLeft.png"; };
Bitmap BORDERACTIVEBOTTOMRIGHT{ File = "presenter/BorderActiveBottomRight.png"; };
Bitmap BORDERACTIVELEFT{ File = "presenter/BorderActiveLeft.png"; };
Bitmap BORDERACTIVERIGHT{ File = "presenter/BorderActiveRight.png"; };
Bitmap BORDERACTIVETOP{ File = "presenter/BorderActiveTop.png"; };
Bitmap BORDERACTIVETOPLEFT{ File = "presenter/BorderActiveTopLeft.png"; };
Bitmap BORDERACTIVETOPRIGHT{ File = "presenter/BorderActiveTopRight.png"; };
Bitmap BORDERBOTTOM{ File = "presenter/BorderBottom.png"; };
Bitmap BORDERBOTTOMLEFT{ File = "presenter/BorderBottomLeft.png"; };
Bitmap BORDERBOTTOMRIGHT{ File = "presenter/BorderBottomRight.png"; };
Bitmap BORDERCURRENTSLIDEBOTTOM{ File = "presenter/BorderCurrentSlideBottom.png"; };
Bitmap BORDERCURRENTSLIDEBOTTOMLEFT{ File = "presenter/BorderCurrentSlideBottomLeft.png"; };
Bitmap BORDERCURRENTSLIDEBOTTOMRIGHT{ File = "presenter/BorderCurrentSlideBottomRight.png"; };
Bitmap BORDERCURRENTSLIDELEFT{ File = "presenter/BorderCurrentSlideLeft.png"; };
Bitmap BORDERCURRENTSLIDERIGHT{ File = "presenter/BorderCurrentSlideRight.png"; };
Bitmap BORDERCURRENTSLIDETOP{ File = "presenter/BorderCurrentSlideTop.png"; };
Bitmap BORDERCURRENTSLIDETOPLEFT{ File = "presenter/BorderCurrentSlideTopLeft.png"; };
Bitmap BORDERCURRENTSLIDETOPRIGHT{ File = "presenter/BorderCurrentSlideTopRight.png"; };
Bitmap BORDERLEFT{ File = "presenter/BorderLeft.png"; };
Bitmap BORDERRIGHT{ File = "presenter/BorderRight.png"; };
Bitmap BORDERTOOLBARBOTTOM{ File = "presenter/BorderToolbarBottom.png"; };
Bitmap BORDERTOOLBARLEFT{ File = "presenter/BorderToolbarLeft.png"; };
Bitmap BORDERTOOLBARRIGHT{ File = "presenter/BorderToolbarRight.png"; };
Bitmap BORDERTOOLBARTOP{ File = "presenter/BorderToolbarTop.png"; };
Bitmap BORDERTOOLBARTOPLEFT{ File = "presenter/BorderToolbarTopLeft.png"; };
Bitmap BORDERTOOLBARTOPRIGHT{ File = "presenter/BorderToolbarTopRight.png"; };
Bitmap BORDERTOP{ File = "presenter/BorderTop.png"; };
Bitmap BORDERTOPLEFT{ File = "presenter/BorderTopLeft.png"; };
Bitmap BORDERTOPRIGHT{ File = "presenter/BorderTopRight.png"; };
Bitmap BUTTONEFFECTNEXTDISABLED{ File = "presenter/ButtonEffectNextDisabled.png"; };
Bitmap BUTTONEFFECTNEXTMOUSEOVER{ File = "presenter/ButtonEffectNextMouseOver.png"; };
Bitmap BUTTONEFFECTNEXTNORMAL{ File = "presenter/ButtonEffectNextNormal.png"; };
Bitmap BUTTONEFFECTNEXTSELECTED{ File = "presenter/ButtonEffectNextSelected.png"; };
Bitmap BUTTONFRAMECENTERMOUSEOVER{ File = "presenter/ButtonFrameCenterMouseOver.png"; };
Bitmap BUTTONFRAMECENTERNORMAL{ File = "presenter/ButtonFrameCenterNormal.png"; };
Bitmap BUTTONFRAMELEFTMOUSEOVER{ File = "presenter/ButtonFrameLeftMouseOver.png"; };
Bitmap BUTTONFRAMELEFTNORMAL{ File = "presenter/ButtonFrameLeftNormal.png"; };
Bitmap BUTTONFRAMERIGHTMOUSEOVER{ File = "presenter/ButtonFrameRightMouseOver.png"; };
Bitmap BUTTONFRAMERIGHTNORMAL{ File = "presenter/ButtonFrameRightNormal.png"; };
Bitmap BUTTONHELPDISABLED{ File = "presenter/ButtonHelpDisabled.png"; };
Bitmap BUTTONHELPMOUSEOVER{ File = "presenter/ButtonHelpMouseOver.png"; };
Bitmap BUTTONHELPNORMAL{ File = "presenter/ButtonHelpNormal.png"; };
Bitmap BUTTONHELPSELECTED{ File = "presenter/ButtonHelpSelected.png"; };
Bitmap BUTTONMINUSDISABLED{ File = "presenter/ButtonMinusDisabled.png"; };
Bitmap BUTTONMINUSMOUSEOVER{ File = "presenter/ButtonMinusMouseOver.png"; };
Bitmap BUTTONMINUSNORMAL{ File = "presenter/ButtonMinusNormal.png"; };
Bitmap BUTTONMINUSSELECTED{ File = "presenter/ButtonMinusSelected.png"; };
Bitmap BUTTONNOTESDISABLED{ File = "presenter/ButtonNotesDisabled.png"; };
Bitmap BUTTONNOTESMOUSEOVER{ File = "presenter/ButtonNotesMouseOver.png"; };
Bitmap BUTTONNOTESNORMAL{ File = "presenter/ButtonNotesNormal.png"; };
Bitmap BUTTONNOTESSELECTED{ File = "presenter/ButtonNotesSelected.png"; };
Bitmap BUTTONPLUSDISABLED{ File = "presenter/ButtonPlusDisabled.png"; };
Bitmap BUTTONPLUSMOUSEOVER{ File = "presenter/ButtonPlusMouseOver.png"; };
Bitmap BUTTONPLUSNORMAL{ File = "presenter/ButtonPlusNormal.png"; };
Bitmap BUTTONPLUSSELECTED{ File = "presenter/ButtonPlusSelected.png"; };
Bitmap BUTTONSLIDENEXTDISABLED{ File = "presenter/ButtonSlideNextDisabled.png"; };
Bitmap BUTTONSLIDENEXTMOUSEOVER{ File = "presenter/ButtonSlideNextMouseOver.png"; };
Bitmap BUTTONSLIDENEXTNORMAL{ File = "presenter/ButtonSlideNextNormal.png"; };
Bitmap BUTTONSLIDEPREVIOUSDISABLED{ File = "presenter/ButtonSlidePreviousDisabled.png"; };
Bitmap BUTTONSLIDEPREVIOUSMOUSEOVER{ File = "presenter/ButtonSlidePreviousMouseOver.png"; };
Bitmap BUTTONSLIDEPREVIOUSNORMAL{ File = "presenter/ButtonSlidePreviousNormal.png"; };
Bitmap BUTTONSLIDEPREVIOUSSELECTED{ File = "presenter/ButtonSlidePreviousSelected.png"; };
Bitmap BUTTONSLIDESORTERDISABLED{ File = "presenter/ButtonSlideSorterDisabled.png"; };
Bitmap BUTTONSLIDESORTERMOUSEOVER{ File = "presenter/ButtonSlideSorterMouseOver.png"; };
Bitmap BUTTONSLIDESORTERNORMAL{ File = "presenter/ButtonSlideSorterNormal.png"; };
Bitmap BUTTONSLIDESORTERSELECTED{ File = "presenter/ButtonSlideSorterSelected.png"; };
Bitmap LABELMOUSEOVERCENTER{ File = "presenter/LabelMouseOverCenter.png"; };
Bitmap LABELMOUSEOVERLEFT{ File = "presenter/LabelMouseOverLeft.png"; };
Bitmap LABELMOUSEOVERRIGHT{ File = "presenter/LabelMouseOverRight.png"; };
Bitmap SCROLLBARARROWDOWNDISABLED{ File = "presenter/ScrollbarArrowDownDisabled.png"; };
Bitmap SCROLLBARARROWDOWNMOUSEOVER{ File = "presenter/ScrollbarArrowDownMouseOver.png"; };
Bitmap SCROLLBARARROWDOWNNORMAL{ File = "presenter/ScrollbarArrowDownNormal.png"; };
Bitmap SCROLLBARARROWDOWNSELECTED{ File = "presenter/ScrollbarArrowDownSelected.png"; };
Bitmap SCROLLBARARROWUPDISABLED{ File = "presenter/ScrollbarArrowUpDisabled.png"; };
Bitmap SCROLLBARARROWUPMOUSEOVER{ File = "presenter/ScrollbarArrowUpMouseOver.png"; };
Bitmap SCROLLBARARROWUPNORMAL{ File = "presenter/ScrollbarArrowUpNormal.png"; };
Bitmap SCROLLBARARROWUPSELECTED{ File = "presenter/ScrollbarArrowUpSelected.png"; };
Bitmap SCROLLBARPAGERMIDDLEMOUSEOVER{ File = "presenter/ScrollbarPagerMiddleMouseOver.png"; };
Bitmap SCROLLBARPAGERMIDDLENORMAL{ File = "presenter/ScrollbarPagerMiddleNormal.png"; };
Bitmap SCROLLBARTHUMBBOTTOMMOUSEOVER{ File = "presenter/ScrollbarThumbBottomMouseOver.png"; };
Bitmap SCROLLBARTHUMBBOTTOMNORMAL{ File = "presenter/ScrollbarThumbBottomNormal.png"; };
Bitmap SCROLLBARTHUMBMIDDLEMOUSEOVER{ File = "presenter/ScrollbarThumbMiddleMouseOver.png"; };
Bitmap SCROLLBARTHUMBMIDDLENORMAL{ File = "presenter/ScrollbarThumbMiddleNormal.png"; };
Bitmap SCROLLBARTHUMBTOPMOUSEOVER{ File = "presenter/ScrollbarThumbTopMouseOver.png"; };
Bitmap SCROLLBARTHUMBTOPNORMAL{ File = "presenter/ScrollbarThumbTopNormal.png"; };
Bitmap VIEWBACKGROUND{ File = "presenter/ViewBackground.png"; };

