OSDN Git Service

* version up for RELEASE
[modchxj/mod_chxj.git] / include / chxj_qr_code.h
1 /*
2  * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
3  * Copyright (C) 2005 QSDN,Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #ifndef __CHXJ_QR_CODE_H__
18 #define __CHXJ_QR_CODE_H__
19
20 #include "chxj_apache.h"
21 #include "qs_parse_string.h"
22
23 typedef enum _qr_ver_t {
24   QR_VER_1=0,
25   QR_VER_2,
26   QR_VER_3,
27   QR_VER_4,
28   QR_VER_5,
29   QR_VER_6,
30   QR_VER_7,
31   QR_VER_8,
32   QR_VER_9,
33   QR_VER_10,
34   QR_VER_11,
35   QR_VER_12,
36   QR_VER_13,
37   QR_VER_14,
38   QR_VER_15,
39   QR_VER_16,
40   QR_VER_17,
41   QR_VER_18,
42   QR_VER_19,
43   QR_VER_20,
44   QR_VER_21,
45   QR_VER_22,
46   QR_VER_23,
47   QR_VER_24,
48   QR_VER_25,
49   QR_VER_26,
50   QR_VER_27,
51   QR_VER_28,
52   QR_VER_29,
53   QR_VER_30,
54   QR_VER_31,
55   QR_VER_32,
56   QR_VER_33,
57   QR_VER_34,
58   QR_VER_35,
59   QR_VER_36,
60   QR_VER_37,
61   QR_VER_38,
62   QR_VER_39,
63   QR_VER_40,
64 } qr_ver_t;
65
66 typedef enum _qr_level_t {
67   QR_LEVEL_L=0,
68   QR_LEVEL_M,
69   QR_LEVEL_Q,
70   QR_LEVEL_H,
71 } qr_level_t;
72
73 /*----------------------------------------------------------------------------*/
74 /* ¥â¡¼¥É                                                                     */
75 /*----------------------------------------------------------------------------*/
76 typedef enum _qr_mode_t {
77   QR_NUM_MODE = 0,
78   QR_ALPHA_MODE,
79   QR_8BIT_MODE,
80   QR_KANJI_MODE,
81   QR_ECI_MODE,
82   QR_FNC1_1_MODE,
83   QR_FNC1_2_MODE,
84   QR_STR_CAT_MODE,
85   QR_END_PTN_MODE,
86   QR_RSV1_MODE,
87   QR_RSV2_MODE,
88   QR_RSV3_MODE,
89   QR_RSV4_MODE,
90   QR_RSV5_MODE,
91   QR_RSV6_MODE,
92   QR_RSV7_MODE,
93 } qr_mode_t;
94
95 typedef enum _qr_code_found_t {
96   QR_NOT_FOUND = 0,
97   QR_FOUND,
98 } qr_code_found_t;
99
100 typedef enum _qr_mode_change_t {
101   QR_NOT_CHANGE = 0,
102   QR_CHANGE,
103 } qr_mode_change_t;
104
105 typedef struct qr_code_t qr_code_t;
106
107 struct qr_code_t {
108   qr_code_found_t  found;
109   qr_mode_change_t mode_change;
110
111   qr_ver_t         version;
112   qr_level_t       level;
113   qr_mode_t        mode;
114   request_rec*     r;
115   Doc*             doc;
116   int              size;
117   char*            indata;
118 };
119
120 extern int chxj_qr_code_handler(
121   request_rec*           r);
122
123 extern int chxj_qrcode_create_image_data(
124   qr_code_t*         qrcode, 
125   char**             img, 
126   size_t*            img_len);
127
128 extern void    chxj_qrcode_node_to_qrcode(
129   qr_code_t*         qrcode, 
130   Node*              root);
131
132 extern char*   chxj_qr_code_blob_handler(
133   request_rec*       r, 
134   const char*        indata, 
135   size_t*            len);
136
137 #endif