1/* 2 * Copyright (c) 2005-2010, Haiku, Inc. 3 * Distributed under the terms of the MIT license. 4 * 5 * Author: 6 * DarkWyrm <darkwyrm@gmail.com> 7 */ 8#ifndef RESFIELDS_H 9#define RESFIELDS_H 10 11#include <ColumnTypes.h> 12#include <Resources.h> 13 14class ResourceData; 15 16class TypeCodeField : public BStringField 17{ 18public: 19 TypeCodeField(const type_code &code, ResourceData *data); 20 type_code GetTypeCode(void) const { return fTypeCode; } 21 ResourceData * GetResourceData(void) const { return fData; } 22 23private: 24 type_code fTypeCode; 25 ResourceData *fData; 26}; 27 28// This is the base class for fields displaying the preview in the Data 29// column of the main window. Each child class must implement all methods 30class PreviewField : public BField 31{ 32public: 33 PreviewField(void); 34 virtual ~PreviewField(void); 35 virtual void DrawField(BRect rect, BView* parent) = 0; 36 virtual void SetData(char *data, const size_t &length) = 0; 37}; 38 39// Unlike the BBitmapField class, this one actually takes ownership of the 40// bitmap passed to it. This is good because the bitmap given to it is 41// allocated by the Translation Kit. 42class BitmapPreviewField : public PreviewField 43{ 44public: 45 BitmapPreviewField(BBitmap *bitmap); 46 virtual ~BitmapPreviewField(void); 47 virtual void DrawField(BRect rect, BView* parent); 48 virtual void SetData(char *data, const size_t &length); 49 50private: 51 BBitmap *fBitmap; 52}; 53 54class IntegerPreviewField : public PreviewField 55{ 56public: 57 IntegerPreviewField(const int64 &value); 58 virtual ~IntegerPreviewField(void); 59 virtual void DrawField(BRect rect, BView* parent); 60 virtual void SetData(char *data, const size_t &length); 61 62private: 63 int64 fValue; 64}; 65 66 67class StringPreviewField : public PreviewField 68{ 69public: 70 StringPreviewField(const char *string); 71 virtual ~StringPreviewField(void); 72 virtual void DrawField(BRect rect, BView* parent); 73 virtual void SetData(char *data, const size_t &length); 74 75private: 76 BString fString; 77 BString fClipped; 78}; 79 80BString MakeTypeString(int32 type); 81 82#endif 83