コード例 #1
0
FX_BOOL CScript_HostPseudoModel::Script_HostPseudoModel_ValidateArgsForMsg(
    CFXJSE_Arguments* pArguments,
    int32_t iArgIndex,
    CFX_WideString& wsValue) {
    if (pArguments == NULL || iArgIndex < 0) {
        return FALSE;
    }
    FX_BOOL bIsJsType = FALSE;
    if (m_pDocument->GetScriptContext()->GetType() ==
            XFA_SCRIPTLANGTYPE_Javascript) {
        bIsJsType = TRUE;
    }
    FXJSE_HVALUE hValueArg = pArguments->GetValue(iArgIndex);
    if (!FXJSE_Value_IsUTF8String(hValueArg) && bIsJsType) {
        ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH);
        FXJSE_Value_Release(hValueArg);
        return FALSE;
    }
    if (FXJSE_Value_IsNull(hValueArg)) {
        wsValue = FX_WSTRC(L"");
    } else {
        CFX_ByteString byMessage;
        FXJSE_Value_ToUTF8String(hValueArg, byMessage);
        wsValue = CFX_WideString::FromUTF8(byMessage, byMessage.GetLength());
    }
    FXJSE_Value_Release(hValueArg);
    return TRUE;
}
コード例 #2
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_PageSpan(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength != 1) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"pageSpan");
    return;
  }
  CXFA_Node* pNode = NULL;
  if (iLength >= 1) {
    pNode = (CXFA_Node*)pArguments->GetObject(0);
  }
  if (!pNode) {
    return;
  }
  IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
  if (!pDocLayout) {
    return;
  }
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  CXFA_LayoutItem* pLayoutItem = pDocLayout->GetLayoutItem(pNode);
  if (!pLayoutItem) {
    FXJSE_Value_SetInteger(hValue, -1);
    return;
  }
  int32_t iLast = pLayoutItem->GetLast()->GetPage()->GetPageIndex();
  int32_t iFirst = pLayoutItem->GetFirst()->GetPage()->GetPageIndex();
  int32_t iPageSpan = iLast - iFirst + 1;
  if (hValue) {
    FXJSE_Value_SetInteger(hValue, iPageSpan);
  }
}
コード例 #3
0
void CScript_SignaturePseudoModel::Script_SignaturePseudoModel_Clear(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength < 1 || iLength > 2) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"clear");
    return;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_Doc* hDoc = pNotify->GetHDOC();
  CXFA_Node* pNode = NULL;
  FX_BOOL bClear = TRUE;
  if (iLength >= 1) {
    pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0));
  }
  if (iLength >= 2) {
    bClear = pArguments->GetInt32(1) == 0 ? FALSE : TRUE;
  }
  FX_BOOL bFlag = pNotify->GetDocProvider()->Clear(hDoc, pNode, bClear);
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (hValue) {
    FXJSE_Value_SetBoolean(hValue, bFlag);
  }
}
コード例 #4
0
void CScript_SignaturePseudoModel::Script_SignaturePseudoModel_Sign(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength < 3 || iLength > 7) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"sign");
    return;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_Doc* hDoc = pNotify->GetHDOC();
  CXFA_NodeList* pNodeList = NULL;
  CFX_WideString wsExpression;
  CFX_WideString wsXMLIdent;
  if (iLength >= 1) {
    pNodeList = (CXFA_NodeList*)pArguments->GetObject(0);
  }
  if (iLength >= 2) {
    CFX_ByteString bsExpression = pArguments->GetUTF8String(1);
    wsExpression =
        CFX_WideString::FromUTF8(bsExpression, bsExpression.GetLength());
  }
  if (iLength >= 3) {
    CFX_ByteString bsXMLIdent = pArguments->GetUTF8String(2);
    wsXMLIdent = CFX_WideString::FromUTF8(bsXMLIdent, bsXMLIdent.GetLength());
  }
  FX_BOOL bSign = pNotify->GetDocProvider()->Sign(hDoc, pNodeList, wsExpression,
                                                  wsXMLIdent);
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (hValue) {
    FXJSE_Value_SetBoolean(hValue, bSign);
  }
}
コード例 #5
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_SheetInBatch(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength != 1) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
                            L"sheetInBatch");
    return;
  }
  CXFA_Node* pNode = NULL;
  if (iLength >= 1) {
    pNode = (CXFA_Node*)pArguments->GetObject(0);
  }
  if (!pNode) {
    return;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
  if (!pDocLayout) {
    return;
  }
  IXFA_Widget* hWidget = pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode));
  if (!hWidget) {
    return;
  }
  IXFA_Doc* hDoc = pNotify->GetHDOC();
  int32_t iPageCount = pNotify->GetDocProvider()->SheetInBatch(hDoc, hWidget);
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (hValue) {
    FXJSE_Value_SetInteger(hValue, iPageCount);
  }
}
コード例 #6
0
void CScript_HostPseudoModel::Script_HostPseudoModel_OpenList(
    CFXJSE_Arguments* pArguments) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    int32_t iLength = pArguments->GetLength();
    if (iLength != 1) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"openList");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    CXFA_Node* pNode = NULL;
    if (iLength >= 1) {
        FXJSE_HVALUE hValue = pArguments->GetValue(0);
        if (FXJSE_Value_IsObject(hValue)) {
            pNode = static_cast<CXFA_Node*>(FXJSE_Value_ToObject(hValue, nullptr));
        } else if (FXJSE_Value_IsUTF8String(hValue)) {
            CFX_ByteString bsString;
            FXJSE_Value_ToUTF8String(hValue, bsString);
            CFX_WideString wsExpression =
                CFX_WideString::FromUTF8(bsString, bsString.GetLength());
            IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
            if (!pScriptContext) {
                FXJSE_Value_Release(hValue);
                return;
            }
            CXFA_Object* pObject = pScriptContext->GetThisObject();
            if (!pObject) {
                FXJSE_Value_Release(hValue);
                return;
            }
            FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
                              XFA_RESOLVENODE_Siblings;
            XFA_RESOLVENODE_RS resoveNodeRS;
            int32_t iRet = pScriptContext->ResolveObjects(pObject, wsExpression,
                           resoveNodeRS, dwFlag);
            if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
                FXJSE_Value_Release(hValue);
                return;
            }
            pNode = resoveNodeRS.nodes[0]->AsNode();
        }
        FXJSE_Value_Release(hValue);
    }
    IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
    if (!pDocLayout) {
        return;
    }
    IXFA_Widget* hWidget = pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode));
    if (!hWidget) {
        return;
    }
    pNotify->GetDocProvider()->SetFocusWidget(pNotify->GetHDOC(), hWidget);
    pNotify->OpenDropDownList(hWidget);
}
コード例 #7
0
void CScript_HostPseudoModel::Script_HostPseudoModel_ResetData(
    CFXJSE_Arguments* pArguments) {
    int32_t iLength = pArguments->GetLength();
    if (iLength < 0 || iLength > 1) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"resetData");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    CFX_WideString wsExpression;
    if (iLength >= 1) {
        CFX_ByteString bsExpression = pArguments->GetUTF8String(0);
        wsExpression =
            CFX_WideString::FromUTF8(bsExpression, bsExpression.GetLength());
    }
    if (wsExpression.IsEmpty()) {
        pNotify->ResetData();
        return;
    }
    int32_t iStart = 0;
    CFX_WideString wsName;
    CXFA_Node* pNode = NULL;
    int32_t iExpLength = wsExpression.GetLength();
    while (iStart < iExpLength) {
        iStart = XFA_FilterName(wsExpression, iStart, wsName);
        IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
        if (!pScriptContext) {
            return;
        }
        CXFA_Object* pObject = pScriptContext->GetThisObject();
        if (!pObject) {
            return;
        }
        FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
                          XFA_RESOLVENODE_Siblings;
        XFA_RESOLVENODE_RS resoveNodeRS;
        int32_t iRet =
            pScriptContext->ResolveObjects(pObject, wsName, resoveNodeRS, dwFlag);
        if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
            continue;
        }
        pNode = resoveNodeRS.nodes[0]->AsNode();
        pNotify->ResetData(pNode->GetWidgetData());
    }
    if (!pNode) {
        pNotify->ResetData();
    }
}
コード例 #8
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_Ready(
    FXJSE_HVALUE hValue,
    FX_BOOL bSetting,
    XFA_ATTRIBUTE eAttribute) {
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  if (bSetting) {
    ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_READY);
    return;
  }
  int32_t iStatus = pNotify->GetLayoutStatus();
  FXJSE_Value_SetBoolean(hValue, iStatus >= 2);
}
コード例 #9
0
void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitAppType(
    FXJSE_HVALUE hValue,
    FX_BOOL bSetting,
    XFA_ATTRIBUTE eAttribute) {
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    if (bSetting) {
        ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
        return;
    }
    CFX_WideString wsAppType;
    pNotify->GetAppProvider()->GetFoxitAppType(wsAppType);
    FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType));
}
コード例 #10
0
void CScript_HostPseudoModel::Script_HostPseudoModel_Language(
    FXJSE_HVALUE hValue,
    FX_BOOL bSetting,
    XFA_ATTRIBUTE eAttribute) {
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    if (bSetting) {
        ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_LANGUAGE);
        return;
    }
    CFX_WideString wsLanguage;
    pNotify->GetAppProvider()->GetLanguage(wsLanguage);
    FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsLanguage));
}
コード例 #11
0
void CScript_HostPseudoModel::Script_HostPseudoModel_NumPages(
    FXJSE_HVALUE hValue,
    FX_BOOL bSetting,
    XFA_ATTRIBUTE eAttribute) {
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    IXFA_Doc* hDoc = pNotify->GetHDOC();
    if (bSetting) {
        ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_NUMPAGES);
        return;
    }
    int32_t iNumPages = pNotify->GetDocProvider()->CountPages(hDoc);
    FXJSE_Value_SetInteger(hValue, iNumPages);
}
コード例 #12
0
void CScript_HostPseudoModel::Script_HostPseudoModel_MessageBox(
    CFXJSE_Arguments* pArguments) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    int32_t iLength = pArguments->GetLength();
    if (iLength < 1 || iLength > 4) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"messageBox");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    CFX_WideString wsMessage;
    CFX_WideString bsTitle;
    FX_DWORD dwMessageType = XFA_MBICON_Error;
    FX_DWORD dwButtonType = XFA_MB_OK;
    if (iLength >= 1) {
        if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 0, wsMessage)) {
            return;
        }
    }
    if (iLength >= 2) {
        if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 1, bsTitle)) {
            return;
        }
    }
    if (iLength >= 3) {
        dwMessageType = pArguments->GetInt32(2);
        if (dwMessageType > XFA_MBICON_Status) {
            dwMessageType = XFA_MBICON_Error;
        }
    }
    if (iLength >= 4) {
        dwButtonType = pArguments->GetInt32(3);
        if (dwButtonType > XFA_MB_YesNoCancel) {
            dwButtonType = XFA_MB_OK;
        }
    }
    int32_t iValue = pNotify->GetAppProvider()->MsgBox(
                         wsMessage, bsTitle, dwMessageType, dwButtonType);
    FXJSE_HVALUE hValue = pArguments->GetReturnValue();
    if (hValue) {
        FXJSE_Value_SetInteger(hValue, iValue);
    }
}
コード例 #13
0
void CScript_SignaturePseudoModel::Script_SignaturePseudoModel_Enumerate(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength != 0) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"enumerate");
    return;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_Doc* hDoc = pNotify->GetHDOC();
  CXFA_NodeList* pList = pNotify->GetDocProvider()->Enumerate(hDoc);
  if (!pList)
    return;
  FXJSE_Value_Set(pArguments->GetReturnValue(),
                  m_pDocument->GetScriptContext()->GetJSValueFromMap(pList));
}
コード例 #14
0
void CScript_HostPseudoModel::Script_HostPseudoModel_ImportData(
    CFXJSE_Arguments* pArguments) {
    int32_t iLength = pArguments->GetLength();
    if (iLength < 0 || iLength > 1) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"importData");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    CFX_WideString wsFilePath;
    if (iLength > 0) {
        CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
        wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
    }
    IXFA_Doc* hDoc = pNotify->GetHDOC();
    pNotify->GetDocProvider()->ImportData(hDoc, wsFilePath);
}
コード例 #15
0
void CScript_HostPseudoModel::Script_HostPseudoModel_Variation(
    FXJSE_HVALUE hValue,
    FX_BOOL bSetting,
    XFA_ATTRIBUTE eAttribute) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    if (bSetting) {
        ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VARIATION);
        return;
    }
    CFX_WideString wsVariation;
    pNotify->GetAppProvider()->GetVariation(wsVariation);
    FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVariation));
}
コード例 #16
0
void CScript_HostPseudoModel::Script_HostPseudoModel_Beep(
    CFXJSE_Arguments* pArguments) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    int32_t iLength = pArguments->GetLength();
    if (iLength < 0 || iLength > 1) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"beep");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    FX_DWORD dwType = 4;
    if (iLength >= 1) {
        dwType = pArguments->GetInt32(0);
    }
    pNotify->GetAppProvider()->Beep(dwType);
}
コード例 #17
0
void CScript_HostPseudoModel::Script_HostPseudoModel_Response(
    CFXJSE_Arguments* pArguments) {
    int32_t iLength = pArguments->GetLength();
    if (iLength < 1 || iLength > 4) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"response");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    CFX_WideString wsQuestion;
    CFX_WideString wsTitle;
    CFX_WideString wsDefaultAnswer;
    FX_BOOL bMark = FALSE;
    if (iLength >= 1) {
        CFX_ByteString bsQuestion = pArguments->GetUTF8String(0);
        wsQuestion = CFX_WideString::FromUTF8(bsQuestion, bsQuestion.GetLength());
    }
    if (iLength >= 2) {
        CFX_ByteString bsTitle = pArguments->GetUTF8String(1);
        wsTitle = CFX_WideString::FromUTF8(bsTitle, bsTitle.GetLength());
    }
    if (iLength >= 3) {
        CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2);
        wsDefaultAnswer =
            CFX_WideString::FromUTF8(bsDefaultAnswer, bsDefaultAnswer.GetLength());
    }
    if (iLength >= 4) {
        bMark = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
    }
    CFX_WideString wsAnswer;
    pNotify->GetAppProvider()->Response(wsAnswer, wsQuestion, wsTitle,
                                        wsDefaultAnswer, bMark);
    FXJSE_HVALUE hValue = pArguments->GetReturnValue();
    if (hValue) {
        FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAnswer));
    }
}
コード例 #18
0
void CScript_HostPseudoModel::Script_HostPseudoModel_GotoURL(
    CFXJSE_Arguments* pArguments) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    int32_t iLength = pArguments->GetLength();
    if (iLength != 1) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"gotoURL");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    IXFA_Doc* hDoc = pNotify->GetHDOC();
    CFX_WideString wsURL;
    if (iLength >= 1) {
        CFX_ByteString bsURL = pArguments->GetUTF8String(0);
        wsURL = CFX_WideString::FromUTF8(bsURL, bsURL.GetLength());
    }
    pNotify->GetDocProvider()->GotoURL(hDoc, wsURL);
}
コード例 #19
0
void CScript_SignaturePseudoModel::Script_SignaturePseudoModel_Verify(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength < 1 || iLength > 4) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"verify");
    return;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_Doc* hDoc = pNotify->GetHDOC();
  CXFA_Node* pNode = NULL;
  if (iLength >= 1) {
    pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0));
  }
  int32_t bVerify = pNotify->GetDocProvider()->Verify(hDoc, pNode);
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (hValue) {
    FXJSE_Value_SetInteger(hValue, bVerify);
  }
}
コード例 #20
0
void CScript_HostPseudoModel::Script_HostPseudoModel_ExportData(
    CFXJSE_Arguments* pArguments) {
    int32_t iLength = pArguments->GetLength();
    if (iLength < 0 || iLength > 2) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"exportData");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    IXFA_Doc* hDoc = pNotify->GetHDOC();
    CFX_WideString wsFilePath;
    FX_BOOL bXDP = TRUE;
    if (iLength >= 1) {
        CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
        wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
    }
    if (iLength >= 2) {
        bXDP = pArguments->GetInt32(1) == 0 ? FALSE : TRUE;
    }
    pNotify->GetDocProvider()->ExportData(hDoc, wsFilePath, bXDP);
}
コード例 #21
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_PageContent(
    CFXJSE_Arguments* pArguments) {
  int32_t iLength = pArguments->GetLength();
  if (iLength < 1 || iLength > 3) {
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"pageContent");
    return;
  }
  int32_t iIndex = 0;
  CFX_WideString wsType;
  FX_BOOL bOnPageArea = FALSE;
  if (iLength >= 1) {
    iIndex = pArguments->GetInt32(0);
  }
  if (iLength >= 2) {
    CFX_ByteString bsType = pArguments->GetUTF8String(1);
    wsType = CFX_WideString::FromUTF8(bsType, bsType.GetLength());
  }
  if (iLength >= 3) {
    bOnPageArea = pArguments->GetInt32(2) == 0 ? FALSE : TRUE;
  }
  IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
  if (!pNotify) {
    return;
  }
  IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
  if (!pDocLayout) {
    return;
  }
  CXFA_NodeArray retArray;
  Script_LayoutPseudoModel_GetObjArray(pDocLayout, iIndex, wsType, bOnPageArea,
                                       retArray);
  CXFA_ArrayNodeList* pArrayNodeList = new CXFA_ArrayNodeList(m_pDocument);
  pArrayNodeList->SetArrayNodeList(retArray);
  FXJSE_Value_SetObject(pArguments->GetReturnValue(),
                        (CXFA_Object*)pArrayNodeList,
                        m_pDocument->GetScriptContext()->GetJseNormalClass());
}
コード例 #22
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_PageImp(
    CFXJSE_Arguments* pArguments,
    FX_BOOL bAbsPage) {
  int32_t iLength = pArguments->GetLength();
  if (iLength != 1) {
    const FX_WCHAR* methodName;
    if (bAbsPage) {
      methodName = L"absPage";
    } else {
      methodName = L"page";
    }
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, methodName);
    return;
  }
  CXFA_Node* pNode = NULL;
  if (iLength >= 1) {
    pNode = (CXFA_Node*)pArguments->GetObject(0);
  }
  int32_t iPage = 0;
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (!pNode && hValue) {
    FXJSE_Value_SetInteger(hValue, iPage);
  }
  IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
  if (!pDocLayout) {
    return;
  }
  CXFA_LayoutItem* pLayoutItem = pDocLayout->GetLayoutItem(pNode);
  if (!pLayoutItem) {
    FXJSE_Value_SetInteger(hValue, -1);
    return;
  }
  iPage = pLayoutItem->GetFirst()->GetPage()->GetPageIndex();
  if (hValue) {
    FXJSE_Value_SetInteger(hValue, bAbsPage ? iPage : iPage + 1);
  }
}
コード例 #23
0
void CScript_HostPseudoModel::Script_HostPseudoModel_Print(
    CFXJSE_Arguments* pArguments) {
    if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
        return;
    }
    int32_t iLength = pArguments->GetLength();
    if (iLength != 8) {
        ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"print");
        return;
    }
    IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
    if (!pNotify) {
        return;
    }
    IXFA_Doc* hDoc = pNotify->GetHDOC();
    FX_DWORD dwOptions = 0;
    FX_BOOL bShowDialog = TRUE;
    if (iLength >= 1) {
        bShowDialog = pArguments->GetInt32(0) == 0 ? FALSE : TRUE;
    }
    if (bShowDialog) {
        dwOptions |= XFA_PRINTOPT_ShowDialog;
    }
    int32_t nStartPage = 0;
    if (iLength >= 2) {
        nStartPage = pArguments->GetInt32(1);
    }
    int32_t nEndPage = 0;
    if (iLength >= 3) {
        nEndPage = pArguments->GetInt32(2);
    }
    FX_BOOL bCanCancel = TRUE;
    if (iLength >= 4) {
        bCanCancel = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
    }
    if (bCanCancel) {
        dwOptions |= XFA_PRINTOPT_CanCancel;
    }
    FX_BOOL bShrinkPage = TRUE;
    if (iLength >= 5) {
        bShrinkPage = pArguments->GetInt32(4) == 0 ? FALSE : TRUE;
    }
    if (bShrinkPage) {
        dwOptions |= XFA_PRINTOPT_ShrinkPage;
    }
    FX_BOOL bAsImage = TRUE;
    if (iLength >= 6) {
        bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
    }
    if (bAsImage) {
        dwOptions |= XFA_PRINTOPT_AsImage;
    }
    FX_BOOL bReverseOrder = TRUE;
    if (iLength >= 7) {
        bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
    }
    bReverseOrder = pArguments->GetInt32(6) == 0 ? FALSE : TRUE;
    if (bReverseOrder) {
        dwOptions |= XFA_PRINTOPT_ReverseOrder;
    }
    FX_BOOL bPrintAnnot = TRUE;
    if (iLength >= 8) {
        bPrintAnnot = pArguments->GetInt32(7) == 0 ? FALSE : TRUE;
    }
    if (bPrintAnnot) {
        dwOptions |= XFA_PRINTOPT_PrintAnnot;
    }
    pNotify->GetDocProvider()->Print(hDoc, nStartPage, nEndPage, dwOptions);
}
コード例 #24
0
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_HWXY(
    CFXJSE_Arguments* pArguments,
    XFA_LAYOUTMODEL_HWXY layoutModel) {
  int32_t iLength = pArguments->GetLength();
  if (iLength < 1 || iLength > 3) {
    const FX_WCHAR* methodName = NULL;
    switch (layoutModel) {
      case XFA_LAYOUTMODEL_H:
        methodName = L"h";
        break;
      case XFA_LAYOUTMODEL_W:
        methodName = L"w";
        break;
      case XFA_LAYOUTMODEL_X:
        methodName = L"x";
        break;
      case XFA_LAYOUTMODEL_Y:
        methodName = L"y";
        break;
    }
    ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, methodName);
    return;
  }
  CXFA_Node* pNode = NULL;
  CFX_WideString wsUnit = FX_WSTRC(L"pt");
  int32_t iIndex = 0;
  if (iLength >= 1) {
    pNode = (CXFA_Node*)pArguments->GetObject(0);
  }
  if (iLength >= 2) {
    CFX_ByteString bsUnit = pArguments->GetUTF8String(1);
    if (!bsUnit.IsEmpty()) {
      wsUnit = CFX_WideString::FromUTF8(bsUnit, bsUnit.GetLength());
    }
  }
  if (iLength >= 3) {
    iIndex = pArguments->GetInt32(2);
  }
  if (!pNode) {
    return;
  }
  IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
  if (!pDocLayout) {
    return;
  }
  CFX_RectF rtRect;
  CXFA_Measurement measure;
  CXFA_LayoutItem* pLayoutItem = pDocLayout->GetLayoutItem(pNode);
  if (!pLayoutItem) {
    return;
  }
  while (iIndex > 0 && pLayoutItem) {
    pLayoutItem = pLayoutItem->GetNext();
    iIndex--;
  }
  FXJSE_HVALUE hValue = pArguments->GetReturnValue();
  if (!pLayoutItem) {
    FXJSE_Value_SetFloat(hValue, 0);
    return;
  }
  pLayoutItem->GetRect(rtRect, TRUE);
  switch (layoutModel) {
    case XFA_LAYOUTMODEL_H:
      measure.Set(rtRect.height, XFA_UNIT_Pt);
      break;
    case XFA_LAYOUTMODEL_W:
      measure.Set(rtRect.width, XFA_UNIT_Pt);
      break;
    case XFA_LAYOUTMODEL_X:
      measure.Set(rtRect.left, XFA_UNIT_Pt);
      break;
    case XFA_LAYOUTMODEL_Y:
      measure.Set(rtRect.top, XFA_UNIT_Pt);
      break;
  }
  XFA_UNIT unit = measure.GetUnit(wsUnit);
  FX_FLOAT fValue = measure.ToUnit(unit);
  fValue = FXSYS_round(fValue * 1000) / 1000.0f;
  if (hValue) {
    FXJSE_Value_SetFloat(hValue, fValue);
  }
}