A new (and fully working!) WYSIWYG editor component for iOS

Long long time ago, I wrote a series of articles about mobile hybrid development on the BlackBerry platform. The year later I wrote a component (and an article) that enables rich editing of text on Windows Phone devices by using hybrid technology.

The concept of hybrid application development, that is the merging of native and web development technologies, to get the best from both worlds, is an emerging reality nowadays. Today i’m happy to see the concept extended to the next level, and to the iOS platform. A team of rad developers, and co-workers, have developed a WYSIWYG editor component for iOS, that is based on hybrid technology and provides a true WYSIWYG editing experience for the end user.

It includes picture support, and it works on both iOS 8 and iOS 7. Below some pictures of the editor in action:

This new component is the text editor used in the WordPress iOS app to create and edit pages & posts. In short it’s a simple, straightforward way to visually edit HTML.

Blurry text on Dell Monitor + Mac OS X

I recently received a new MacBook Pro, and a new external monitor, from the company I work for. Unfortunately when I hooked the laptop up to the monitor (Dell U3014), via display port, I was surprised by the poor picture quality. Text was misshapen, and contrast completely off.

The reason is that the DisplayPort uses YCbCr colors instead of RGB to drive the display, which limits the range of colors and apparently causes the display to apply some undesired post processing.

Steps to fix the issue (I’ve found the solution in the link below):

    • Download the file patch-edid.rb from the forum here , or copy the following code in a new file:
      #!/usr/bin/ruby
      # Create display override file to force Mac OS X to use RGB mode for Display
      # see http://embdev.net/topic/284710
      #
      # Update 2013-06-24: added -w0 option to prevent truncated lines
      
      require 'base64'
      
      data=`ioreg -l -w0 -d0 -r -c AppleDisplay`
      
      edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
      vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
      productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i
      
      puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}"
      
      bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten
      
      puts "Setting color support to RGB 4:4:4 only"
      bytes[24] &= ~(0b11000)
      
      puts "Number of extension blocks: #{bytes[126]}"
      puts "removing extension block"
      bytes = bytes[0..127]
      bytes[126] = 0
      
      bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256
      puts
      puts "Recalculated checksum: 0x%x" % bytes[127]
      puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}"
      
      Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
      f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
      f.write '<?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">'
      f.write "
      <dict>
      <key>DisplayProductName</key>
      <string>Display with forced RGB mode (EDID override)</string>
      <key>IODisplayEDID</key>
      <data>#{Base64.encode64(bytes.pack('C*'))}</data>
      <key>DisplayVendorID</key>
      <integer>#{vendorid}</integer>
      <key>DisplayProductID</key>
      <integer>#{productid}</integer>
      </dict>
      </plist>"
      f.close
      
    • Connect the external monitor and close the lid (only the external monitor must be connected).
    • Run the command chmod +x patch-edid.rb
    • Run the script ./patch-edid.rb
    • A new folder will be created with the overrides for your monitor.
    • Move it into the /System/Library/Displays/Overrides folder.
    • Restart your computer.

Link to the forum thread with the solution: http://embdev.net/topic/284710