1/*****************************************************************************/
2// BeUtilsTranslation.cpp
3//
4// Version: 1.0.0d1
5//
6// Several utilities for writing applications for the BeOS. It are small
7// very specific functions, but generally useful (could be here because of a
8// lack in the APIs, or just sheer lazyness :))
9//
10//
11// Author
12//   Ithamar R. Adema
13//   Michael Pfeiffer
14//
15// This application and all source files used in its construction, except
16// where noted, are licensed under the MIT License, and have been written
17// and are:
18//
19// Copyright (c) 2001, 2002 Haiku Project
20//
21// Permission is hereby granted, free of charge, to any person obtaining a
22// copy of this software and associated documentation files (the "Software"),
23// to deal in the Software without restriction, including without limitation
24// the rights to use, copy, modify, merge, publish, distribute, sublicense,
25// and/or sell copies of the Software, and to permit persons to whom the
26// Software is furnished to do so, subject to the following conditions:
27//
28// The above copyright notice and this permission notice shall be included
29// in all copies or substantial portions of the Software.
30//
31// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
34// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
36// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
37// DEALINGS IN THE SOFTWARE.
38/*****************************************************************************/
39
40#include <Application.h>
41#include <Bitmap.h>
42#include <Messenger.h>
43#include <Resources.h>
44#include <Roster.h>
45#include <String.h>
46
47#include "BeUtils.h"
48
49BBitmap* LoadBitmap(const char* name, uint32 type_code) {
50	if (type_code == B_TRANSLATOR_BITMAP) {
51		return BTranslationUtils::GetBitmap(type_code, name);
52	} else {
53		BResources *res = BApplication::AppResources();
54		if (res != NULL) {
55			BMessage m;
56			size_t length;
57			const void *bits = res->LoadResource(type_code, name, &length);
58			if (bits && m.Unflatten((char*)bits) == B_OK) {
59				return (BBitmap*)BBitmap::Instantiate(&m);
60			}
61		}
62		return NULL;
63	}
64}
65
66BPicture *BitmapToPicture(BView* view, BBitmap *bitmap) {
67	if (bitmap) {
68		view->BeginPicture(new BPicture());
69		view->DrawBitmap(bitmap);
70		return view->EndPicture();
71	}
72	return NULL;
73}
74
75BPicture *BitmapToGrayedPicture(BView* view, BBitmap *bitmap) {
76	if (bitmap) {
77		BRect rect(bitmap->Bounds());
78		view->BeginPicture(new BPicture());
79		view->DrawBitmap(bitmap);
80		view->SetHighColor(255, 255, 255, 128);
81		view->SetDrawingMode(B_OP_ALPHA);
82		view->FillRect(rect);
83		return view->EndPicture();
84	}
85	return NULL;
86}
87