From b53e421a27684304d958a8caaeeb5602a3c8a0d4 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 16:20:13 +0800 Subject: [PATCH] add getPosFromXPointer in cre.cpp --- cre.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cre.cpp b/cre.cpp index ac9a9fbd9..a60bbae83 100644 --- a/cre.cpp +++ b/cre.cpp @@ -117,28 +117,29 @@ static int getPageFromXPointer(lua_State *L) { return 1; } -static int getCurrentPos(lua_State *L) { +static int getPosFromXPointer(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); + const char *xpointer_str = luaL_checkstring(L, 2); - lua_pushinteger(L, doc->text_view->GetPos()); + int pos = 0; + ldomXPointer xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); + + lvPoint pt = xp.toPoint(); + if (pt.y > 0) { + pos = pt.y; + } + lua_pushinteger(L, pos); return 1; } -//static int getPosFromXPointer(lua_State *L) { - //CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); - //const char *xpointer_str = luaL_checkstring(L, 2); - - //lvRect rc; - //int pos; +static int getCurrentPos(lua_State *L) { + CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); - //ldomXPointer *xp = NULL; - //xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); - //getCursorDocRect(*xp, rc); - //pos = + lua_pushinteger(L, doc->text_view->GetPos()); - //return 1; -//} + return 1; +} static int getCurrentPercent(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); @@ -440,6 +441,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getPages", getNumberOfPages}, {"getCurrentPage", getCurrentPage}, {"getPageFromXPointer", getPageFromXPointer}, + {"getPosFromXPointer", getPosFromXPointer}, {"getCurrentPos", getCurrentPos}, {"getCurrentPercent", getCurrentPercent}, {"getXPointer", getXPointer},