blob: 97ded4ce5a0f37dba07ac37f9db2a7f933268040 [file] [log] [blame]
The Android Open Source Project7d814fb2009-03-10 16:20:55 -07001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ANDROID_EMOJI_FACTORY_H
18#define ANDROID_EMOJI_FACTORY_H
19
20namespace android {
21
22// Abstract class for EmojiFactory.
23//
24// Here, PUA (or Android PUA) means Unicode PUA defined for various emoji. The
25// PUA supports emoji of DoCoMo, KDDI, Softbank and Goomoji. Each PUA defined
26// by the other vendors (careers) are called Vendor Specific PUA (vsp).
27// For more information, go
28// http://unicode.org/~mdavis/08080r-emoji-proposal/ (tentative)
29class EmojiFactory {
30 public:
31 virtual ~EmojiFactory() {}
32 // Returns binary image data corresponding to "pua". The size of binary is
33 // stored to "size". Returns NULL if there's no mapping from the "pua" to a
34 // specific image. Currently, image format is all (animated) gif.
35 //
36 // TODO(dmiyakawa): there should be a way to tell users the format of the
37 // binary.
38 virtual const char *GetImageBinaryFromAndroidPua(int pua, int *size) = 0;
39
40 // Returns binary image data corresponding to "sjis", which is defined by
41 // each career. Returns NULL when there's no mapping for "sjis".
42 virtual const char *GetImageBinaryFromVendorSpecificSjis(unsigned short sjis,
43 int *size) {
44 return GetImageBinaryFromAndroidPua(
45 GetAndroidPuaFromVendorSpecificSjis(sjis), size);
46 }
47
48 // Returns binary image data corresponding to Vendor-specific PUA "vsp".
49 // Returns NULL when there's no mapping for "vsp".
50 virtual const char *GetImageBinaryFromVendorSpecificPua(int vsp,
51 int *size) {
52 return GetImageBinaryFromAndroidPua(
53 GetAndroidPuaFromVendorSpecificPua(vsp), size);
54 }
55
56 // Returns Android PUA corresponding to "sjis". Returns -1 when there's no
57 // mapping from "sjis" to a Android PUA.
58 virtual int GetAndroidPuaFromVendorSpecificSjis(unsigned short sjis) = 0;
59
60 // Returns Vendor-specific Shift jis code corresponding to "pua". Returns -1
61 // when ther's no mapping from "pua" to a specific sjis.
62 virtual int GetVendorSpecificSjisFromAndroidPua(int pua) = 0;
63
64 // Returns maximum Vendor-Specific PUA. This is the last valid value.
65 virtual int GetMaximumVendorSpecificPua() = 0;
66
67 // Returns minimum Vendor-Specific PUA.
68 virtual int GetMinimumVendorSpecificPua() = 0;
69
70 // Returns maximum Android PUA. This the last valid value.
71 virtual int GetMaximumAndroidPua() = 0;
72
73 // Returns minimum Android PUA.
74 virtual int GetMinimumAndroidPua() = 0;
75
76 // Returns Android PUA corresponding to Vendor-Specific Unicode "vsp". Returns
77 // -1 when there's no mapping from "vsp" to a Android PUA.
78 virtual int GetAndroidPuaFromVendorSpecificPua(int vsp) = 0;
79
80 // Returns Vendor-specific PUA corresponding to "pua". Returns -1 when
81 // there's no mapping from "pua" to a specific unicode.
82 virtual int GetVendorSpecificPuaFromAndroidPua(int pua) = 0;
83
84 // Returns non NULL string which defines the name of this factory.
85 // e.g. "docomo", "goomoji"
86 virtual const char *Name() const = 0;
87
88 // Get a specific implementation of EmojiFactory. If there's no implementation
89 // for "name", returns NULL.
The Android Open Source Projecta1d44822009-03-18 17:39:47 -070090 // The ownership of the instance remains to this class, so users must not
91 // release it.
The Android Open Source Project7d814fb2009-03-10 16:20:55 -070092 static EmojiFactory *GetImplementation(const char *name);
93
94 // Get an implementation of EmojiFactory. This assumes that, usually, there
95 // should be only one possible EmojiFactory implementation. If there are more
96 // than one implementations, most prefered one is returned.
The Android Open Source Projecta1d44822009-03-18 17:39:47 -070097 // The ownership of the instance remains to this class, so users must not
98 // release it.
The Android Open Source Project7d814fb2009-03-10 16:20:55 -070099 static EmojiFactory *GetAvailableImplementation();
100};
101
102} // namespace android
103
104#endif // ANDROID_EMOJI_FACTORY_H