pdf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pdf-devel] New functions for the Time Module


From: Aleksander Morgado
Subject: Re: [pdf-devel] New functions for the Time Module
Date: Sat, 26 Jul 2008 18:36:31 +0200
User-agent: Thunderbird 2.0.0.16 (X11/20080724)

> Here's the new patch for the API:
>   

And here's the patch for the implementation of that new API.

If agreed, we can close the flyspray task.

Cheers,
-Aleksander

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/aleksander/Development/libgnupdf_repo\
#   /trunk/
# testament_sha1: d82c270cc55d4cda0dfd4c5c07ad1dc7b431ce4b
# timestamp: 2008-07-26 18:30:45 +0200
# base_revision_id: address@hidden
#
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog    2008-07-25 23:13:29 +0000
+++ ChangeLog    2008-07-26 16:30:40 +0000
@@ -1,3 +1,14 @@
+2008-07-26  Aleksander Morgado  <address@hidden>
+
+    * src/base/pdf-types.h: Include windows.h if compiling for w32.
+
+    * src/base/pdf-time.[c|h] (pdf_time_set_from_u32): New function to
+    initialize a pdf_time_t with the Unix time given as a pdf_u32_t.
+    (pdf_time_set_from_i64): New function to initialize a pdf_time_t with
+    the Unix time given as a pdf_i64_t.
+    (pdf_time_w32_set_from_filetime): New w32-specific function to
+    initialize a pdf_time_t with a FILETIME structure.
+
 2008-07-26  Jose E. Marchesi  <address@hidden>
 
     * doc/gnupdf-hg.texi (Naming Functions): New section.

=== modified file 'src/base/pdf-time.c'
--- src/base/pdf-time.c    2008-07-25 22:38:34 +0000
+++ src/base/pdf-time.c    2008-07-26 16:25:54 +0000
@@ -27,10 +27,12 @@
 #include <time.h>
 
 #include <pdf-alloc.h>
+#include <pdf-types.h>
 #include <pdf-time-context.h>
 #include <pdf-time-string.h>
 #include <pdf-time.h>
 
+
 #define PDF_SECS_PER_DAY      86400
 #define PDF_SECS_PER_HOUR      3600
 #define PDF_SECS_PER_MIN         60
@@ -517,6 +519,92 @@
   return PDF_OK;
 }
 
+
+/* Set time value with a 32-bit unsigned integer */
+pdf_status_t
+pdf_time_set_from_u32 (pdf_time_t time_var,
+                       pdf_u32_t seconds)
+{
+  pdf_status_t ret_code;
+  pdf_i64_assign(&(time_var->seconds), 0, seconds, &ret_code);
+  return ret_code; 
+}
+
+
+/* Set time value with a pdf_i64_t variable */
+pdf_status_t
+pdf_time_set_from_i64 (pdf_time_t time_var,
+                       pdf_i64_t  seconds)
+{
+  pdf_status_t ret_code;
+  pdf_i64_copy(seconds, &(time_var->seconds), &ret_code);
+  return ret_code;
+}
+
+#ifdef PDF_HOST_WIN32
+/* Windows-specific function to set the time with a FILETIME structure */
+pdf_status_t
+pdf_time_w32_set_from_filetime (pdf_time_t time_var,
+                                const FILETIME *p_filetime)
+{
+  SYSTEMTIME systemtime;
+
+ 
+  /*
+    BOOL WINAPI
+    FileTimeToSystemTime(const FILETIME *lpFileTime,
+                         LPSYSTEMTIME lpSystemTime);
+
+    If the function succeeds, the return value is nonzero.
+
+    typedef struct _SYSTEMTIME {
+      WORD wYear;
+      WORD wMonth;        (1: january, 2: february...)
+      WORD wDayOfWeek;    (0:sunday, 1: monday...)
+      WORD wDay;
+      WORD wHour;
+      WORD wMinute;
+      WORD wSecond;
+      WORD wMilliseconds;
+    } SYSTEMTIME;
+
+   */
+
+  /* Convert filetime to systemtime calendar */
+  if(FileTimeToSystemTime(p_filetime,&systemtime)==0)
+    {
+      PDF_DEBUG_BASE("FileTimeToSystemTime failed...");
+      return PDF_ERROR;
+    }
+  else
+    {
+      /* Convert from systemtime calendar to our pdf_time_cal_s */
+      struct pdf_time_cal_s calendar;
+
+      calendar.year = systemtime.wYear;
+      calendar.month = systemtime.wMonth;
+      calendar.day = systemtime.wDay;
+      calendar.hour = systemtime.wHour;
+      calendar.minute = systemtime.wMinute;
+      calendar.second = systemtime.wSecond;
+      /* Round seconds if milliseconds available */
+      if(systemtime.wMilliseconds >= 500)
+        {
+          calendar.second++;
+        }
+      calendar.gmt_offset = 0;
+      /* For us, sunday is 7 */
+      calendar.dow = (systemtime.wDayOfWeek == 0) ? 7:
systemtime.wDayOfWeek;
+     
+      return pdf_time_from_cal(time_var,&calendar);
+    }
+}
+#endif
+
+
+
+
+
 /* ------------------------- Managing Time Values
--------------------------- */
 
 /* Copy the contents of a given pdf_time_t object */

=== modified file 'src/base/pdf-time.h'
--- src/base/pdf-time.h    2008-07-16 20:08:02 +0000
+++ src/base/pdf-time.h    2008-07-26 16:16:22 +0000
@@ -131,6 +131,26 @@
 pdf_time_clear (pdf_time_t time_var);
 
 
+/* Set time value with a 32-bit unsigned integer */
+pdf_status_t
+pdf_time_set_from_u32 (pdf_time_t time_var,
+                       pdf_u32_t seconds);
+
+
+/* Set time value with a pdf_i64_t variable */
+pdf_status_t
+pdf_time_set_from_i64 (pdf_time_t time_var,
+                       pdf_i64_t  seconds);
+
+
+#ifdef PDF_HOST_WIN32
+  /* Windows-specific function to set the time with a pdf_i64_t */
+  pdf_status_t
+  pdf_time_w32_set_from_filetime (pdf_time_t time_var,
+                                  const FILETIME *p_filetime);
+#endif
+
+
 /* Add the time span represented by cal_span to the text object */
 pdf_status_t
 pdf_time_add_cal_span (pdf_time_t time_var,

=== modified file 'src/base/pdf-types.h'
--- src/base/pdf-types.h    2008-07-09 14:05:48 +0000
+++ src/base/pdf-types.h    2008-07-26 16:16:22 +0000
@@ -414,6 +414,7 @@
 
 #if defined _WIN32 || defined __WIN32__
  #define PDF_HOST_WIN32
+ #include <windows.h>
 #endif
 
 

# Begin bundle
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
RZDP/F3JFOFCQ+ksgJg=





reply via email to

[Prev in Thread] Current Thread [Next in Thread]