Issue 122582 - Module cui - Add new color
Summary: Module cui - Add new color
Status: UNCONFIRMED
Alias: None
Product: App Dev
Classification: Unclassified
Component: api (show other issues)
Version: 4.0.0-dev
Hardware: All All
: P3 Normal
Target Milestone: ---
Assignee: AOO issues mailing list
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-06-25 03:29 UTC by ivanpoot
Modified: 2017-05-20 11:27 UTC (History)
3 users (show)

See Also:
Issue Type: PATCH
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
new color (2.19 KB, text/plain)
2013-06-25 03:29 UTC, ivanpoot
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description ivanpoot 2013-06-25 03:29:19 UTC
Created attachment 80906 [details]
new color

Hi all,

This patch "registrodom.patch":

This code snippet allows Auto Registration the colors to Apache OpenOffice Drawing , ie the self-colored. Through this patch allows the user to add new colors in the color palette without entering a name.



If the color name already exists, it is automatically assigned a number to the name, eg

open
open4509
open0267
open8160
open1094 ...



This code I've been working in the module cui (file: tpcolor.cxx). I would like that the community to help implement this code in AOO.

The Auto Registration of colors: I think an excellent idea as draw integrated this functionality in AOO and allow the user to add new colors without many's restrictions, this process could be done more quickly and efficiently. No doubt it would be very useful in my humble opinion.

Best Regards.

registrodom.patch:

--- tpcparche.cxx	2013-04-08 19:41:41.000000000 -0500
+++ tpcolor.cxx	2013-05-07 14:03:05.890419322 -0500
@@ -24,6 +24,11 @@
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_cui.hxx"
 
+#include <rtl/ustrbuf.hxx>
+#include <cstdlib>
+using std::rand;
+using rtl::OUStringBuffer;
+
 // include ---------------------------------------------------------------
 #include <tools/shl.hxx>
 #include <tools/urlobj.hxx>
@@ -480,10 +485,10 @@
 	sal_Bool bDifferent = sal_True;
 
 	// Pruefen, ob Name schon vorhanden ist
-	for ( long i = 0; i < nCount && bDifferent; i++ )
+	/*for ( long i = 0; i < nCount && bDifferent; i++ )
         if ( aName == pColorTab->GetColor( i )->GetName() )
-			bDifferent = sal_False;
-
+			bDifferent = sal_False;*/
+			
 	// Wenn ja, wird wiederholt ein neuer Name angefordert
 	if ( !bDifferent )
 	{
@@ -516,16 +521,115 @@
 		}
 		delete( pDlg );
 	}
-
+       
 	// Wenn nicht vorhanden, wird Eintrag aufgenommen
 	if( bDifferent )
 	{
+     // string concatination
+
+    // give it an initial size
+    OUStringBuffer buf( 128 );
+    
+    //append aName to String
+    buf.append( aName );
+    
+   //checks if the name already exists
+   for ( long i = 0; i < nCount && bDifferent; i++ )
+        if ( aName == pColorTab->GetColor( i )->GetName() )
+			bDifferent = sal_False;
+   
+   if ( !bDifferent )
+	{
+		sal_Int32 nLen  = buf.getLength();
+		String ab = buf.charAt(nLen - 1);
+		
+		sal_Int32 xx = std::rand() % 5000 + 1000;
+
+		if (ab == '1' || ab == '2' || ab == '3' || ab == '4' || ab == '5' || ab == '6' || ab == '7' ||  ab == '8' || ab == '9' || ab == '0')
+		{
+			buf.setLength(nLen - 4);
+			buf.append( xx );
+		}else{
+			buf.append( xx );
+		}
+				
+	}
+	
+    // now transfer the buffer into the string.
+    String lstring = buf.makeStringAndClear();      
+
 		if (eCM != CM_RGB)
 			ConvertColorValues (aAktuellColor, CM_RGB);
-		pEntry = new XColorEntry( aAktuellColor, aName );
+		pEntry = new XColorEntry( aAktuellColor, lstring );
 
 		pColorTab->Insert( pColorTab->Count(), pEntry );
-
+		
 		aLbColor.Append( pEntry );
 		aValSetColorTable.InsertItem( aValSetColorTable.GetItemCount() + 1,
 				pEntry->GetColor(), pEntry->GetName() );
Comment 1 Armin Le Grand 2013-06-26 09:36:03 UTC
ALG: Thanks, will have a look ASAP, grepping..
Comment 2 Marcus 2017-05-20 11:27:58 UTC
Reset assigne to the default "issues@openoffice.apache.org".