blob: 9bb1fd8312b07d38e3361b6de834d3758145b357 [file] [log] [blame]
Bjorn Bringertfb903a42013-03-18 21:17:26 +00001#ifndef HOST_PSEUDOLOCALIZE_H
2#define HOST_PSEUDOLOCALIZE_H
3
Elliott Hughesbe5474d2015-12-04 15:33:35 -08004#include <android-base/macros.h>
Anton Krumina2ef5c02014-03-12 14:46:44 -07005#include "StringPool.h"
6
Igor Viarheichykcbb1e672015-05-14 18:47:00 -07007class PseudoMethodImpl {
8 public:
9 virtual ~PseudoMethodImpl() {}
10 virtual String16 start() { return String16(); }
11 virtual String16 end() { return String16(); }
12 virtual String16 text(const String16& text) = 0;
13 virtual String16 placeholder(const String16& text) = 0;
14};
Bjorn Bringertfb903a42013-03-18 21:17:26 +000015
Igor Viarheichykcbb1e672015-05-14 18:47:00 -070016class PseudoMethodNone : public PseudoMethodImpl {
17 public:
18 PseudoMethodNone() {}
19 String16 text(const String16& text) { return text; }
20 String16 placeholder(const String16& text) { return text; }
21 private:
22 DISALLOW_COPY_AND_ASSIGN(PseudoMethodNone);
23};
24
25class PseudoMethodBidi : public PseudoMethodImpl {
26 public:
27 String16 text(const String16& text);
28 String16 placeholder(const String16& text);
29};
30
31class PseudoMethodAccent : public PseudoMethodImpl {
32 public:
33 PseudoMethodAccent() : mDepth(0), mWordCount(0), mLength(0) {}
34 String16 start();
35 String16 end();
36 String16 text(const String16& text);
37 String16 placeholder(const String16& text);
38 private:
39 size_t mDepth;
40 size_t mWordCount;
41 size_t mLength;
42};
43
44class Pseudolocalizer {
45 public:
Chih-Hung Hsieh9b8528f2016-08-10 14:15:30 -070046 explicit Pseudolocalizer(PseudolocalizationMethod m);
Igor Viarheichykcbb1e672015-05-14 18:47:00 -070047 ~Pseudolocalizer() { if (mImpl) delete mImpl; }
48 void setMethod(PseudolocalizationMethod m);
49 String16 start() { return mImpl->start(); }
50 String16 end() { return mImpl->end(); }
51 String16 text(const String16& text);
52 private:
53 PseudoMethodImpl *mImpl;
54 size_t mLastDepth;
55};
Bjorn Bringertfb903a42013-03-18 21:17:26 +000056
57#endif // HOST_PSEUDOLOCALIZE_H
58