1 /* 2 * Copyright 2003-2009 Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Michael Pfeiffer, laplace@haiku-os.org 7 */ 8 #ifndef PRINT_OPTIONS_WINDOW_H 9 #define PRINT_OPTIONS_WINDOW_H 10 11 12 #include <Messenger.h> 13 #include <RadioButton.h> 14 #include <Rect.h> 15 #include <TextControl.h> 16 #include <Window.h> 17 18 19 class PrintOptions { 20 public: 21 PrintOptions(); 22 23 // bounds of the image Bounds()24 BRect Bounds() const { return fBounds; } 25 void SetBounds(BRect bounds); 26 27 enum Option { 28 kFitToPage, 29 kZoomFactor, 30 kDPI, 31 kWidth, 32 kHeight, 33 kNumberOfOptions 34 }; Option()35 enum Option Option() const { return fOption; } SetOption(enum Option op)36 void SetOption(enum Option op) { fOption = op; } 37 38 // ZoomFactor = 72.0 / dpi ZoomFactor()39 float ZoomFactor() const { return fZoomFactor; } 40 void SetZoomFactor(float z); DPI()41 float DPI() const { return fDPI; } 42 void SetDPI(float dpi); 43 44 // Setting width/height updates height/width to keep aspect ratio Width()45 float Width() const { return fWidth; } Height()46 float Height() const { return fHeight; } 47 void SetWidth(float width); 48 void SetHeight(float height); 49 50 private: 51 BRect fBounds; 52 enum Option fOption; 53 float fZoomFactor; 54 float fDPI; 55 float fWidth, fHeight; // 1/72 Inches 56 }; 57 58 class PrintOptionsWindow : public BWindow { 59 public: 60 PrintOptionsWindow(BPoint at, 61 PrintOptions* options, BWindow* listener); 62 ~PrintOptionsWindow(); 63 64 void MessageReceived(BMessage* msg); 65 66 private: 67 BRadioButton* AddRadioButton(const char* name, const char* label, 68 uint32 what, bool selected); 69 70 BTextControl* AddTextControl(const char* name, const char* label, 71 float value, uint32 what); 72 73 void Setup(); 74 enum PrintOptions::Option MsgToOption(uint32 what); 75 bool GetValue(BTextControl* text, float* value); 76 void SetValue(BTextControl* text, float value); 77 78 PrintOptions* fPrintOptions; 79 PrintOptions fCurrentOptions; 80 BMessenger fListener; 81 status_t fStatus; 82 BTextControl* fZoomFactor; 83 BTextControl* fDPI; 84 BTextControl* fWidth; 85 BTextControl* fHeight; 86 87 enum { 88 kMsgOK = 'mPOW', 89 kMsgFitToPageSelected, 90 kMsgZoomFactorSelected, 91 kMsgDPISelected, 92 kMsgWidthAndHeightSelected, 93 94 kMsgZoomFactorChanged, 95 kMsgDPIChanged, 96 kMsgWidthChanged, 97 kMsgHeightChanged, 98 99 kMsgJobSetup, 100 101 kIndent = 5, 102 kLineSkip = 5, 103 }; 104 }; 105 106 107 #endif 108 109