4

I want just know how Adobe makes Photoshop cross-platform? I know Photoshop is written completely in C++, but what about the GUI? Does Adobe use GUI toolkits?

Rob Hruska
  • 118,520
  • 32
  • 167
  • 192
Freeseif
  • 275
  • 1
  • 3
  • 14
  • I'm not entirely sure to be honest, but it if helps, it's worth looking up [Nokia's Qt framework](http://qt.nokia.com/products/). I've seen it used in several cross platform graphics applications, like [Nuke](http://www.thefoundry.co.uk/products/nuke/). (I wouldn't say Photoshop uses Qt, Adobe might roll they're own ) – George Profenza May 03 '12 at 18:53

2 Answers2

4

For any natively compiled, cross-platform project, the solution is typically to have small portions of the code called "wrappers" written exclusively for specific platforms. These wrappers do all the talking directly to the platform.

This makes an app like Photoshop multi-platform, but it wouldn't necessarily build on a platform that Adobe hasn't written wrappers for.

Drew Dormann
  • 59,987
  • 13
  • 123
  • 180
  • yes, your are right, i understand now, and i found here an example of "Wrapper function" http://en.wikipedia.org/wiki/Wrapper_function but i think Wrapper function is a very long and hard solution for making software cross-platform ! Thank You Shmoopty =) – Freeseif Oct 25 '10 at 00:10
2

Writing cross platform software is tedious but here are the simple rules.

Generally you need to work with an abstraction of the underlying OS / environment, so that your code depends on this abstraction instead of the OS itself. This is called a bridge pattern. It is important to understand the more features you add to the bridge between your program and the OS the more difficult it will be to port the software. In the case of Adobe they use a relatively small part of the OS (tiny bridge) as they have their own UI and text processing so they just need to capture mouse/keyboard input and be able to draw in a window.

  • That's why it's super important to isolate model and view logic. I'm sure a majority of their operating logic is built on their own internal C++ API and the endpoints from their black box of logic are tied into OS specific GUI classes. – Dean Kelly Jun 30 '14 at 17:22