The PDF format defines 14 standard fonts which you can use without embedding those fonts:
Courier Bold Oblique
Bold + Italic
Helvetica Bold Oblique
Bold + Italic
Times Bold Italic
Bold + Italic
This is great, because those fonts are always available in DynaPDF independent of what the user has installed. Especially with Xojo applications on linux, where DynaPDF doesn't know where system font files are and you have to use them yourself. Same for Xojo Cloud.
If you need a license for MBS Plugin, please purchase them through an official channel. We sell them in on our website, through Share-It, in the Xojo web store and the K&K Verlag.
Sometimes it happens that someone tries to sell his license. This is legal and possible, but please check with us to be sure the license key is valid and upgradable. And the license key should be named after the seller, so you know we issued it for him. Actually the license agreement always states that you need to have written authorization to transfer it.
But so far some people trying to sell a MBS license are not honest. They got the key somehow, prefer to get cash and the license key of course does not match their name. Please don't buy such a license key.
Having an illegal license does not help you. If this is detected, you have to buy a new license regularly including updates for the past to get back on the right track. Else the lawyers would force you into destroying all your software using the illegal license. This can include that all your customers have to stop using your software, get their money back and of course sue you for compensation.
So please if you got a license key second hand or plan to get one, please contact us to make sure the license key is legal.
How do we know you use an illegal license key?
Well, you may want to come to use and buy an upgrade. Or a good friend of you wants to put you in trouble and reveals your dirty secret. Third, we download a lot of software and scan them for license keys.
Finally as a developer you should yourself know that people need to pay their license to you for you to make a living. So please apply same rules to the tools you use and pay for them.
Just 100 days left until we all meet for Geoff's keynote. Already over 60 people signed up for the conference, so it may sell out like last year.
The good news on the hotel is that plenty of rooms are still available. The bad news is that you have to call and ask for the rate for the conference. It's $169 per room and the website doesn't find it. Also there seem to be no suites available for discounted rates, just the regular ones. Anyway, as we can cancel room up to 2 days before conference, you should make your reservation early and later modify or cancel it.
XDC is the best place for Xojo users to learn from the experts, network with other Xojo users from around the world and meet the Xojo engineers. We will have sessions for everyone wanting to get the most out of their tool - from topics for those who are just getting their feet wet, to sessions for the most advanced Xojo developer.
Do you see all 56?
Well, in our plugins we have a function to Encode Text to HTML and it didn't work for those smileys. The reason is that those are outside the normal 16bit unicode range. They need 2 characters in UTF16. Most functions in our plugins don't look for such things. And normally it doesn't matter as we pass through texts. But for encoding to HTML we need to handle UTF32 well. So plugin needs to decode 16bit character pairs to make sure they are encoded correctly.
So after a couple of hours work on our plugin's text handling you can now enjoy plugins doing it right!
Just a quick note to everyone interested in DynaPDF Lite/Pro license.
If you get the Omegabundle, you receive a DynaPDF Starter license. You can upgrade that license to Lite/Pro for a discounted price.
Interested, please email us.
We'll remind everyone later when the bundle offer ends and all licenses are delivered on their upgrade paths available.
PS: Bundle extended through 9th March. This is the final end date!
In the last days we saw some new things in Feedback which are scheduled. We are happy that the Xojo application retina support is now scheduled. I'm also happy that auto and text functions for the plugin SDK are scheduled.
So one way to learn what is coming in the future to Xojo is to check the Feedback application for what's reported there. Within something like 40000 feedback cases, it's difficult to find something. But well, here are 20 scheduled cases. This means that each item has been assigned to an engineer and be scheduled to ship in one of the future releases of Xojo. Maybe interesting to know what Xojo engineers work on?
25108: Xojo application is not retina display aware.
37329: Add support for the new "Text" datatype in the plugin SDK
37330: Add support for the new Auto type in the plugin SDK
We recommend everyone to use Feedback. At least sign in and put your 5 favorite cases in the top case list.
So until we have HTTP 1.1, we use the MBS CURL Plugin. And until we have PDF built into Xojo, we use DynaPDF Plugin.
If you are interested in encrypted SQLite databases with SQLCipher, you can use their library with our plugins.
You simply get a copy of their library, either the commercial or the open source one. For open source, I built my own copies today for Mac and below you can download them. When you use my SQL plugin functions, you normally set option to point to libsqlite.dylib file. But instead to this file, you point to the libsqlcipher.dylib file. Now you run as first command "PRAGMA key = 'passphrase';" to pass in your password for the database. All following calls should run normal and the file is encrypted.
This is not the same encryption as used by Xojo. They use the SQLite Encryption Extension from Hwaci - Applied Software Research (see hwaci.com/sw/sqlite/)
The January/February 2015 (13.1) issue of xDev Magazine is now available.
Here's a quick preview of what's inside:
* Birmingham 2014 * by Richard Duke
Most of us couldn't make it to the U.K. for their annual Xojo Conference, but fortunately Richard was there to capture it all in words and photos.
* Data Access * by Kevin Cully and Scott Boss
What's the best way to access data within Xojo? Kevin and Scott walk you through the pros and cons of three different paradigms.
* Xojo Health Journal * by JC Cruz
Health logging is all the rage, so longtime xDev contributor JC Cruz documents creating a health journalling application.
* iOS First Look * by Marc Zeedar
We've been waiting for this day for a long time: Xojo can now create iOS applications! But what is the experience like? Marc covers an overview of iOS development using Xojo, explaining what you'll need, and how it works.
Plus: columns on creating our first iOS app, Xojo 2014r3, database modeling, RegEx literals, tips on listbox row coloring, and much more.
So a few weeks passed and we had time to check details on new data types. Years ago I appreciated books like Inside Turbo Pascal (or similar name) which explained all the details behind the runtime, compiler and data structures used there. Sometimes I'd wish someone knowing internals would document them in nice articles to give us interesting knowledge. Especially sometimes you can write better code or optimize for performance if you know how things work internally. Until that, here are my observations on the new data types:
The new text data type is interesting. The idea is to have a data type for a string of unicode characters is good and removes a couple of downsides on the old string data types. We have a lot of fallback code in MBS plugins to handle things right. For example the plugin will default to some text encoding if you pass in a string with no text encoding. On the other side we still need to put JPEG data into string to write them into a binarystream object. In the last months I moved a couple of methods to use Memoryblocks for a block of bytes instead of a string, but that causes a lot of unnecessary automatic conversion.
The new text data type is not a normal class, so you can't assign it simply to object variable. But it is reference counted like the old string class and any objects in Xojo, so memory storage is efficient. Especially as text is either stored in ASCII or Unicode internally depending of content. Most texts for us western people is just ASCII, but anything containing umlauts or the asian characters will be stored as UTF16. And it looks like UTF16 is converted to Normalization Form Canonical Composition. The ä (umlaut a) for example is stored as one unicode character and not as two like Mac OS X does it for file names.
The new auto data type is similar to variant. It wraps the data type, but does not do the auto conversion. So assigning an auto value with text inside to an integer will give a TypeMismatchException. This data type is also not a regular object internally (can't be assigned to object variable), but it is reference counted. At least passing an auto value around seems not to copy it.
But something is strange there. Auto seems only to be a number internally, maybe a key in a dictionary the runtime manages? Or a structure based data type? Well, we have to wait for Xojo Inc. to explain some of the internals, so we can make better use of the auto objects.
To know type of data in auto, you can use the new framework's introspection functions:
dim a as auto = 123
Dim info As Xojo.Introspection.TypeInfo = Xojo.Introspection.GetType(a)
which gives you text "Int32" here. Please note that older introspection functions like Introspection.GetType do not work on auto data type.
While you can't assign nil to a text, you can do so to auto. And auto can be compared with nil, which is also the default value. And is actual integer/pointer value of auto in that case is indeed zero (you see that if you debug a plugin function taking auto parameter). Vartype function seems to work on auto data type just fine, but that may be just due to the unpacking and repacking as variant.
When you stuff text in a variant, you get a new variant type with number 37 internally. At least vartype() returns this number now for a text variant. To get back the text from the variant, you can use TextValue function. Or use StringValue which converts to normal string. For array of text, well this will gives vartype 4096 + 37.
For auto data type, we can note that if you put an auto into a variant, it's unpacked first and the data type itself is wrapped for the variant. So putting auto with text into variant, gives you a variant of type text.
For the plugin we created a couple of feedback cases to allow text (37329) and auto (37330) data types. Until we have some API, we ignore them in general. For variants we treat them as strings and use StringValue property. Arrays of text can be passed to plugin inside a variant, but the plugin can only ignore them currently.