MacPaint Evolution MacPaint 的演变

作者: 安迪·赫茨菲尔德 日期: 1983年6月 人物: 史蒂夫·乔布斯、比尔·阿特金森、罗德·帕金斯 主题: MacPaint、软件设计、QuickDraw、技术、Lisa 概要: 关于苹果第一代Macintosh的开发以及制造它的人的轶事: 比尔决定省略一个非常令人印象深刻的功能 , MacPaint 的演变 MacPaint Evolution

While working on a special graphics program called LisaGraf, Bill Atkinson also sometimes worked on a simple drawing program for the Lisa called SketchPad. This drawing program allowed people to use a mouse to draw pictures with different brushes and patterns. Bill used SketchPad to quickly test out and show new features he was adding to LisaGraf.

在开发名为 LisaGraf 的特殊图形程序时,比尔·阿特金森有时还会为 Lisa 开发一个名为 SketchPad 的简单绘图程序。这个绘图程序允许人们使用鼠标用不同的画笔和图案来绘制图画。 Bill 使用 SketchPad 快速测试并展示他添加到 LisaGraf 的新功能。

In 1983, after the Lisa computer was announced, Bill started working on a special program for the Macintosh instead of finishing work on the Lisa. Steve Jobs wanted Bill to make a program that would let users draw in a specific and organized way, like another program called LisaDraw. But Bill thought this was too complicated. He wanted to create something that was easy, beautiful, and enjoyable to use.

1983 年,Lisa 计算机发布后,Bill 开始为 Macintosh 开发一个特殊程序,而不是完成 Lisa 的工作。史蒂夫·乔布斯希望比尔制作一个程序,让用户以特定且有组织的方式进行绘图,就像另一个名为 LisaDraw 的程序一样。但比尔认为这太复杂了。他想要创造一些简单、美观且使用起来令人愉快的东西。

Bill started by updating his old drawing program, SketchPad, so it could work on a Mac. He called it MacSketch. SketchPad used menus to choose different patterns and drawing styles. Bill changed this to have two bars at the bottom of the screen where he could choose his options. He also added a big bar on the left with many different drawing tools. Over time, more tools would be added, but the basic way the program worked was established from the very beginning.

Bill 首先更新了他的旧绘图程序 SketchPad,以便它可以在 Mac 上运行。他称之为 MacSketch。 SketchPad 使用菜单来选择不同的图案和绘画风格。比尔对此进行了更改,在屏幕底部有两个栏,他可以在其中选择自己的选项。他还在左侧添加了一个大栏,其中包含许多不同的绘图工具。随着时间的推移,将会添加更多工具,但该程序的基本工作方式从一开始就已确定。

Bill worked on an important improvement. A problem was that when you moved something on the screen, it would disappear briefly before appearing in its new position. This caused a flickering effect. Bill fixed this by storing everything to be drawn on the screen in a special memory location. Then, everything was displayed on the screen all at once, without any intermediate steps. This way, you didn’t see any flickering.

比尔致力于一项重要的改进。一个问题是,当您在屏幕上移动某些内容时,它会短暂消失,然后出现在新位置。这导致了闪烁效果。比尔通过将要在屏幕上绘制的所有内容存储在特殊的内存位置来解决此问题。然后,一切就全部显示在屏幕上,没有任何中间步骤。这样,您就看不到任何闪烁。

Even though the Macintosh computer had limited memory, it used two special areas in its memory called “buffers”. These buffers were the same size as the document window on the screen. One buffer showed the current state of the document, and the other showed the document before the last change was made. This made it very easy to add an “undo” feature, where you could simply copy the old version of the document into the new one. It also helped with drawing things on the screen, because it was easy to get the original version of the document from the second buffer while you were editing it.

尽管麦金塔计算机的内存有限,但它在内存中使用了两个称为“缓冲区”的特殊区域。这些缓冲区的大小与屏幕上的文档窗口的大小相同。一个缓冲区显示文档的当前状态,另一个缓冲区显示最后一次更改之前的文档。这使得添加“撤消”功能变得非常容易,您可以简单地将文档的旧版本复制到新版本中。它还有助于在屏幕上绘制内容,因为在编辑文档时可以轻松地从第二个缓冲区获取文档的原始版本。

After making the basic updates work well, Bill started adding more tools to the program. He added a tool that lets users select a part of the document to work on. The tool drew a square around the selected area, which worked okay on plain backgrounds, but was hard to see on complex images like photos. Bill knew he had to find a better way to show the selection.

在使基本更新顺利运行后,比尔开始向该程序添加更多工具。他添加了一个工具,可以让用户选择要处理的文档的一部分。该工具在选定区域周围绘制了一个正方形,这在普通背景上效果很好,但在照片等复杂图像上很难看清。比尔知道他必须找到更好的方式来展示选择。

One evening, he went to a restaurant in Los Gatos that sells beer and burgers. The restaurant is old and has been around for a long time. The tables are made of wood and many people have carved their initials into them over the years. He ordered a beer and looked around the bar. He noticed an old sign that said “Hamm’s beer”. The sign had a cool animated waterfall on it. The waterfall seemed to be moving and the water was flowing down into a lake. Bill thought about how the animation was done. He figured out that it was because of a special layer under the sign that changed what part of the image you could see. It was like a magic trick!

一天晚上,他去了洛斯加托斯一家卖啤酒和汉堡的餐馆。这家餐厅很老了,已经开了很长时间了。这些桌子是木头做的,多年来许多人都在上面刻上了自己名字的首字母。
他点了一杯啤酒,环视了一下酒吧。他注意到一个旧标牌上写着“哈姆啤酒”。标牌上有一个很酷的动画瀑布。瀑布似乎在流动,水流流进湖里。
比尔思考着动画是如何完成的。他发现这是因为标志下的特殊层改变了你可以看到的图像部分。这就像一个魔术!

Bill suddenly had an idea to solve a problem with computer graphics. He realized that by using animation, he could make a border that would always be easy to see, even if the background was complicated. He rushed home and created the animation by showing a series of patterns in a loop, similar to a beer sign. It looked good, but he didn’t know what to call it. A few days later, he showed it to Rod Perkins from the Lisa team. Rod said it looked like “marching ants,” which Bill liked, so he started calling it that.

比尔突然有了一个想法,用计算机图形学来解决问题。他意识到,通过使用动画,他可以制作一个始终很容易看到的边框,即使背景很复杂。他冲回家并通过循环显示一系列图案(类似于啤酒标志)来创建动画。看起来不错,但他不知道该怎么称呼它。几天后,他向 Lisa 团队的 Rod Perkins 展示了它。罗德说它看起来像“行进的蚂蚁”,比尔喜欢这一点,所以他开始这样称呼它。

In 1983, Bill changed the name of the program from MacSketch to MacPaint. He started to make progress and added new features to MacPaint every day. One big improvement was “Fat Bits”. This feature made a small part of the document look 8 times bigger, making it easy to change individual tiny colors. This was made possible by taking the extra work that was being done “behind the scenes” and using it to make the feature work smoothly.

1983 年,Bill 将程序的名称从 MacSketch 更改为 MacPaint。他开始不断进步,每天都为 MacPaint 添加新功能。一项重大改进是“Fat Bits”。此功能使文档的一小部分看起来放大了 8 倍,从而可以轻松更改个别微小的颜色。这是通过“在幕后”完成的额外工作并使用它来使该功能顺利运行而实现的。

Bill made a big improvement to MacPaint when he created the “paint bucket” tool. This tool lets you touch one pixel with your mouse and fill the whole area with the same color. This was tricky because MacPaint was very limited in how much memory it had. Bill had to try a few different ways to make it work before he found one that worked fast and didn’t use too much memory. Eventually, he made it work and it became part of MacPaint and later QuickDraw, which was stored in a special 128K block of memory.

Bill 在创建“油漆桶”工具时对 MacPaint 进行了重大改进。该工具可让您用鼠标触摸一个像素并用相同的颜色填充整个区域。这很棘手,因为 MacPaint 的内存非常有限。
比尔必须尝试几种不同的方法才能使其发挥作用,然后才找到一种运行速度快且不占用太多内存的方法。最终,他让它发挥作用,并成为 MacPaint 和后来的 QuickDraw 的一部分,存储在一个特殊的 128K 内存块中。

Bill created a new tool called the “lasso” that helps you pick an irregularly shaped area in an image. Sometimes, it’s hard to be precise with a mouse, so this tool lets you roughly draw around the area you want, and then it fixes the edges to get a perfect shape. The lasso tool became less useful after Bill created a new feature called “paint bucket”, which did a similar job of fixing the edges and making it easier to work with.

比尔创建了一种名为“套索”的新工具,可以帮助您在图像中选取不规则形状的区域。有时,用鼠标很难精确,所以这个工具可以让你粗略地绘制你想要的区域,然后修复边缘以获得完美的形状。在比尔创建了一个名为“油漆桶”的新功能后,套索工具变得不再有用,该功能完成了类似的固定边缘并使其更易于使用的工作。

The lasso tool lets you select any shape or size area of pixels. To do this, it uses three special memory areas:

  • One area is as big as the window and stores information about which pixels are selected.
  • Two other memory areas are always used, but the third area (the mask buffer) is only used when you are selecting an area and is then released to be used for something else. These memory areas help us perform fast graphics operations on large, irregular areas, like moving an image around on the screen or making the selection area pulse.
套索工具允许您选择任何形状或大小的像素区域。为此,它使用三个特殊的内存区域:
* 一个区域与窗口一样大,并存储有关选择哪些像素的信息。
* 始终使用另外两个内存区域,但第三个区域(掩码缓冲区)仅在您选择区域时使用,然后释放以用于其他用途。
这些内存区域帮助我们在大的不规则区域上执行快速图形操作,例如在屏幕上移动图像或使选择区域产生脉冲。

MacPaint was good at writing words, allowing the user to put words anywhere they wanted, in different fonts, sizes, and styles. But once the words were written, they turned into tiny dots on the screen, and there was no way to go back and change them as words. In June 1983, Bill thought he could find a way to make it better.

MacPaint 擅长书写文字,允许用户以不同的字体、大小和样式将文字放在他们想要的任何地方。但一旦写下文字,它们就在屏幕上变成了微小的点,并且无法返回并将它们更改为文字。 1983 年 6 月,比尔认为他可以找到一种方法让它变得更好。

Bill wanted to try to change pixels back into text characters when selected using a special tool. He wrote a lot of complicated code, almost as much as for another important feature. First, he created small programs that helped him find the boundary of each character in the selected text. Then, he checked the pixels within each boundary against a list of pre-known fonts. If it matched, he did a more detailed check to make sure it was the correct character.

比尔想尝试在使用特殊工具选择时将像素更改回文本字符。他编写了大量复杂的代码,几乎与另一个重要功能的代码一样多。首先,他创建了小程序来帮助他找到所选文本中每个字符的边界。然后,他根据预先已知的字体列表检查每个边界内的像素。如果匹配,他会进行更详细的检查以确保这是正确的字符。

Bill was able to make his computer program work well for recognizing characters. This made it seem like magic to people who used an old program called MacPaint. Before, they had to start over if they made a mistake. Now, they could fix mistakes and continue working. It wasn’t perfect and sometimes had trouble recognizing a character if just one small thing was wrong. But it was still very helpful. Everyone liked this new feature and praised Bill for doing a great job.

比尔能够让他的计算机程序很好地识别字符。对于使用 MacPaint 旧程序的人来说,这似乎很神奇。以前,如果他们犯了错误,就必须重新开始。现在,他们可以纠正错误并继续工作。它并不完美,有时如果只有一点小问题,就很难识别角色。但这仍然很有帮助。每个人都喜欢这个新功能,并称赞比尔做得很好。

I was surprised when Bill told me he decided to take away the feature that lets you recognize text in MacPaint. He was worried that if people used it, they would start thinking of MacPaint as a writing program instead of a drawing program. He thought this was a good choice, although I didn’t agree at the time. What I found amazing was how Bill was able to ignore all the work he put into creating that feature and just get rid of it. I think I would have found it hard to do the same.

当 Bill 告诉我他决定取消 MacPaint 中识别文本的功能时,我感到很惊讶。他担心如果人们使用它,他们会开始将 MacPaint 视为一个书写程序而不是绘图程序。他认为这是一个不错的选择,虽然我当时不同意。我发现令人惊奇的是比尔如何能够忽略他为创建该功能而投入的所有工作并摆脱它。我想我会发现很难做到同样的事情。

MacPaint was almost done by October 1983, before we finished our other important programs. The final step in finishing MacPaint was fixing problems with running out of memory. This was a challenge because it used a lot of memory, even for a computer with 128 kilobytes of memory. Sometimes, we only had 100 bytes of extra memory left in MacPaint. Many of the problems we found with MacPaint were actually problems with the computer’s system, which became clear when we used all the available memory.

到 1983 年 10 月,在我们完成其他重要程序之前,MacPaint 就几乎完成了。完成 MacPaint 的最后一步是修复内存不足的问题。这是一个挑战,因为它使用了大量内存,即使对于具有 128 KB 内存的计算机也是如此。有时,MacPaint 中只剩下 100 字节的额外内存。我们在 MacPaint 中发现的许多问题实际上都是计算机系统的问题,当我们使用所有可用内存时,这一点就变得很清楚。

MacPaint was a small program compared to modern standards. This was because it had to fit into a very small amount of memory - about one-eighth of a megabyte - that was available on early Mac computers. The finished MacPaint program was made up of 5,804 lines of code written in Pascal and 2,738 lines of assembly language. These lines of code were combined to create a program that was only about .05 megabytes in size.

与现代标准相比,MacPaint 是一个小程序。这是因为它必须适应早期 Mac 计算机上可用的非常少量的内存(大约八分之一兆字节)。完成的 MacPaint 程序由 5,804 行 Pascal 代码和 2,738 行汇编语言组成。这些代码行组合在一起创建了一个大小仅为 0.05 MB 左右的程序。

2xl

目录