Exemplo n.º 1
0
static void RIPCALL SysFreeFnCallback(void * ptr)
{
#ifdef PMS_OIL_MERGE_DISABLE_MEM
  OIL_free(OILMemoryPoolJob, ptr);
#else
  free(ptr);
#endif
}
void DeletePMSPage(PMS_TyPage *ptPMSPage)
{
  OIL_ProbeLog(SW_TRACE_OIL_DELETEPMSPAGE, SW_TRACETYPE_ENTER, (intptr_t)0);
  /* remove any raster data created in PMS for j 2 and j 3 mode*/
  if (g_ConfigurableFeatures.eBandDeliveryType == OIL_PUSH_BAND ||
      g_ConfigurableFeatures.eBandDeliveryType == OIL_PUSH_BAND_DIRECT_SINGLE)
  {
      PMS_DeletePrintedPage (ptPMSPage);
  }
  OIL_free(OILMemoryPoolJob, ptPMSPage); /*free the PMS page memory*/
  ptPMSPage = NULL;
  OIL_ProbeLog(SW_TRACE_OIL_DELETEPMSPAGE, SW_TRACETYPE_EXIT, (intptr_t)0);
}
Exemplo n.º 3
0
/**
 * \brief OIL system exit function.
 *
 * This function is called to exit the OIL and shut down the RIP, freeing
 * all resources claimed by the RIP.   The function first checks to ensure
 * that the OIL is not in the \c OIL_Sys_JobActive or \c OIL_Sys_Uninitialised
 * If the current system state is \c OIL_Sys_Active and the requested state is
 * \c OIL_Sys_Inactive, this function:
 * \arg unregisters streams;
 * \arg attempts to stop the RIP, and reports an error message if it is unsuccessful, and
 * \arg sets places the system into the \c OIL_Sys_Inactive state.
 * \param[in]   eNextState  The system state that is required by the end of the call; expected
 *              to be \c OIL_Sys_Inactive.
 * \return      Returns TRUE if the OIL is successfully exited and placed in the
 *              requested state, FALSE otherwise.
 */
int SysExit(OIL_eTySystemState eNextState)
{
  HQASSERT(OIL_Sys_JobActive != g_SystemState.eCurrentState,
           "sys_exit entered in state: OIL_Sys_JobActive");
  HQASSERT(OIL_Sys_Uninitialised != g_SystemState.eCurrentState,
           "sys_exit entered in state: OIL_Sys_Uninitialised");

  GG_SHOW(GG_SHOW_OIL, "SysExit:\n");
  if ((g_SystemState.eCurrentState == OIL_Sys_Active) && (eNextState == OIL_Sys_Inactive))
  {
    int val;

    libjpegturbo_deregister();
    libjpeg_deregister();
    Stream_Unregister();
    val=SwLeStop();
    HQASSERT(val==0, "sys_exit : RIP is not shutting down successfully");
    oil_progress_finish();
    oil_events_finish();

    SwLeSDKEnd(val);

    /* shutdown the RIP, free systems resources */
    SwLeShutdown(); /* does nothing in ebd, but called for consistency with start up*/
#ifdef PMS_OIL_MERGE_DISABLE_MEM
    OIL_free(OILMemoryPoolSys, g_SystemState.pRIPMemory);
#else
    mfree(g_SystemState.pRIPMemory);
#endif

    g_SystemState.eCurrentState = eNextState;
  }

  /* return TRUE if now in requested state */
  return (g_SystemState.eCurrentState == eNextState);
}
/**
 * \brief Get the media source and media size from the PMS.
 *
 * This routine copies the media attributes being requested by the job into a PMS_TyMedia 
 * structure and passes it to the PMS.  This gives the PMS the opportunity to 
 * compare the requested media attributes with those that are actually available, and
 * to update the job attributes accordingly.
 * \param[in, out]  stEBDDeviceParams   A pointer to an OIL_TyEBDDeviceParameters structure holding the
 *                                      media details from the current job. It will be updated if the PMS
 *                                      changes the media size or input tray.
 */
void GetMediaFromPMS(OIL_TyEBDDeviceParameters *stEBDDeviceParams)
{
  PMS_TyTrayInfo *ptTrayInfo;
  PMS_TyPaperInfo *pPaperInfo;
#ifdef PMS_OIL_MERGE_DISABLE
  PMS_TyJob *pCurrentJob;
  PMS_TyMedia *pstPMSMedia;
#else
  OIL_TyMedia *pstPMSMedia;
#endif
  int rotate;
  float ClipLeft, ClipTop, ClipWidth, ClipHeight;

  OIL_ProbeLog(SW_TRACE_OIL_GETMEDIAFROMPMS, SW_TRACETYPE_ENTER, (intptr_t)0);

#ifdef PMS_OIL_MERGE_DISABLE
  pstPMSMedia = OIL_malloc(OILMemoryPoolJob, OIL_MemNonBlock, sizeof(PMS_TyMedia));
  HQASSERTV(pstPMSMedia!=NULL,
            ("GetMediaFromPMS: Failed to allocate %lu bytes", (unsigned long) sizeof(PMS_TyMedia)));

  /* Clear the structure to avoid confusion when debugging */
  memset(pstPMSMedia, 0x00, sizeof(PMS_TyMedia));
#else
  pstPMSMedia = OIL_malloc(OILMemoryPoolJob, OIL_MemNonBlock, sizeof(OIL_TyMedia));
  HQASSERTV(pstPMSMedia!=NULL,
	        ("GetMediaFromPMS: Failed to allocate %lu bytes", (unsigned long) sizeof(OIL_TyMedia)));

  /* Clear the structure to avoid confusion when debugging */
  memset(pstPMSMedia, 0x00, sizeof(OIL_TyMedia));
#endif
  /* The parameters in stEBDDeviceParams configured in the (%embedded%) device. 
     see \HqnEbd_SensePageDevice in SW\procsets\HqnEmbedded.
     see ebd_devparams_array in src\oil_ebddev.c  */
  strcpy((char*)pstPMSMedia->szMediaType, (char*)stEBDDeviceParams->MediaTypeFromJob);
  strcpy((char*)pstPMSMedia->szMediaColor, (char*)stEBDDeviceParams->MediaColorFromJob);
  pstPMSMedia->uMediaWeight = stEBDDeviceParams->MediaWeightFromJob;
  pstPMSMedia->uInputTray = stEBDDeviceParams->MediaSourceFromJob;
  pstPMSMedia->dWidth = stEBDDeviceParams->PageWidthFromJob;
  pstPMSMedia->dHeight = stEBDDeviceParams->PageHeightFromJob;

  /* Access default job settings */
#ifdef PMS_OIL_MERGE_DISABLE
  PMS_GetJobSettings(&pCurrentJob);
  HQASSERT(pCurrentJob, "GetMediaFromPMS, pCurrentJob is NULL");
  pstPMSMedia->ePaperSize = pCurrentJob->tDefaultJobMedia.ePaperSize;
#else
  pstPMSMedia->ePaperSize = g_tJob.tCurrentJobMedia.ePaperSize;
#endif

  /* \todo Populate pstPMSMedia with other parameters that influence tray selection */

  /* call PMS function to allow PMS to select a tray/media. */
  if(PMS_MediaSelect(pstPMSMedia, &ptTrayInfo, &rotate)) {
    HQASSERT(ptTrayInfo,
             "GetMediaFromPMS, tray/media selected, but ptTrayInfo is NULL");

    if(PMS_GetPaperInfo(ptTrayInfo->ePaperSize, &pPaperInfo)) {
      HQASSERT(pPaperInfo, "GetMediaFromPMS, pPaperInfo is NULL");

      stEBDDeviceParams->PageWidthFromPMS = (float)pPaperInfo->dWidth;
      stEBDDeviceParams->PageHeightFromPMS = (float)pPaperInfo->dHeight;
      stEBDDeviceParams->PCL5PageSizeFromPMS = pPaperInfo->ePCL5size;
      stEBDDeviceParams->PCLXLPageSizeFromPMS = pPaperInfo->ePCLXLsize;

      ClipLeft = (float)(pPaperInfo->nLeftUnprintable * 0.000072);
      ClipTop = (float)(pPaperInfo->nTopUnprintable * 0.000072);
      ClipWidth = (float)(pPaperInfo->dWidth - ClipLeft - (pPaperInfo->nRightUnprintable * 0.000072));
      ClipHeight = (float)(pPaperInfo->dHeight - ClipTop - (pPaperInfo->nBottomUnprintable * 0.000072));

      if(rotate)
      {
        stEBDDeviceParams->MediaClipTopFromPMS = ClipLeft;
        stEBDDeviceParams->MediaClipLeftFromPMS = ClipTop;
        stEBDDeviceParams->MediaClipHeightFromPMS = ClipWidth;
        stEBDDeviceParams->MediaClipWidthFromPMS = ClipHeight;
      }
      else
      {
        stEBDDeviceParams->MediaClipLeftFromPMS = ClipLeft;
        stEBDDeviceParams->MediaClipTopFromPMS = ClipTop;
        stEBDDeviceParams->MediaClipWidthFromPMS = ClipWidth;
        stEBDDeviceParams->MediaClipHeightFromPMS = ClipHeight;
      }

      if(g_ConfigurableFeatures.ePrintableMode == OIL_RIPRemovesUnprintableArea)
      {
        /* calculate the logical page or get engine raster dimensions if defined */

        stEBDDeviceParams->ImagingBoxLeftFromPMS = ClipLeft;
        stEBDDeviceParams->ImagingBoxTopFromPMS = ClipTop;
        stEBDDeviceParams->ImagingBoxRightFromPMS = ClipLeft +
          PADDED_ALIGNEMENT(ClipWidth, g_pstCurrentJob->uRIPDepth, g_pstCurrentJob->uXResolution);
        stEBDDeviceParams->ImagingBoxBottomFromPMS = ClipTop + ClipHeight;
      }
      else
      {
        stEBDDeviceParams->ImagingBoxLeftFromPMS = 0;
        stEBDDeviceParams->ImagingBoxTopFromPMS = 0;
        stEBDDeviceParams->ImagingBoxRightFromPMS = 
          PADDED_ALIGNEMENT(pPaperInfo->dWidth, g_pstCurrentJob->uRIPDepth, g_pstCurrentJob->uXResolution);
        stEBDDeviceParams->ImagingBoxBottomFromPMS = (float)pPaperInfo->dHeight;
      }

      stEBDDeviceParams->MediaSourceFromPMS = ptTrayInfo->eMediaSource;

    } else {
      HQFAIL("GetMediaFromPMS, Call to PMS_GetPaperInfo failed.");
    }
  }

  OIL_free(OILMemoryPoolJob, pstPMSMedia);
  OIL_ProbeLog(SW_TRACE_OIL_GETMEDIAFROMPMS, SW_TRACETYPE_EXIT, (intptr_t)0);
}