From e3d02cd578aef8d212f1c13ea3355977e4b34ae3 Mon Sep 17 00:00:00 2001 From: Tigran Aivazian Date: Thu, 4 Oct 2012 21:08:39 +0100 Subject: [PATCH] First stage of improving the DjVu status info. Conflicts: djvureader.lua --- djvu.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/djvu.c b/djvu.c index a34c46bfb..6182fb5f7 100644 --- a/djvu.c +++ b/djvu.c @@ -199,11 +199,10 @@ static int openPage(lua_State *L) { /* djvulibre counts page starts from 0 */ page->page_ref = ddjvu_page_create_by_pageno(doc->doc_ref, pageno - 1); + if (! page->page_ref) + return luaL_error(L, "cannot open page #%d", pageno); while (! ddjvu_page_decoding_done(page->page_ref)) handle(L, doc->context, TRUE); - if (! page->page_ref) { - return luaL_error(L, "cannot open page #%d", pageno); - } page->doc = doc; page->num = pageno; @@ -255,8 +254,20 @@ static int getOriginalPageSize(lua_State *L) { lua_pushnumber(L, info.width); lua_pushnumber(L, info.height); + lua_pushnumber(L, info.dpi); - return 2; + return 3; +} + +static int getPageInfo(lua_State *L) { + DjvuDocument *doc = (DjvuDocument*) luaL_checkudata(L, 1, "djvudocument"); + int pageno = luaL_checkint(L, 2); + ddjvu_page_t *djvu_page; + djvu_page = ddjvu_page_create_by_pageno(doc->doc_ref, pageno - 1); + if (!djvu_page) + return luaL_error(L, "cannot create djvu_page #%d", pageno); + while (! ddjvu_page_decoding_done(djvu_page)) + handle(L, doc->context, TRUE); } /* @@ -535,6 +546,7 @@ static const struct luaL_Reg djvudocument_meth[] = { {"getToc", getTableOfContent}, {"getPageText", getPageText}, {"getOriginalPageSize", getOriginalPageSize}, + {"getPageInfo", getPageInfo}, {"close", closeDocument}, {"getCacheSize", getCacheSize}, {"cleanCache", cleanCache},