| /* |
| * Copyright (C) 2009 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ANDROID_EMOJI_FACTORY_H |
| #define ANDROID_EMOJI_FACTORY_H |
| |
| namespace android { |
| |
| // Abstract class for EmojiFactory. |
| // |
| // Here, PUA (or Android PUA) means Unicode PUA defined for various emoji. The |
| // PUA supports emoji of DoCoMo, KDDI, Softbank and Goomoji. Each PUA defined |
| // by the other vendors (careers) are called Vendor Specific PUA (vsp). |
| // For more information, go |
| // http://unicode.org/~mdavis/08080r-emoji-proposal/ (tentative) |
| class EmojiFactory { |
| public: |
| virtual ~EmojiFactory() {} |
| // Returns binary image data corresponding to "pua". The size of binary is |
| // stored to "size". Returns NULL if there's no mapping from the "pua" to a |
| // specific image. Currently, image format is all (animated) gif. |
| // |
| // TODO(dmiyakawa): there should be a way to tell users the format of the |
| // binary. |
| virtual const char *GetImageBinaryFromAndroidPua(int pua, int *size) = 0; |
| |
| // Returns binary image data corresponding to "sjis", which is defined by |
| // each career. Returns NULL when there's no mapping for "sjis". |
| virtual const char *GetImageBinaryFromVendorSpecificSjis(unsigned short sjis, |
| int *size) { |
| return GetImageBinaryFromAndroidPua( |
| GetAndroidPuaFromVendorSpecificSjis(sjis), size); |
| } |
| |
| // Returns binary image data corresponding to Vendor-specific PUA "vsp". |
| // Returns NULL when there's no mapping for "vsp". |
| virtual const char *GetImageBinaryFromVendorSpecificPua(int vsp, |
| int *size) { |
| return GetImageBinaryFromAndroidPua( |
| GetAndroidPuaFromVendorSpecificPua(vsp), size); |
| } |
| |
| // Returns Android PUA corresponding to "sjis". Returns -1 when there's no |
| // mapping from "sjis" to a Android PUA. |
| virtual int GetAndroidPuaFromVendorSpecificSjis(unsigned short sjis) = 0; |
| |
| // Returns Vendor-specific Shift jis code corresponding to "pua". Returns -1 |
| // when ther's no mapping from "pua" to a specific sjis. |
| virtual int GetVendorSpecificSjisFromAndroidPua(int pua) = 0; |
| |
| // Returns maximum Vendor-Specific PUA. This is the last valid value. |
| virtual int GetMaximumVendorSpecificPua() = 0; |
| |
| // Returns minimum Vendor-Specific PUA. |
| virtual int GetMinimumVendorSpecificPua() = 0; |
| |
| // Returns maximum Android PUA. This the last valid value. |
| virtual int GetMaximumAndroidPua() = 0; |
| |
| // Returns minimum Android PUA. |
| virtual int GetMinimumAndroidPua() = 0; |
| |
| // Returns Android PUA corresponding to Vendor-Specific Unicode "vsp". Returns |
| // -1 when there's no mapping from "vsp" to a Android PUA. |
| virtual int GetAndroidPuaFromVendorSpecificPua(int vsp) = 0; |
| |
| // Returns Vendor-specific PUA corresponding to "pua". Returns -1 when |
| // there's no mapping from "pua" to a specific unicode. |
| virtual int GetVendorSpecificPuaFromAndroidPua(int pua) = 0; |
| |
| // Returns non NULL string which defines the name of this factory. |
| // e.g. "docomo", "goomoji" |
| virtual const char *Name() const = 0; |
| |
| // Get a specific implementation of EmojiFactory. If there's no implementation |
| // for "name", returns NULL. |
| // The ownership of the instance remains to this class, so users must not |
| // release it. |
| static EmojiFactory *GetImplementation(const char *name); |
| |
| // Get an implementation of EmojiFactory. This assumes that, usually, there |
| // should be only one possible EmojiFactory implementation. If there are more |
| // than one implementations, most prefered one is returned. |
| // The ownership of the instance remains to this class, so users must not |
| // release it. |
| static EmojiFactory *GetAvailableImplementation(); |
| }; |
| |
| } // namespace android |
| |
| #endif // ANDROID_EMOJI_FACTORY_H |