OSDN Git Service

* Added New Feature
[modchxj/mod_chxj.git] / include / chxj_specified_device.h
old mode 100644 (file)
new mode 100755 (executable)
index ea36f97..abd2f55
@@ -1,6 +1,6 @@
 /*
+ * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
  * Copyright (C) 2005 QSDN,Inc. All rights reserved.
- * Copyright (C) 2005 Atsushi Konno All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,15 +24,27 @@ typedef enum {
   CHXJ_SPEC_Chtml_3_0,
   CHXJ_SPEC_Chtml_4_0,
   CHXJ_SPEC_Chtml_5_0,
+  CHXJ_SPEC_Chtml_6_0, /* use XHTML */
+  CHXJ_SPEC_Chtml_7_0, /* use XHTML */
   CHXJ_SPEC_XHtml_Mobile_1_0,
   CHXJ_SPEC_Hdml,
   CHXJ_SPEC_Jhtml,
+  CHXJ_SPEC_Jxhtml,    /* use XHTML */
+  CHXJ_SPEC_iPhone2,   /* use XHTML */
+  CHXJ_SPEC_iPhone3,   /* use XHTML */
+  CHXJ_SPEC_iPhone4,   /* use XHTML */
+  CHXJ_SPEC_softbank_android, /* use XHTML (SoftBank) */
+  CHXJ_SPEC_au_android, /* use XHTML (au KDDI)  */
+  CHXJ_SPEC_docomo_android, /* use XHTML (docomo)   */
+  CHXJ_SPEC_android,        /* use XHTML */
   CHXJ_SPEC_HTML,
 } spec_type;
 
 #define CHXJ_PIC_OK                (0x01)
 #define CHXJ_PIC_NG                (0x00)
 
+#define IS_IPHONE(X) (((X) == CHXJ_SPEC_iPhone2) || ((X) == CHXJ_SPEC_iPhone3) || ((X) == CHXJ_SPEC_iPhone4))
+
 #include "mod_chxj.h"
 #include "chxj_cookie.h"
 
@@ -40,36 +52,37 @@ typedef enum {
 typedef struct device_table_t device_table;
 
 struct device_table_t {
-  struct _device_table_t* next;
-  const char* device_id;
-  const char* device_name;
-  spec_type html_spec_type;
-  int width;
-  int heigh;
+  struct device_table_t* next;
+  int                    provider;              /* DOCOMO|AU|SOFTBANK|UNKNOWN */
+  const char*            device_id;
+  const char*            device_name;
+  spec_type              html_spec_type;
+  int                    width;
+  int                    heigh;
   /*--------------------------------------------------------------------------*/
   /* Walll Paper Size                                                         */
   /*--------------------------------------------------------------------------*/
-  int wp_width;
-  int wp_heigh;
+  int                    wp_width;
+  int                    wp_heigh;
   /*--------------------------------------------------------------------------*/
   /* Cache Size                                                               */
   /*--------------------------------------------------------------------------*/
-  int cache;
+  int                    cache;
   /*--------------------------------------------------------------------------*/
   /* Correspondence image format                                              */
   /* 1: It is possible to display it.                                         */
   /* 0: It is not possible to display it.                                     */
   /*--------------------------------------------------------------------------*/
-  int available_gif;
-  int available_jpeg;
-  int available_png;
-  int available_bmp2;
-  int available_bmp4;
+  int                    available_gif;
+  int                    available_jpeg;
+  int                    available_png;
+  int                    available_bmp2;
+  int                    available_bmp4;
   /*--------------------------------------------------------------------------*/
   /* Resolution                                                               */
   /*--------------------------------------------------------------------------*/
-  int dpi_width;
-  int dpi_heigh;
+  int                    dpi_width;
+  int                    dpi_heigh;
   /*--------------------------------------------------------------------------*/
   /* Color number type                                                        */
   /* 2       : 2        Colors                                                */
@@ -80,39 +93,53 @@ struct device_table_t {
   /* 262144  : 262144   Colors                                                */
   /* 15680000: 15680000 over colors                                           */
   /*--------------------------------------------------------------------------*/
-  int color;
-  char* emoji_type;
+  int                    color;
+  char*                  emoji_type;
+  char*                  output_encoding;  /* Output encoding */
 };
 
 typedef struct device_table_list_t  device_table_list;
 
 struct device_table_list_t {
-  struct device_table_list_t* next;
-  char* pattern;
-  ap_regex_t* regexp;
-  device_table* table;
-  device_table* tail;
-} device_table_list;
+  struct device_table_list_t  *next;
+
+  char                        *pattern;
+  ap_regex_t                  *regexp;
+  device_table                *table;
+  device_table                *tail;
+
+  device_table                **sort_table;
+  size_t                      table_count;
+};
 
 typedef struct converter_t converter_t;
 
 struct converter_t {
   /* convert routine */
-  char* (*converter)(request_rec*               r,
-                    struct _device_table_t*     spec,
-                    const char*                 src, 
-                    apr_size_t                  srclen, 
-                    apr_size_t*                 dstlen,
-                    struct _chxjconvrule_entry* entryp,
-                    cookie_t*                   cookie);
-
-  char* (*encoder)(request_rec* r,
-                   const char*  src,
-                   apr_size_t*  len);
+  char *(*converter)(request_rec                 *r,
+                     struct device_table_t       *spec,
+                     const char                  *src, 
+                     apr_size_t                  srclen, 
+                     apr_size_t                  *dstlen,
+                     struct chxjconvrule_entry   *entryp,
+                     cookie_t                    *cookie);
+
+  char *(*encoder)(request_rec  *r,
+                   const char   *src,
+                   apr_size_t   *len);
+
+
+  char *(*emoji_only_converter)(
+                   request_rec           *r,
+                   struct device_table_t *spec,
+                   const char            *src,
+                   apr_size_t            len);
 };
 
 extern converter_t convert_routine[];
 
-device_table* chxj_specified_device(request_rec* r, const char* user_agent);
+extern device_table* chxj_specified_device(
+  request_rec             *r, 
+  const char              *user_agent);
 
 #endif