1 /* 2 * Copyright 2010 Wim van der Meer <WPJvanderMeer@gmail.com> 3 * All rights reserved. Distributed under the terms of the MIT license. 4 * 5 * Authors: 6 * Wim van der Meer 7 */ 8 9 10 #include "ScreenshotApp.h" 11 12 #include <stdlib.h> 13 14 #include <Bitmap.h> 15 #include <Catalog.h> 16 #include <Locale.h> 17 #include <Roster.h> 18 19 #include "ScreenshotWindow.h" 20 #include "Utility.h" 21 22 23 ScreenshotApp::ScreenshotApp() 24 : 25 BApplication("application/x-vnd.haiku-screenshot"), 26 fUtility(new Utility), 27 fSilent(false), 28 fClipboard(false) 29 { 30 } 31 32 33 ScreenshotApp::~ScreenshotApp() 34 { 35 delete fUtility; 36 } 37 38 39 void 40 ScreenshotApp::MessageReceived(BMessage* message) 41 { 42 status_t status = B_OK; 43 switch (message->what) { 44 case SS_UTILITY_DATA: 45 { 46 BMessage bitmap; 47 status = message->FindMessage("wholeScreen", &bitmap); 48 if (status != B_OK) 49 break; 50 51 fUtility->wholeScreen = new BBitmap(&bitmap); 52 53 status = message->FindMessage("cursorBitmap", &bitmap); 54 if (status != B_OK) 55 break; 56 57 fUtility->cursorBitmap = new BBitmap(&bitmap); 58 59 status = message->FindMessage("cursorAreaBitmap", &bitmap); 60 if (status != B_OK) 61 break; 62 63 fUtility->cursorAreaBitmap = new BBitmap(&bitmap); 64 65 status = message->FindPoint("cursorPosition", 66 &fUtility->cursorPosition); 67 if (status != B_OK) 68 break; 69 70 status = message->FindRect("activeWindowFrame", 71 &fUtility->activeWindowFrame); 72 if (status != B_OK) 73 break; 74 75 status = message->FindRect("tabFrame", &fUtility->tabFrame); 76 if (status != B_OK) 77 break; 78 79 status = message->FindFloat("borderSize", &fUtility->borderSize); 80 if (status != B_OK) 81 break; 82 83 break; 84 } 85 86 default: 87 BApplication::MessageReceived(message); 88 break; 89 } 90 91 if (status != B_OK) 92 be_app->PostMessage(B_QUIT_REQUESTED); 93 } 94 95 96 void 97 ScreenshotApp::ArgvReceived(int32 argc, char** argv) 98 { 99 for (int32 i = 0; i < argc; i++) { 100 if (strcmp(argv[i], "-s") == 0 101 || strcmp(argv[i], "--silent") == 0) 102 fSilent = true; 103 else if (strcmp(argv[i], "-c") == 0 104 || strcmp(argv[i], "--clipboard") == 0) 105 fClipboard = true; 106 } 107 } 108 109 110 void 111 ScreenshotApp::ReadyToRun() 112 { 113 new ScreenshotWindow(*fUtility, fSilent, fClipboard); 114 } 115 116 117 int 118 main() 119 { 120 ScreenshotApp app; 121 return app.Run(); 122 } 123