COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 02-06-2021, 05:37 AM   #1
stw
Human being with feelings
 
stw's Avatar
 
Join Date: Apr 2012
Posts: 279
Default Center alligned text on mac

I just ran into a text allignment prob on mac.
Multi line text was not center alligned correctly for each line. Allignment was based on the widest text line and used for all other lines of an ITextControl. This is not the behaviour one would expect (and ugly as well). Win builds allign correctly.

I made a change at swell-gdi.mm which corrects that. Maybe it's useful for someone else as well.

Code:
int DrawText(HDC ctx, const char *buf, int buflen, RECT *r, int align)

[...]

if (lines)
    {
      int n=CFArrayGetCount(lines);
      int x;
      for(x=0;x<n;x++)
      {
        CTLineRef l = (CTLineRef)CFArrayGetValueAtIndex(lines,x);
        if (l)
        {
          CGFloat asc=0,desc=0,lead=0;
          float lw=CTLineGetTypographicBounds(l,&asc,&desc,&lead);
            
          ///////////////////////////////////////////////////////////////
          xo = r->left + (r->right-r->left)/2 - lw/2;    // add this line
          ///////////////////////////////////////////////////////////////

          if (bgc)
          {
            CGContextSetFillColorWithColor(ct->ctx, bgc);
            CGContextFillRect(ct->ctx, CGRectMake(xo,yo,lw,asc+desc+lead));
          }
          CGContextSetTextPosition(ct->ctx, xo, yo + asc);
          CTLineDraw(l,ct->ctx);
          
          yo += floor(asc+desc+lead+0.5);          
        }
      }
    }
stw is offline   Reply With Quote
Old 02-10-2021, 01:55 PM   #2
Nonlinear
Human being with feelings
 
Join Date: Apr 2018
Posts: 396
Default

Thank you for posting this fix.
Nonlinear is offline   Reply With Quote
Old 03-10-2021, 04:13 PM   #3
bozmillar
Human being with feelings
 
bozmillar's Avatar
 
Join Date: Sep 2009
Posts: 623
Default

Ah, thanks. That has been a minor annoyance for years. Small enough that I never looked into it, but big enough that I'm glad there's a fix.
__________________
http://www.bozdigitallabs.com
bozmillar is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 04:23 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.