00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "LampBasic.h"
00026 #include "Graphics2D/SpriteState/AddressModeSpriteState.h"
00027 #include "Graphics/Renderer/RenderingDevice.h"
00028
00029 namespace Lamp{
00030
00031
00032 const AddressModeSpriteState AddressModeSpriteState::clampState(
00033 addressModeClamp, addressModeClamp);
00034
00035
00036 const AddressModeSpriteState AddressModeSpriteState::wrapState(
00037 addressModeWrap, addressModeWrap);
00038
00039
00040 const AddressModeSpriteState AddressModeSpriteState::mirrorState(
00041 addressModeMirror, addressModeMirror);
00042
00043
00044 const AddressModeSpriteState AddressModeSpriteState::defaultState(clampState);
00045
00046
00047 const String AddressModeSpriteState::addressModeStringTable[] = {
00048 "Wrap",
00049 "Clamp",
00050 "Mirror",
00051 };
00052
00053
00054
00055 AddressModeSpriteState::AddressModeSpriteState() :
00056 addressModeU_(addressModeClamp), addressModeV_(addressModeClamp){
00057 }
00058
00059
00060 AddressModeSpriteState::AddressModeSpriteState(
00061 AddressMode addressModeU, AddressMode addressModeV) :
00062 addressModeU_(addressModeU), addressModeV_(addressModeV){
00063 Assert((addressModeU_ >= 0) && (addressModeU_ < addressModeMax));
00064 Assert((addressModeV_ >= 0) && (addressModeV_ < addressModeMax));
00065 }
00066
00067
00068 AddressModeSpriteState::~AddressModeSpriteState(){
00069 }
00070
00071
00072
00073
00074 void AddressModeSpriteState::apply(SpriteRenderState* renderState){
00075 RenderingDevice* device = RenderingDevice::getInstance();
00076 device->setTextureAddressMode2(0, addressModeU_, addressModeV_);
00077 }
00078
00079
00080
00081
00082 const String& AddressModeSpriteState::addressModeToString(
00083 AddressMode addressMode){
00084 Assert((addressMode >= 0) && (addressMode < addressModeMax));
00085 return addressModeStringTable[addressMode];
00086 }
00087
00088
00089 AddressModeSpriteState::AddressMode
00090 AddressModeSpriteState::addressModeFromString(
00091 const String& addressModeString){
00092 for(int i = 0; i < addressModeMax; i++){
00093 if(addressModeStringTable[i].equals(addressModeString)){
00094 return AddressMode(i);
00095 }
00096 }
00097 ErrorOut("AddressModeSpriteState::addressModeFromString() " +
00098 addressModeString);
00099 return addressModeMax;
00100 }
00101
00102 }
00103