#ifndef INPUTTEXT_H #define INPUTTEXT_H #include #include "ValuedGuiElement.h" using namespace std; extern BITMAP *layer[maxLayers]; class InputText : public ValuedGuiElement { int layerAllToSelf; int x, y; int displayLength; int scrollDiff, scrollStep; string value; string undoValue; int cursorPosition, selectedCount; int undoCursorPosition, undoSelectedCount; int undoUndoCursorPosition, undoUndoSelectedCount; int scrollPosition, typingPosition; bool cursorShown, insert, typing, canUndo; char oldMenuKey; int oldMouseB; int clickCharacterPosition; bool dragging; public: InputText(BITMAP *desiredCanvas, int layerDonation, int desiredX, int desiredY, int desiredDisplayLength, int desiredScrollDiff, int desiredScrollStep, bool desiredBlocking, string desiredValue = "", int desiredCursorPosition = 0, int desiredSelectedCount = 0, int desiredScrollPosition = 0, bool desiredInsert = true, bool desiredActive = false) : ValuedGuiElement(desiredCanvas, desiredBlocking, desiredActive), layerAllToSelf(layerDonation), x(desiredX), y(desiredY), displayLength(desiredDisplayLength), scrollDiff(desiredScrollDiff), scrollStep(desiredScrollStep), value(desiredValue), cursorPosition(desiredCursorPosition), selectedCount(desiredSelectedCount), scrollPosition(desiredScrollPosition), cursorShown(desiredActive), insert(desiredInsert), typing(false), canUndo(false), oldMenuKey(key[KEY_MENU]), oldMouseB(0x0), dragging(false) { clear_bitmap(layer[layerAllToSelf]); } string getStringValue(); void setCursorShown(bool desiredCursorShown); void type(char ascii); bool backSpace(); void toggleInsert(); bool seekLeft(); bool seekRight(); void seekHome(); void seekEnd(); bool selectLeft(); bool selectRight(); void selectHome(); void selectEnd(); bool undo(); bool cut(); bool copy(); bool paste(); bool del(); bool selectAll(); bool contextMenu(int menuX, int menuY); char* getValue(); void setValue(const string &desiredValue, int desiredCursorPosition = 0, int desiredSelectedCount = 0, int desiredScrollPosition = 0); bool acknowledgeKeyStroke(int keyStroke); bool acknowledgeKeyArray(); bool acknowledgeMouse(); void acknowledgeHeartBeat(); void focus(); void blur(); void shift(int xOffset, int yOffset); bool within(int xTarget, int yTarget); void draw(); void erase(); }; #endif