Ejemplo n.º 1
0
void GUI_DispStringInRectMax(const char GUI_UNI_PTR *s, GUI_RECT* pRect, int TextAlign, int MaxLen) {
  GUI_RECT Rect_Old, r;
  if (s && pRect) {
    GUI_LOCK();
    Rect_Old = GUI_Context.ClipRect[GUI_Context.SelLayer];
    GUI__IntersectRects(&r, pRect, &Rect_Old);
    LCD_SetClipRectEx(&r);
    GUI__DispStringInRect(s, pRect, TextAlign, MaxLen);
    LCD_SetClipRectEx(&Rect_Old);
    GUI_UNLOCK();
  }
}
Ejemplo n.º 2
0
void GUI_DispStringInRectMax(const char GUI_UNI_PTR *s, GUI_RECT* pRect, int TextAlign, int MaxLen) {
  if (s) {
    const GUI_RECT *pOldClipRect = NULL;
    GUI_RECT r;
    GUI_LOCK();
    if (pRect) {
    pOldClipRect = WM_SetUserClipRect(pRect);
      if (pOldClipRect) {
        GUI__IntersectRects(&r, pRect, pOldClipRect);
        WM_SetUserClipRect(&r);
      }
    }
    GUI__DispStringInRect(s, pRect, TextAlign, MaxLen);
    WM_SetUserClipRect(pOldClipRect);
    GUI_UNLOCK();
  }
}
/*********************************************************************
*
*       GUI_DispStringInRectEx
*/
void GUI_DispStringInRectEx(const char GUI_UNI_PTR *s, GUI_RECT* pRect, int TextAlign, int MaxLen, const GUI_ROTATION * pLCD_Api) {
  const GUI_ROTATION * pLCD_ApiOld;
  if (pLCD_Api == GUI_ROTATE_0) {
    /* Do nothing else but calling GUI_DispStringInRectMax if pLCD_Api == GUI_ROTATE_0 */
    GUI_DispStringInRectMax(s, pRect, TextAlign, MaxLen);
  } else {
    #if (!GUI_WINSUPPORT)
      GUI_RECT Rect_Old;
    #else
      const GUI_RECT * pOldClipRect = NULL;
    #endif
    GUI_RECT rClip, rText = {0};
    GUI_LOCK();
    /* Set the clip rectangle */
    if (pRect) {
      rText = *pRect;
      GUI_RectDispString = rText;
      #if (GUI_WINSUPPORT)
        pOldClipRect = WM_SetUserClipRect(pRect);
        if (pOldClipRect) {
          GUI__IntersectRects(&rClip, pRect, pOldClipRect);
          WM_SetUserClipRect(&rClip);
        }
      #else
        Rect_Old = GUI_Context.ClipRect;
        GUI__IntersectRects(&rClip, pRect, &Rect_Old);
        LCD_SetClipRectEx(&rClip);
      #endif
    }
    pLCD_ApiOld = _SetRotation(pLCD_Api);                /* Set the new function pointer for rotating text */
    pLCD_Api->pfRect2TextRect(&rText);                   /* Calculate the text rectangle */
    GUI__DispStringInRect(s, &rText, TextAlign, MaxLen); /* Display the string */
    /* Restore old clipping rectangle */
    #if (GUI_WINSUPPORT)
      WM_SetUserClipRect(pOldClipRect);
    #else
      LCD_SetClipRectEx(&Rect_Old);
    #endif
    _SetRotation(pLCD_ApiOld);
    GUI_UNLOCK();
  }
}