> 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: [EMAIL PROTECTED] # target_branch: file:///home/aleksander/Development/libgnupdf_repo\ # /trunk/ # testament_sha1: d82c270cc55d4cda0dfd4c5c07ad1dc7b431ce4b # timestamp: 2008-07-26 18:30:45 +0200 # base_revision_id: [EMAIL PROTECTED] # # 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 <[EMAIL PROTECTED]> + + * 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 <[EMAIL PROTECTED]> * 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=